Sunday, 30. April 2006
Montag, kurz vor Mitternacht, habe ich eine meiner Regeln verletzt und wäre auch fast bestraft worden. "Don't change a running system" vor einer Präsentation. Aber meine Neugierde überwog, und ich installierte kurzerhand die CSD8. Um sicher zu gehen, testete ich nochmals die Anwendung, über die ich am Dienstag reden wollte. Siegessicher starte ich sie, machte die nötigen Eingaben und ... nichts passierte. Das war nicht ok, irgendwas war falsch.
Kurzum: der Grund war ein SQL0818N "Ein Zeitmarkenkonflikt ist aufgetreten". Warum, weshalb? Dienstags um 0 Uhr hatte ich keine Ahnung. Offensichlich eine Verstimmung zwischen APL2 und DB2, denn der Zugriff auf die betroffene DB2-Tabelle funktionierte klaglos im DB2-Befehlszeilenprozessor.
Trotz allen Mutes, bin ich doch immer noch einigermaßen vorsichtig. Ich hatte als Netz und doppelten Boden die CSD7 noch auf der Platte. Das bin-Verzeichnis zurück kopiert, und alles war wieder gut.
Die Lösung des Rätsels gab's am kommenden morgen. Nancy, die Entwicklerin des AP127 ("eine 27-jährige entwickelte diesen AP") hatte dieses Problem schon am Freitag gesehen. Sie schlug gleich zwei Lösungen vor:
1. den AP127 neu binden
2. den AP127 der CSD7 in das aktuelle bin-Verzeichnis zurück kopieren.
"Neu binden" vollständig lesen
Saturday, 29. April 2006
Eigentlich hätte ich dies überschreiben müssen mit " Die kommende Version von DB2 kann Datenbanken auf Zeilenebene komprimieren". Das kling seriöser, da inhaltlicher, ist aber recht lang für einen Titel.
Dies hier hätte ich auch schon vor Monaten schreiben können. Da war das auch schon bekannt und halb offiziell: Die DB2 UDB erhält ein Kompressionsfeature wie es die Mainframe-Version der Datenbank schon länger hat. Dabei können Datenbanktabellen auf Zeilenebene komprimiert werden. Das kann zu den von zip und Consorten bekannten Einsparungen an Speicherplatz führen, aber auch zu Performanceverbesserungen, da weniger Plattenzugriffe notwendig sind.
"Row compression yields significant disk, I/O and memory savings, particularly for large tables with repetitive data patterns. " (IBM Pressemitteilung vom 24.04.2006) Das soll vor allem für Datawarehouses Einsparungen bis zu 70% bringen können.
Ich werde das mal bei meinen Datenbanken testen!
"Viper zippt" vollständig lesen
Friday, 21. April 2006
Nächstes Jahr jährt sich zum fünfundzwanzigsten mal meine erste Berührung mit APL, dieser fantastischen Sprache. Nachdem ich mich die Jahre vorher mit Cobol, Assembler, Fortran und ähnlichen unangenehmen Dingen auf Computern herumgeschlagen habe, war dieser Erstkontakt der Beginn einer wunderschönen Beziehung mit der Spezies Computer.
Naja, Scherz beiseite. In 25 Jahren sammelt sich so einiges an Arbeitsbereichen, Funktionen, Operatoren und Variablen. Da verliert man schon mal den Überblick.
Wie oft habe ich Workspaces nach einer Funktion durchsucht, von der ich wusste, dass sie existiert, aber ich nicht wusste, wo. Auch kam es vor, dass ich mir absolut sicher war, vor einiger Zeit einen Workspace erstellt zu haben, aber ich wusste nicht mehr, in welchem Verzeichnis ich ihn abgelegt hatte
Über die Jahre haben sich auf meinem Rechner viele Verzeichnisse mit APL-Arbeitsbereichen angesammelt - Ordnung muss sein - und noch mehr Arbeitsbereiche und noch viel mehr Funktionen und Operatoren.
Es kann schon sehr lästig sein und viel Zeit kosten, eine Funktionen in ihrer aktuellsten Version in mehreren Workspaces in verschiedenen Verzeichnissen suchen zu müssen: Workspace laden, Funktion suchen, öffnen, inspizieren, Fix-Zeitpunkt merken, nächsten Workspace laden, Funktion suchen, ...
"Alle meine Funktionen - ein Vorwort" vollständig lesen
Thursday, 20. April 2006
Gemäß den Datumsangaben in meinen Java-Klassen oder den APL2-Funktionen, die auf diese Klassen zugreifen, ist es nun zwei Jahre her ist, dass ich mich mit Java beschäftigt habe. Nicht, weil ich Java so toll finde, sondern um die Schnittstelle vom und zum APL2 zu nutzen. Das hat auch einiges Beständiges gebracht, Funktionen, die ich seitdem regelmäßig genutzt habe.
Java Klassen entwickelt habe ich seitdem nicht mehr. Damit ich es in zwei Jahren leichter habe, wenn ich mich evtl. wieder nach längerer Pause in Java einarbeiten muss, nutze ich diesen Blog als Merkzettel.
Die Installation und Anbindung ans APL2 hat ja reibungslos funktioniert.
Aber, was war das bloß, dass APL2Env_ nicht wie erwartet wollte? Das APL2 Hostwin meinte irgendwelche Klassen zu vermissen. Das kam alles bedeuten. Ich war sicher zu ungeduldig und habe wahrscheinlich was übersehen. Denn ...
Heute morgen habe ich eclipse installiert, einige Klassen von links nach rechts verschoben, "classpath" angepasst und - Überraschung! - APL2Env_ und Genossen zicken nicht mehr.
Hier noch drei weitere Merkposten:
"Das habe ich alles schon mal gewusst" vollständig lesen
Wednesday, 19. April 2006
Nachdem nun klar ist, dass APL2PIA kein "multi-threaded" APL2 ermöglicht, musste ich auch auf meinem neuen Rechner Java installieren, um meine Tools wie auf dem alten Rechner benutzen zu können.
Java installieren und einige Einstellungen vornehmen, testen und ok. Das war alles ganz einfach und ebenso "straight forward". Schließlich habe ich das gerade zum vierten oder fünften mal gemacht. Es lebe die Routine!
Und so geht's (s.a. APL2 User's Guide, S.168):
Java von java.sum.com downloaden. Da ich auch Java Klassen erstellen möchte, wähle ich das SDK, zur Zeit JDK 5.0 Update 6. Ansonsten reicht das Java Runtime Environemnt. Installieren ... und gut bis hier.
Möglicherweise ist Java, in welcher Variante auch immer, bereits installiert. In der Windows Eingabeaufforderung kann man dies mittels "java -version" herausfinden.
Damit ich unter APL2 auf die die Beispielklassen zugreifen und mittels Prozessor 14 ausführen kann, muss ich noch zwei Einstellungen vornehmen.
"Das ist Routine!" vollständig lesen
Tuesday, 18. April 2006
Am Montag, den 17. April 2006, schrieb ich unter " Warum nur, warum ...":
"... mag David den P12 nicht?"
Diese implizite Annahme entbehrt jeder Grundlage.
Weiter unten verstieg ich mich in der Frage:
"Warum also mag David den AP210 so sehr?"
Auch diese inhärente Behauptung entspicht nicht der Wahrheit.
Wahr ist, dass David den P12 hoch schätzt und ihn dem Hilfsprozessor 210 sogar vorzieht.
Die Redaktion entschuldigt sich an dieser Stelle in voraus eilendem Gehorsam für diesen rhetorischen Ausrutscher.
Die Schreckens-Headline präsentierte mir mein Feedreader gegen 11 Uhr: " Oracle hätte gern ein eigenes Linux" (CW, 18.04.2006)
Sicher: Nichts wird so heiß gegessen wie es gekocht wird. Denn Larry Ellison scheint nur laut nachzudenken.
Wenn Leute wie ich darüber - laut oder leise - nachdenken, schert das so recht niemanden, mit etwas Glück die nähere Umgebung. Aber wenn Larry nachdenkt, Linux Distributionen zu akquirieren, ist das was anderes. Die Aufmerksamkeit der CW ist berechtigt: der gute Mann hat locker das nötige Kleingeld, um der Open Source Welt ernsthaften Schaden zuzufügen.
Offene Standards hat Oracle noch nie ernsthaft unterstützt, im Gegenteil:
"Nicht nur, dass es extrem aufwändig in der Administration ist und Oracle sich mit SQL+ & Co. möglichst große Distanz zu (Industrie)standards behält" [...] schreibt Lino.
Da ist Oracle nicht anders als Mickeysoft.
Ich denke, Microsoft ist das richtige Stichwort. Larry gegen Bill: wer ist der Reichste im Land.
"Brave New Oracle World" vollständig lesen
Du bist nicht allein ...
Selbst nicht mit so abgedrehten Kombinationen wie Sudoku und APL. Ich wollte ja nie einen Vortrag über meinen computergestützten Sudokulöser (CASS, hiermit beanspruche ich das Copyright) halten. Vielleicht wird ja doch was daraus.
Normalerweise trage ich ja über ernsthafte Dinge des APL-Lebens auf meiner Lieblingsveranstaltung vor. So auch nächste Woche. Sicher, Sudoku wäre eine Alternative gewesen, aber zwei Vorträge vorbereiten war ich dieses mal nicht bereit. Auch hätte ich dann vier Slots belegt, das wäre maßlos übertrieben.
Als ich die Agenda von nächster Woche sah, war ich dann schon positiv überrascht:
11:45 - 12:30 Rätseln über Sudoku in APL2
Eine Analyse des japanischen Zahlenrätsels / Dr. Helmut Engelke
12:30 - 13:30 Mittagspause
13:30 - 14:15 Alle meine Funktionen / Axel Holzmüller Erste Frage: Wer ist Dr.Helmut Engelke? In dieser Arbeitsgruppe ist er nicht Mitglied. Aber wozu gibt es Google ... [PDF] ?NJ+Hmspl_j ?NJ+Hmspl_j ?NJ+Hmspl_j ?NJ+Hmspl_j
Dateiformat: PDF/Adobe Acrobat
Dr. Helmut Engelke. Musik liegt in der Luft. Analyse und Entwurf. musikalischer Stimmungen. mit APL2. 4. Mathias Kutzner. Geschlossene Gesellschaft ...
www.rhombos.de/shop/c/file/000189/APL12000.pdf Wie konnte mir das entgehen. Ein Artikel über zwei meiner Hobbies: APL und Musik (ich ziehe allerdings andere Arten von Musik vor). Ich werde diesen Artikel lesen müssen!
Zweite Frage: Was will der Autor konkret analysieren? Aber das ist ja Thema des Vortrages. Also kann ich hier nur spekulieren.
"Erwartungen" vollständig lesen
Monday, 17. April 2006
... mag David den P12 nicht? Warum zieht er den anspruchsvollen AP210 einem einfachen "File as Variable" vor?
Wenn ich schon vor einigen Jahren für den P12 die Sicht auf Dateien als Byte-Stream gewünscht habe und dies dann von Nancy auch so vorgesehen wurde, sollte ich dieses Feature zumindest promoten.
Mit dem P12 assoziiert man eine Datei mit einem Variablennamen. Danach kann man auf die Datei fast genauso zugreifen wie auf APL-Variable. Bei der Assoziierung muss man noch eine Struktur für die Variable definieren. Dies kann für flache Dateien eine Vektor von Zeichenvektoren oder Zeichenmatrizen sein.
Das waren die Formate, die für Flatfiles von Anfang an vorgesehen waren. Neu dazugekommen, und das auch nur für die Workstation-Plattformen, sind später Dateien als " Simple Character Vector" - Byte Streams:
"Each byte in the file is a single element in the character vector. Control characters, including line delimiters, are not handled in any special way. They are regular elements of the character vector." (APL2 User's Guide, S.165) Und so geht's:
"Warum nur, warum ..." vollständig lesen
Mit Service Level 8 wird es ohne Umwege über Java, C-Programmierung oder VB möglich sein, aus einem APL2-Interpreter heraus weiter Interpreter zu starten und zu nutzen. David nennt Letztere "Slave Interpreter".
Ich bin mir noch nicht vollkommen schlüssig, wozu das gut sein soll.
Eine Anwendung wäre "Namescope Isolation", Eingriffe in andere Workspaces ohne mögliche Namenskonflikte befürchten zu müssen. Dazu habe ich bisher Namespaces genutzt, und dazu wurden Namespaces auch erfunden.
Eine weitere Anwendung wäre "Multi-Threading". Dies scheint zumindest mit der vorgesehenen externen Funktion nicht ohne Weiteres zu funktionieren. Vielleicht ist dies irgendwann mal Anlass für ein Requirement.
Das Starten eines Slave Interpreters mit APL2PIA erzeugt keinen neuen Prozess und nicht mal einen eigenen Thread im aufrufenden APL2-Prozess. Es bleibt bei den beiden Threads, die APL2 für sich wofür auch immer anlegt. Nur etwas mehr Speicher für den Prozess des "Master Interpreters" wird allokiert, wenn dieser einen Slave Interpreter startet.
Auf jeden Fall ist (nicht nur) in diesem Zusammenhang die von mir vor Jahren gewünschte und inzwischen verfügbarer externe COPY-Funktion offensichtlich sehr nützlich.
Sunday, 16. April 2006
Ich dachte schon, ich könne Java loswerden, um das eine oder andere meiner APL2-Tools im Hintergrund laufen zu lassen.
Dieses kleine Helferlein gibt mir einen Überblick über die Umgebung meiner aktuellen APL2-Sitzung. Damit ich es von meiner Sitzung aus starten kann und es nicht sofort wieder beenden muss, um die Session für Eingaben wieder entsperrt zu bekommen, wird es über Java in einem eigenen Thread aufgerufen. Java wird also nur benötigt, um vom APL2 aus eine weitere APL2-Sitzung in einem eigenen Thread starten.
Nun wird es mit dem neuen Service Level eine externe Funktion geben, mit der aus einer APL2-Sitzung ein weiterer APL2-Interpreter gestartet werden kann. Dort können dann beliebige APL2-Anweisungen ausgeführt werden. Kling doch so, als könnte ich mit diesem neuen Feature den Umweg über Java loswerden.
"Schade ..." vollständig lesen
Friday, 14. April 2006
Gemeint ist hier die APL-Funktion transponieren, das Vertauschen von Achsen einer mehrdimensionalen Struktur.
Die meisten von uns kennen Transpose angewandt auf eine 2-dimensionale Matrix: ⍉9 9⍴⍳81. Hier werden Spalten mit Zeilen vertauscht.
Das ist schon alles, was man an Achsen einer Matrix vom Rang 2 vertauschen kann. Das ist bei fünfdimensionalen Objekten anders:
1 4 5 2 3⍉SL vertauscht die Bedeutung von Zeilen und Spalten,
1 2 4 3 4⍉SL vertauscht die Bedeutung von Zeilen und Blöcke und
1 4 2 5 3⍉SL vertauscht die Bedeutung von Spalten und Blöcke
eines Sudokus in der zugehörigen Lösungsmatrix.
Es gibt noch viele weitere Möglichkeiten für das linke Argument von ⍉, sie sind aber ohne Bedeutung für die Lösung von Sudokus mit fünfdimensionalen booleschen Matrizen.
... kommt gerade zum Tragen bei der Implementierung von Sodoku-Lösungsstrategien. Ein Sudoku sieht aus wie eine Matrix und lässt sich auch so darstellen. Um solche eine Sudoku-Matrix - ob zwei- oder fünfdimensional - als Einheit zu bearbeiten, braucht ich mit APL keine einzige Schleife. Das Objekt der Begierde wird einfach nur einer Reihe von APL-Operationen unterzogen, die auf jedes Element der Matrix wirken.
Das klingt sicher erstmal sehr abstrakt. Daher werde ich hier versuchen, dies an folgenden Beispiel zu illustrieren.
Ein gelöstes Sudoku enthält in jeder Zeile, in jeder Spalte und in jedem 3x3-Block jeweils alle Zahlen von 1 bis 9. So ist die Regel. Mit APL lässt es sich nun ganz einfach überprüfen, ob eine vorgegebene 9x9-Matrix SD ein gelöstes Sudoku darstellt:
^/(⍳9)^.∊SD,(⍉SD),9 9⍴3 1 4 2⍉3 3 3 3⍴SD
"The Power of APL" vollständig lesen
Wednesday, 12. April 2006
Es ist wie eine Sucht. Aber die Wahrheit muss nun mal raus.
Auch in Russland weiß man, welches die schnellste Datenbank ist. Folgendes Zitat stammt aus einer Konversation mit einem russischen Software-Entwickler (danke, Alexei):
"As for IBM DB2, we're familiar with it. It's probably the fastest database, very reliable."
Ja, DB2 ist nicht nur möglicherweise die schnellste Datenbank, sondern auch noch extrem zuverlässig. Das kann nicht jeder Anbieter von seinem Elaborat sagen.
"As I suppose, here in Russia Oracle is used more often for now, but for the time-critical tasks, for large companies (of course it can be used for companies of any size), DB2 is the best choice."
Der Mann sollte wissen, was er schreibt. Er und seine Leute arbeiten hauptsächlich mit Oracle.
"Of course I should tell about usage of static SQL and possibilities to optimize the database in the very flexible way. Plus Information Integrator, enhanced XML support in its latest edition, DB2 Viper."
Genau, ich denke gerade die beiden letzten Punkte bringen das DB2 Angebot eindeutig vor Oracle an die Tabellenspitze.
Tuesday, 11. April 2006
Eigentlich wollte ich jetzt über meine Sudoku-Hilfsfunktionen schreiben. Stattdessen stieß ich auf die heutige Computerwoche Topmeldung:
"Security-Panne bei Oracle?"
Es macht Spaß über Oracle zu meckern. Gute Menschen aus Redwood, CA sorgen stets für Bestätigung.
Man könnte nun meinen, die CW hat etwas gegen Oracle wie seinerzeit gegen IBM. Man könnte vielleicht sogar meinen, ich könne Oracle nicht leiden. Iwo! Oracle liefert ja freiwillig die Lachnummern:
"Wie Sicherheitsexperten berichten, hat das Unternehmen in seinem Support-System "Metalink" vergangene Woche Code-Beispiele veröffentlicht, mit denen man ein bislang ungepatchtes Sicherheitsloch in seiner Datenbank ausnutzen kann."
Nett, diese Offenheit. Wenn schon nicht Open Source Datenbank, dann wenigstens Oracle, die Offene Datenbank.
Danke, Oracle, für die amüsanten Unterbrechungen.
|