SLIME - konsola do aplikacji produkcyjnej
Utrzymuję na serwerze mała aplikację dino-demo. Wchodzi ona w skład dino, trudno to nazwać frameworkiem, raczej jest zlepkiem różnych bibliotek. Ma to służyć mi do robienia aplikacji w Common Lispie :-). Może zrobię stronę i instrukcję instalacji.
Od czasu do czasu aplikacja się psuje. Ot taka spontaniczna korozja. Spontaniczna, bo wpływu użytkowników nie widać :-). Jak się okazuje, pozostawienie w miarę skomplikowanego sprzętu (sbcl + hunchentoot + swank) samego sobie może spowodować jego degradację. Hmmm.
Dziś popsuła się pula połączeń. Popsuła się w następujący sposób: popsute połączenie nie zostało usunięte z puli. Być może jest błąd w bibliotece Postmodern, być może błędne jest moje użycie. Nie wiem. W każdym bądź razie postanowiłem to naprawić i to nie przez restart lispa.
Do zabawy z Common Lispem używam Emacs’a z SLIME’em. SLIME ma taką miłą cechę, że gada do uruchomionego lispa przy pomocy TCP/IP :-). Zatem mając działającego swanka (lispowa część SLIME’a) na serwerze można się połączym Emacsem do aplikacji produkcyjnej. I to nie przez sendmaila jak to w filmie było, a przez tunel SSH:
ssh -L 4005:localhost4005 nasz.serwer.pl
Następnie w Emacsie łączymy się poprzez
M-x slime-connect
I naprawiamy szkodę:
; SLIME 2008-02-17 CL-USER> (postmodern:clear-connection-pool) ; Evaluation aborted. CL-USER> postmodern::*connection-pools* #<HASH-TABLE :TEST EQUAL :COUNT 1 {9444241}> CL-USER> (setf postmodern::*connection-pools* (make-hash-table :test 'equal)) #<HASH-TABLE :TEST EQUAL :COUNT 0 {C2B04F9}> CL-USER>
Dostępna jest introspekcja, debugger, modyfikacja danych jak i kodu. Słowem hacking online. Zróbcie to w Javie