Monday, 29. May 2006
Ein weiteres kaum genutztes Systemkommando war und ist )QUOTA. Ich habe es auf dem Host das letzte mal vor einigen Jahren benutzt und mehrfach versucht, es unter Windows auszuführen. Zu blöd, denn Workstation APL2 kennt dieses Kommando nicht und wird es wahrscheinlich auch nicht kennen lernen.
)QUOTA gibt manchmal hilfreiche Größenangaben zum Workspace, zur APL2-Bibliothek und zum Shared Variable Interface. Diese Angaben machen aber teilweise nur in der Host-Umgebung Sinn. So müssten in Workstation-Umgebungen der Werte für die Größe der privaten APL2-Bibliothek und der dort noch verfügbare Speicherplatz uminterpretiert werden.
Auf der Workstation kann ich anders als auf dem Host die Workspace-Größe "dynamisch" vorgeben: starte bei einer minimalen Vorgabe, falls eine Anwendung mehr Platz benötigt, erhöhe sie um schrittweise um eine bestimmte Größe solange bis die Grenze des Erträglichen erreicht ist.
Leider ist es nur schwer herauszufinden, wie viel Platz APL2 in einer konkreten Situation für sich beansprucht. Aus der Sicht der Entwicklers von APL-Systemen scheint eine solche Information sinnlos oder gar schwer ermittelbar zu sein, aber ich habe sie schon häufiger vermisst.
Apropos "vermissen": Wo finde ich im Workstation-APL2 die )QUOTA-Angaben zur maximalen Anzahl gleichzeitig aktiver Shared Variables und zur Größe des "Shared Storage"?
"Quoten" vollständig lesen
Ich glaube, )CHECK WS gehört zu den kaum bekannten und daher wenig genutzten Systemkommandos. Ich gebe gerne zu, dass ich es selbst lange nicht mehr verwendet habe.
Warum auch? Denn )CHECK WS wird automatisch beim Laden und Speichern eines Workspaces ausgeführt. Ist was faul im WS, so gibt es Meldungen wie in " Schuld war nur die Platte" beschrieben. Wer wie ich häufig eine Workspace während der Entwicklung und des Testens speichert bekommt also )CHECK WS geschenkt.
Nun gibt es aber noch eine Variante von )CHECK WS, die ich total vergessen hatte: )CHECK WS [ON|OFF] Man muss schon recht verzweifelt sein, um diesen Schalter umzulegen. Denn danach wird nach jeder Ausführung einer APL2-Grundfunktion ("primitive function") der Workspace ausgiebig geprüft. Bei größeren Anwendungen kann man ruhig ein Tasse Kaffee trinken gehen.
Die hiernach angesagte Tuning-Maßnahme wäre dann )CHECK WS OFF. Ich habe selten mit so wenig Aufwand eine Anwendung um das Vielfache beschleunigt. Mit )LOAD und )CLEAR erzielt man übrigens in diesem Falle das gleiche Ergebnis: Diese Kommandos setzen einen gesetzten )CHECK WS Schalter wieder zurück.
Dies alle und noch viel mehr kann im APL Language Reference (S.418) nachgelesen werden.
"Apropos Checkws" vollständig lesen
Wer kennt ihn nicht, den SYSTEM ERROR/CLEAR WS. APL2 ist auch unter Windows inzwischen ein sehr stabiles System, aber manchmal zerreißt es auch das beste System. Ich denke, häufig ist es Windoof, das den Speicher zerbröselt, so dass die Pointer-Verwaltung im APL2 nicht mehr stimmt.
Aber es muss nicht immer der übliche Verdächtige sein.
Ich habe vor einigen Wochen einen CONTINUE geschickt bekommen, der nach dem Laden folgende Meldung ausgab: Checkws: mentry does not point back, ri = 0x350d0 Auf dem Rechner des Entwicklers gab es kurz vor dem SYSTEM ERROR/CLEAR WS eine schier unendlich lange Liste (immerhin ca. 1000 Zeilen) mit solchen Ausgaben und darauf folgend noch Meldungen wie Checkws: points to mentry with different ri, ri = 0xdbda Zu guter Letzt beklagt sich Checkws noch über ein "negative-length object".
Das erste, was ich in einem solchen Fall mache, ist ein WS-Reorg: )CLEAR, )COPY und )SAVE. Das räumt auf und reduziert den belegten Speicher. Dies wollte aber hier nicht die erwartete Heilung bringen. In nerviger Regelmäßigkeit stürzte das APL2 per SYSTEM ERROR ab.
Der Hinweis zur Lösung war dann letztendlich, dass obige Probleme auf anderen Rechnern nicht auftraten. Schuld war wohl die Festplatte. Denn nachdem diese "repariert" wurde, tritt der SYSTEM ERROR nicht mehr auf.
Tuesday, 9. May 2006
In " Was gibt's Neues in CSD8" habe ich folgende Erweiterung vergessen: - Windows XP themes will be recognized and used in all APL2 GUI windows. Tatsächlich habe ich das nicht übersehen oder gar vergessen, nein, viel schlimmer, ich habe die Weitergabe dieser Info unterdrückt. Denn bis heute wusste ich nicht, was das konkret bedeutet und wie ich eine Änderung erfahrbar machen kann.
Jetzt habe ich den Unterschied sichtbar machen können:
Alles klar?
Windows XP Themes können in den "Eigenschaften von Anzeige" (Microsoft deutsch) aktiviert, geändert und gespeichert werden.
Mit dieser Erweiterung sehen APL2 GUI "besser" aus. Das liegt sicher daran, dass sie sich besser in das "look" meiner anderen Desktop-Anwendungen einfügen.
Eine absolut sinnvolle Erweiterung und Schande über mein Haupt, dass ich sie vorher nicht auch nur eines Wortes gewürdigt habe.
Monday, 8. May 2006
Vista? Wer oder was ist Vista?
Das könnte mir ja eigentlich egal sein. Wenn die nächste Version von Windows gemeint sein sollte, wird es ja wohl noch etwas dauern, bis MS damit meint fertig zu sein. Dann beginnt erst der weltweite kostenpflichtige Testphase durch die Early Adaptors. Armes Völkchen!
Selbst das danach erscheinende SP1 wird mich dazu verleiten nach Vista upzugraden. Warum auch? Ich habe mich noch nie von SPs überzeugen lassen.
Aber man sollte stets mit der ordnungsgemäßen Planung deutscher Unternehmen rechnen. Es gibt doch tatsächlich Unternehmen, die Vista nach Verfügbarkeit ausrollen wollen, und das muss geplant sein. Das wirft dann folgende Frage auf:
Welche APL+Win Version läuft unter Vista.
Eine Frage an den Hersteller, hier zusammengefasst und ohne Gewähr die Antwort:
- die aktuelle Version 6.0 wird sicher unter Vista laufen
- Version 5.2 wurde schon frühzeitig unter Longhorn getestet
- bei Version 5.0 könnte man noch optimistisch sein
Alle Versionen vor 5.0 liegen mehr als 3 Jahre zurück, also teilweise noch vor XP. So gab es z.B. Probleme ⎕wi in APL+Win 3.0 unter 2000 und XP.
Ordnungsgemäß planende deutsche Unternehmen sollten also sehr alte APL+Win Versionen upgraden.
Saturday, 6. May 2006
Das waren die guten Nachrichten über "IN". Kann ich also meine korrigierte Variante von "IN" durch die offizielle Version ersetzen? Das wäre erstrebenswert, geht aber nicht. Denn ich habe noch zwei weitere Dinge "verbessert" - verbessert im Sinne der Verwendung von "IN" in meinem APL-Workspace Crawler.
Das INen von großen geschachtelten Variablen kann sehr lange dauern und während dieser Zeit die kompletten CPU-Ressourcen in Anspruch nehmen. Dies kann nicht direkt IN oder )IN angelastet werden, denn der eigentliche Übeltäter ist ⎕TF.
Hierzu ein Beispiel: Auf meinem neuen 2 GHz Rechner dauert das Inen einer 10553x24-Matrix der Tiefe 2 ca. 20 Minuten. Die Größe der Variable ist, gemessen mit "4 ⎕AT", 9.117.824 bzw. 1.744.766. Die Größe der ATF-Datei, die ausschließlich die Variablen enthält ist, ca. 2MB.
Für den meinen Crawler, der sowieso nur nach Funktionen und Operatoren sucht, war das pure Zeit- und Ressourcenverschwendung. Ich habe mir daher die Definition von IN vorgenommen und entsprechend geändert: Hast du gerade eine Variable zur Bearbeitung vor dir, dann gehe zum nächsten Objekt. Einfach und effizient!
Wäre das nicht auch ein Feature für die offizielle Version von "IN". Auch dem APL2 Library Manager würde es gut zu Gesicht stehen: Der Anwender wird vor dem Einlesen komplexer APL2-Variablen aus ATF-Dateien erst mal gefragt, ob er sie wirklich sehen will - oder ähnlich.
"Was nicht ist, kann ja noch werden" vollständig lesen
Thursday, 4. May 2006
Es gibt schon nette Zufälle. Da habe ich mich in einem Vortrag darüber beklagt, dass die externe Funktion "IN" ('FILE' 11 ⎕NA) nicht kompatibel zum Kommando )IN ist. Und keine Stunde später sind zumindest zwei meiner Vorschläge bereits umgesetzt.
Naja, nicht mal ein APL-Entwicklungsteam arbeitet so schnell, obwohl die sonst schon sehr schnell reagieren.
Die wahre Geschichte ist folgende: Ich war eben nicht der Einzige, der Stress mit "IN" hatte. David bekam die gleichen Probleme, als er "IN" für seinen Library Manager einsetzte. Als Entwickler war es für ihn ein leichtes, eine verbesserte Version von "IN" zu erstellen oder anzufordern. Ich habe nur meine eigene, inoffizielle korrigierte Variante.
Diese Änderungen blieben aber undokumentiert. In der Liste der "Enhancements Added" zur CSD8 fehlen entsprechende Einträge, der User's Guide ist hier - "Supplied Workspaces/FILE Workspace/Transfer Group" - ohne Änderung.
Und das ist neu: IN '99 ATFNAME'
IN '''e:\temp temp\name.atf'''
Bis zur CSD8 haben die Leerstellen "IN" zur vorzeitigen Aufgabe gezwungen - zur erkennen am Ergebnis 0.
"Undocumented Features" vollständig lesen
Tuesday, 2. May 2006
Alles Jahre wieder gibt es eine Neue Version von APL+Win. Vor zwei Jahren war es Version 5.0, letztes Jahr 5.2 und nun 6.0. Nicht so richtig konsequent, was die Zählweise betrifft. Aber egal.
Das Highlight der 6.0 ist offensichtlich das neue, kolossale Dateisystem. Von der Struktur her arbeitet das "Colossal Filesystem" genauso wie das allseits bekannte und beliebte Komponenten-Dateisystem, nur viel schneller. Ich habe im Januar Messungen gesehen, die in Extrem-Situationen eine 1000fache Verbesserung brachten.
So oder auch weniger, sicher ist, es ist auf jeden Fall tierisch schnell.
Mit den CFS fällt auch die 2GB-Grenze für die Größe der Datei. Das war auch inzwischen nötig. Wer also viel mit Komponenten-Dateisystemen arbeitet, wird mit neuen System viel Freude haben.
Interessant ist auch die TRY-CATCH-Kontrollstruktur. Java-Entwicklern wohl bekannt, kann sie zur besseren Strukturierung von APL-Code führen. Auf jeden Fall macht sie das Error-Handling explizierter als es mit ⎕elx möglich ist.
"APL+Win 6.0 ist da" vollständig lesen
Monday, 1. May 2006
... in CSD8? Kurz geantwortet:
Den APL2 Library Manager:
Ein Werkzeug zum durchforsten von APL2 Workspaces in allen drei Dateiformaten: .APL, .ATF und .ANS. Der APL2LM erspart es mir z.B. das Laden eines Arbeitsbereiches, um dort etwas zu suchen oder anzusehen. Es sieht aus, als ob der APL2LM ein sehr nützliches Werkzeug werden könnte!
Über eine weitere Neuerung habe ich bereits geschrieben: "Calls to APL2", das Arbeiten mit Slave-Interpretern direkt aus einer APL2 Sitzung heraus. Dazu wurden gleich zwei Dinge zum APL2 System hinzugefügt, die externe Funktion APL2PIA und der Hilfsprozessor 200. Der APL2 Library Manager macht reichlich Gebrauch von APL2PIA.
Es gibt noch viele "kleinere" Erweiterungen:
"Was gibt's Neues" vollständig lesen
|