[Allegro] acon: include und relative Pfade
Anando Eger
a.eger at aneg-dv.de
So Mai 29 17:06:40 CEST 2011
Lieber Herr Berger, Herr Eversberg und alle, die mitlesen:
zum Thema 'include':
- Wie wäre es, wenn include die CSTRING- Pfadangaben berücksichtigen
würde?
Beispiel: include {D}flex.inc
oder: include D flex.inc // dann dürften aber keine Leerzeichen
// in Dateinamen zugelassen werden
- bei Wahl der Dateinamenserweiterungen fände ich es gut, wenn
auch bezüglich des Inhaltes unterschieden würde:
* Bibliotheken (enthalten nur Unterprogramme)
Beispiel:
...
perform Fn_XX
...
end
include fn_XX.???
* "Code-Schnipsel": Code wird an der include-Position eingefügt
und genau dort abgearbeitet.
Beispiel:
...
include drei_zeilen_flex.inc
...
- Momentan muss man, wenn includes unter LINUX unterhalb des acon-
Verzeichnisses funktionieren sollen, avanti ohne Pfadangabe
in seinem eigenen Verzeichnis starten. (-> Start- / Stop-Scripte)
Ließe es sich irgendwie einrichten, dass auch bei avanti-Start
mit Pfadangabe aus einen unbekannten Verzeichnis heraus
auf den Programmpfad (oder einen anderen) referenziert werden kann?
Eventuell über '& {P}' oder ähnlich im acon-Job?
(Alternative zum ersten Anstrich)
- Absolute Pfade in der &-Zeile der Jobdatei sind in Client-
Server-Umgebungen nicht verwendbar.
Viele Grüße
Anando Eger
On 28 May 2011 at 17:45, Thomas Berger wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Lieber Herr Eversberg,
>
> das include-Makro (eine Anweisung ist es strenggenommen ja nicht) von acon
> berechnet Pfade relativ zum aktuellen Arbeitsverzeichnis, insbesondere
> wird eine ohne Pfad angegebene include-Datei nur im aktuellen Verzeichnis
> gesucht.
>
> Dokumentiert ist in xinclude.rtf "Für avanti muß dateiname auf dem
> Arbeitsverzeichnis von acon oder darunter liegen.", zu konstatieren
> ist allerdings, dass relative Pfade mit "../" auch funktionieren:
> Sicherheit ade.
>
> Bei der Einfuehrung des Features schrieben Sie am 14.6.2010 (es dauert
> halt immer zu lang, bis das dann ernsthaft umzusetzen versucht wird):
> >>>
> OK, ist jetzt drin. Berücksichtigt werden kann nur der Startpfad von
> acon, denn beim Einlesen des Jobs, wenn eine include-Zeile kommt, weiß
> ja acon noch nicht, wo der Datenpfad ist!
> <<<
>
> Dass damit das Datenverzeichnis nicht als Ort fuer Include-Dateien
> infrage kommt, leuchtet ein. Das Avanti-Arbeitsverzeichnis in
> Web-Umgebungen ist ein eher unbekanntes Wesen, das haengt davon
> ab, wie der Systemdienst installiert wurde und dafuer gibt es
> keine Eroerterungen oder Dokumentation...
>
> Im Licht einer acon-Nutzung als Ersatz fuer SRCH und UPDATE ist das
> Arbeitsverzeichnis traditionell moeglichst kein Verzeichnis, in dem
> Programmdateien vorgehalten werden, sondern eher eines, wo Ergebnisse
> abgelegt werden. In dieser Situation speziell ist auch, dass der Job nicht
> ueber STDIN hereinkommt, sondern ueber -j als Datei auf der Kommandozeile
> angegeben ist.
>
> Es waere zwar ein ziemlicher Bruch mit der bisherigen Tradition von
> Programm-, Arbeits- und Datenverzeichnis, aber bei CSS, XSLT und HTTP
> habe ich gute Erfahrungen mit dem dort durchgaengigen Mechanismus
> gemacht, dass sich relative Pfade stets auf die Adresse der aktuellen
> (einbindenden) Datei beziehen: Ihr Ersteller weiss zwar nie im
> Voraus, wohin irgendjemand sie ablegen wird, es kann allerdings
> erwartet werden, dass zusammengehoerende Dateien in einem bestimmten,
> vom Ersteller vorgegebenen Layout (etwa: alle zusammen in ein
> Verzeichnis) abgelegt wurden. (In Java ist es m.E. auch aehnlich,
> da gibt es den "ClassPath").
>
> Wenn der einbindende Job ueber STDIN hereinkommt, waere sein Speicherort
> dann ganz zwanglos das aktuelle Arbeitsverzeichnis von acon...
> Man koennte allerdings auch noch einmal darueber nachdenken, was eigentlich
> mit dem "etc"-Verzeichnis der avanti-Installationen intendiert gewesen
> ist bzw. ob nicht das Verzeichnis, indem die genutzte avanti.con[f]
> liegt, einen konzeptionell guenstigeren Ausgangspunkt fuer relative Pfade
> darstellt.
>
> Ein zukuenftiges Problem wird dann die Einbindung von Standard-Includes
> sein, ein Job setzt ihre Existenz voraus, sie werden aber separat
> installiert / gehoeren zu anderen "Paketen": Hier erfolgt dann normalerweise
> absolute Adressierung (als URI), und im Fall von XSLT und anderen gibt
> es dann optional den XCatalog-Mechanismus, der diese URIs auf lokale
> Speicherorte zurueckbiegen kann. Fuer allegro waere dies alles eher
> uebertrieben, man koennte aber ueberlegen, ob absolute Pfade der Form
> include /paket/helper.inc
> sich nicht auf ein Zentrales Ausgangsverzeichnis (Programmverzeichnis?,
> Ort von avanti.con[f]?, ...) beziehen koennten. Ich fuerchte allerdings,
> dass Herr Fischer Wert darauf legt, echt absolute Adressierung zu
> bekommen, wie in
> include //server99/C$/avanti/test.inc
>
> Ich habe den Eindruck, Includes fuer acon-Jobs koennen ein sehr maechtiges
> Werkzeug werden und es gibt noch nicht besonders viele davon im produktiven
> Einsatz: Die Gelegenheit waere also guenstig, hier einen fuer die Zukunft
> tragfaehigen Mechanismus auszudenken.
>
> viele Gruesse
> Thomas Berger
>
> P.S.: Wie heissen die Dinger eigentlich: Fuer Flex-Dateien hat sich .inc
> als Extension etabliert, Aber Job-Includes sind ja nicht a priori kompatibel
> und sollten m.E. etwas abweichend benannt werden: .inj, .jnc, .jinc, .jbinc,
> .jobinc, .job.inc, .inc.job ?
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (Cygwin)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
>
> iJwEAQECAAYFAk3hGJ0ACgkQYhMlmJ6W47N6DwQAjH3dfJSKf/U3b1IZk0mC8y1k
> IWeRjwmRko6oK4jEu8EHJDufW+B3kFqoODWxL5UWVGlE3esHKmwf4InU7iEYT2uR
> VmcOSfFgkUOGzvFMfnVZ4KDmkZZEsV7Ik7naaEwsfHP+CT4XpbKeMi3VCJ8B6QLc
> WAzcHm3J2CYG+rqKWhs=
> =8+aD
> -----END PGP SIGNATURE-----
>
Mehr Informationen über die Mailingliste Allegro