UDP und Lisp
Ich habe bisher nichts in Lisp mit dem UDP Protokoll gemacht und wollte mal testen, ob das kompliziert sei. Es ist mit einem Lisp-Compiler wie OpenMCL sehr einfach, stellt sich nach zwei Minuten heraus, vor allem dank der UDP-spezifischen Socket-Funktionen "send-to" und "receive-from".
Wir brauchen eigentlich nur zwei Loops zu bauen. Der "Server" muss den Hostname und den Port des Clients natürlich wissen, damit er antworten kann. Die Werte zieht man hier mit "multiple-value-bind" aus der "receive-from"-Funktion heraus und füttert damit wieder "send-to".
Das folgende Beispiel ist natürlich nichts als trivial:
(defpackage udp-test (:use common-lisp ccl))
(in-package :udp-test)
(defconstant +buffer-size+ 1024)
(defun udp-server-daemon (port) (process-run-function (format nil "udp receiving on port ~a" port) #'udp-server port))
(defun udp-server (port) (with-open-socket (sock :type :datagram :local-port port) (loop (multiple-value-bind (answer len client-ip client-port) (receive-from sock +buffer-size+ :extract t) (let ((reply (concatenate 'string "Echo from server: " answer))) (send-to sock reply (length reply) :remote-host (ipaddr-to-hostname client-ip) :remote-port client-port))))))
(defun udp-client (remote-host remote-port) (with-open-socket (sock :type :datagram) (loop (let ((query (read-line))) (when (string-equal query "quit") (return 'done)) (send-to sock query (length query) :remote-host remote-host :remote-port remote-port) (format t "~A~%" (receive-from sock +buffer-size+ :extract t))))))
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
LW PE 4.4.6
Lispworks Personal Edition 4.4.6 mit einer grösseren heap size. Die Zeitlimite von 5 Stunden für eine Lisp Session bleibt.
Rainer Joswig zeigt hier, dass die heraufgesetzte heap size nun sogar die Kompilation von Projekten wie CL-HTTP erlaubt.
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
Lisp Jobs
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
OpenMCL 1.0
Der freie Lisp Compiler OpenMCL für OS X (und ppc Linux) kommt als 1.0 Release und mit einer beeindruckenden Liste neuer Features. (Darunter 64bit Unterstützung auf G5 Prozessoren und einer Demo Cocoa IDE).
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
zu testen
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
artlisp, lispart
"Algorithmic Movie Editing in Lisp"
Vor meinem inneren Auge (und Ohr) sehe ich schon lange ein (elektronisches) Konzert mit folgenden Rahmenbedingungen: Die Musik wird weder abgespielt, noch live erzeugt, aber sie wird live geschrieben, als Programmcode, den ich auf einer Leinwand mitverfolgen kann. Programmiersprache und Compiler frei.
Und: you start from scratch!
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
rate & debate
Das sieht doch gar nicht schlecht aus für Lisp. Was habt ihr denn erwartet? Fünf rote Pfeile?
[Quelle: tiobe.com]
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
OpenMCL Paper
Overview and History of OpenMCL
Das bringt einen auf die Idee, OpenMCL devel Archive nach Sharks Profiling zu durchforsten.
[via Rainer Joswigs Lisp News]
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
wxWindows für Lisp
Etwas Neues zum Ausprobieren: wxCL.
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
Panther Server Admin
Zunächst ein bisschen erstaunt, dass dieses Buch ungefähr gleichzeitig erschienen ist wie Tiger Server, habe ich es vor kurzem doch gekauft und möchte hier eine restlose Empfehlung abgeben. Es ist ein sehr gutes Buch, das uns sicher auch noch auf Tiger helfen wird (Eine Panther-Tiger Migration steht hier Ende des Sommers bevor).
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
Context Sensitive Linking
Viele Universitätsbibliotheken bieten mittlerweile Context Sensitive Linking-Dienste an, viele über einen SFX-Server. Was Kontext-Linking macht, hört sich zunächst ganz einfach an: es bietet zu einer gegebenen bibliographischen Information automatisch zusätzliche Information an. Interessant ist dies vor allem darum, weil sich damit Zugriff auf Ressourcen (Volltext, Online-Journale) ermöglichen lässt.
An den SFX-Server lassen sich automatisierte Anfragen schicken, dazu muss man nur die eigenen bibliographischen Daten im openURL Standard kodieren. De facto wird - soweit ich es sehe - der sehr eingeschränkte openURL Standard 0.1 verwendet, und nicht der sehr viel aufwendigere 1.0 Standard, der allgemeine ContextObjects ermöglicht. (eine Spezifikation lässt sich bei niso.org finden.)
OpenURL 0.1 lässt sich in Lisp mit ein paar CLOS-Klassen und einer URL-encode Funktion einfach implementieren, die BNF ist sehr kurz.
Gleichzeitig möchte ich dieses Angebot aber auch in mein Bibliographie-Programm einbauen, das ich in Cocoa (Objective C) schreibe, Endnote kann das schliesslich auch schon. More on that later.
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
Lisp Showtime
Lisp Entwickler in Aktion: Neuer Film ("hello-world.mov"). M. Baringer zeigt, wie er eine kleine Web-Applikation mit seinem Uncommon Web-Framework entwickelt.
Unbedingt ansehen! So sieht Lisp Code Editing aus.
Update: Ein 55-minütiger Film zum Editieren von Lisp-Code in Emacs (SLIME, Superior Lisp Interaction Mode for Emacs. Ein Geniestreich!
slime.mov
slime.torrent
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
Reddit there
Reddit, eine Art News-Aggregator zum Karma-Punkte sammeln.
Was mir daran gefällt: das "tbnl-session" im URL...
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
Format Music
Fomus könnte zu einem brauchbaren musikalischen Hilfsmittel werden:
«FOMUS (FOrmat MUSic) is a music notation tool for composers of computer music. The purpose of it is to facilitate the conversion of "raw" algorithmic output into readable music notation, a process that can be frustrating and time consuming since it often requires dumping data into some intermediary format (such as MIDI) and importing it into a notation program that only does a mediocre job of conversion»
Fomus stellt also Dateien her, die sich mit Sibelius, CMN oder Finale importieren und bearbeiten lassen. Fomus ist Alpha-Software. Geschrieben in Lisp.
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156
Ohne Worte
]
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/skins/_item_feedback.inc.php on line 156