command line XPath

http://blog.choas.net/2006/06/30/command_line_xpath

Copyright (C) 2003-2006 LarsGregori (Lizenz: Creative Commons)

30.06.2006 - Scheme

Ich habe bei PLT Scheme  (Semantik) mit PLaneT  (Semantik) experimentiert und auch mit SXML  (Semantik) .

Bisher hatte ich irgend ein Perl  (Semantik) -Skript, um auf der Kommandozeile XPath-Ausdrücke an eine XML-Datei zu schicken. Dieses war aber langsam und lieferte nicht immer das gewünschte Ergebnis.

Deshalb habe ich ein Scheme  (Semantik) -Skript ( xpath.scm  (Semantik) ) geschrieben, das nun diese Aufgabe erfüllt:

mzscheme -r xpath.scm Datei XPath

Das Skript öffnet die XML-Datei, erzeugt daraus intern sxml, führt den XPath aus und erzeugt aus dem Ergebnis XML, das dann an den current-output-port (z.B. stdout) geschickt wird.

... das Skript unterstützt (noch) keine Namespaces  (Semantik) .

 

Ändere nie ein Variable

http://blog.choas.net/2006/06/08/aendere_nie_ein_variable

Copyright (C) 2003-2006 LarsGregori (Lizenz: Creative Commons)

08.06.2006 - FunktionaleProgrammiersprache, Rekursion, Scheme

Bei del.icio.us/tag/scheme  (Semantik) habe ich einen Link zum Artikel Mastering recursive programming  (Semantik) gefunden, in dem Jonathan Bartlett  (Semantik) beschreibt, wie sich Rekursion in einer imperativen Programmiersprache nutzen lässt.

Während er am Anfang ein Paar Scheme  (Semantik) und C  (Semantik) Rekursionsbeispiele aufzeigt und zum Schluss die Speicheroptimierung durch tail-call  (Semantik) aufzeigt, geht er im Mittelteil darauf ein, wie man überprüfbare und richtige Programme - mit Hilfe der Rekursion - schreibt.

Bugs gehören zum täglichen Leben eines Programmierers und sie treten sogar in kleinen Schleifen oder Funktionen auf. Der Hauptgrund liegt in der Statusänderung von Variablen. Abhängig vom Status entstehen unterschiedliche Ergebnisse, so dass sich die ganze Komplexität gar nicht überblicken lässt.

Es gibt eine Lösung, mit einer einzigen Regel: Weise einer Variable einen Wert zu und ÄNDERE SIE NIE!

Imperative, prozedurale und die OO  (Semantik) Programmierung bauen aber gerade auf die Zuweisung und Änderung von Variablen auf. Jedoch ist gerade die Statusänderung eines der Gründe für Programmierfehler.

In drei Situationen werden Variablen verändert:

  • Wiederverwenden der Variable: Wenn die selbe Variable für andere oder ähnliche Zwecke nochmals verwenden wird, und diese dann geändert wird, könnte es zur Verwirrung führen. Durch die Benutzung einer zweiten Variable kann dieses Problem umgangen werden.
  • Abhängige Änderung der Variable: Die Variable ändert oder behält ihren Wert, bedingt durch einen anderen Wert. Auch hier sollte eine neue Variable verwendet werden.
  • Schleifenvariable: Sie können durch rekursive Funktionen umgangen werden.
  • Im Artikel wird eine Beispielfunktion in eine rekursive Funktion umgewandelt und es wird auch aufgezeigt, wie sich diese rekursive Funktion auf Korrektheit überprüfen lässt.

    Zum Schluss geht Jonathan Bartlett  (Semantik) noch auf tail-recursive Funktionen ein, die den Speicherbedarf des Stacks, unabhängig von der tiefe der Aufrufe, konstant halten. Hierzu hat er ein Assembler Beispiel, jedoch erwähnt er auch, dass GCC  (Semantik) in bestimmten Konstellationen eine tail-call  (Semantik) Optimierung anwendet.

    ... je komplexer die Programme werden, um so eher bietet die rekursive Programmierung dem Programmierer eine Möglichkeit den Code so zu organisieren, dass er wartbar und logisch konsistent ist.

     

    Scheme serverseitig

    http://blog.choas.net/2006/06/07/scheme_serverseitig

    Copyright (C) 2003-2006 LarsGregori (Lizenz: Creative Commons)

    07.06.2006 - Scheme, Sisc

    Kürzlich hat der Bluish Coder  (Semantik) über Icing: A Scheme continuation based web framework  (Semantik) geschrieben. Icing  (Semantik) ist ein 'web development system' basierend auf Scheme  (Semantik) und bestehend aus SISCWeb  (Semantik) , SSAX  (Semantik) und SXPath  (Semantik) . Icing  (Semantik) ist aber bisher noch nicht erschienen.

    SISCWeb  (Semantik) baut auf SISC  (Semantik) auf, und dies wiederum - wie hier schon berichtet - ist eine Scheme  (Semantik) Implemntierung basierend auf Java  (Semantik) . Somit lässt sich das SISCWeb  (Semantik) Framework in eine J2EE  (Semantik) Umgebung einbinden.

    Bereits in einem älteren Bluish Coder  (Semantik) Artikel ( Server side Javascript  (Semantik) ) wurde SISCWeb  (Semantik) erwähnt. Damals habe ich mir die Beispiele angeschaut:

  • .war-Datei runterladen ( SISCWeb Download  (Semantik) ),
  • in das webapps-Verzeichnis von Tomcat kopieren,
  • Tomcat (neu)starten,
  • fertig.
  • Über http://localhost:8080/siscweb-examples-0.33/ lassen sich die Beispiele betrachten. Zwei von ihnen finde ich interessant:

  • RPN Calculator: Ein Taschenrechner mit der Umgekehrte Polnische Notation  (Semantik) , der den Browser-Back-Button  (Semantik) und das 'Clonen' von Fenstern unterstützt, und dabei den Inhalt des Stacks entsprechend berücksichtigt.
  • Tic Tac Toe  (Semantik) : Für die Implementierung des Spiels, wurde Schelog  (Semantik) verwendet, eine Prolog  (Semantik) Implementierung in Scheme  (Semantik) .
  • ... Prolog  (Semantik) über Scheme  (Semantik) , über Java  (Semantik) , in einem J2EE  (Semantik) Applicationserver - Logik, Funktional und OO  (Semantik) zusammengewürfelt.

     

    wortblog.de CCed

    http://blog.choas.net/2006/06/02/wortblog_de_cced

    Copyright (C) 2003-2006 LarsGregori (Lizenz: Creative Commons)

    02.06.2006 - Blog, License

    Die Sätze, die bei Wortblog  (Semantik) entstehen, stehen nun unter der Creative Commons Lizenz  (Semantik) . Ich habe hierfür die CC by-nc-sa Lizenz  (Semantik) gewählt:

  • Die bedeutet, dass bei einer Verwendung eines Satzes (oder eines Teils) die Namen der Autoren und Autorinnen genannt werden müssen.
  • Der Inhalt nicht kommerziell genutzt werden darf. Wir wollen doch nicht im Kleingedruckten der Telekom zum Beispiel, dass hier lesen: "Wegen mir sind hier schon einige Tiere beleidigt und gevierteilt worden? Ja!" ( wortblog 20060519  (Semantik) )
  • Dies bedeutet aber nicht, dass der Text generell nicht genutzt werden darf, sondern das Ergebnis muss auch unter der CC by-nc-sa Lizenz  (Semantik) stehen.
  •