Biliyorum, Boran bundan hoşlanmayacak. Sadece Common Lisp ve Internet programlamaya dair bir örnek olsun diye yazıyorum (ne yapayım, CLIM ile hazırlanmış last.fm istemcisi biraz “out-of-date” dolayısı ile “out-of-order” olmuş, son aylarda ilgili protokol değişince! Onunla uğraşmak daha zor geldi.)
Önce trivial-http’yi istediğimizi belirtelim:
CL-USER> (asdf:oos 'asdf:load-op :trivial-http)
; loading system definition from #P"/home/fz/.sbcl/systems/trivial-http.asd"
; into #<PACKAGE "ASDF4455">
; registering #<SYSTEM TRIVIAL-HTTP {911FEE9}> as TRIVIAL-HTTP
; loading system definition from #P"/home/fz/.sbcl/systems/trivial-sockets.asd"
; into #<PACKAGE "ASDF4457">
; registering #<SYSTEM TRIVIAL-SOCKETS {92BDC69}> as TRIVIAL-SOCKETS
NIL
Sonra da ilgili fonksiyonu yazalım Emacs ile egitime-sozde-destek.lisp dosyamızın içine:
(defun egitime-sozde-destek (url)
(let ((response-stream (caddr (thttp:http-get url))))
(do ((line (read-line response-stream nil)
(read-line response-stream nil)))
((null line) t)
(format t "~A~%" line))))
Ya da bazılarına daha anlaşılır gelen LOOP ile:
(defun egitime-sozde-destek (url)
(let ((response-stream (caddr (thttp:http-get url))))
(loop for line = (read-line response-stream nil)
do (format t "~A~%" line)
while (not (null line)))))
Tabii nedense CADDR bazılarının gözünü korkutuyor, (CAR (CDR (CDR … ))) olarak algılanmayabiliyor. Onun da kolayı var:
(defun egitime-sozde-destek (url)
(let ((response-stream (first (rest (rest (thttp:http-get url))))))
(loop for line = (read-line response-stream nil)
do (format t "~A~%" line)
while (not (null line)))))
İstediğimiz alternatifi Emacs içinden derledikten sonra Lisp komut satırından çalıştırabiliriz:
CL-USER> (egitime-sozde-destek "http://www.ntvmsnbc.com/modules/egitimedestek/")
Bu Common Lisp nasıl bir şey ki acep diyenler Software Development dergisinin 16. Annual Jolt Product Excellence & Productivity Awards değerlendirmesinde Teknik Kitaplar kategorisinde ödüle aday gösterilen Practical Common Lisp kitabına bakabilirler.
Benzer Yazılar / Similar Posts:
- Common Lisp, makrolar, Perl, vs.
- Summer of Lisp Code: Yazın Lisp ile para kazanmak; Emacs Versor; OpenMusic; IRC loglama; FireBug; The Aeolian Harp; How to Fish
- Nöroloji ve Psikiyatri Birleşir mi? Common Lisp ile binary-clock, Cognitive Science tez konusu…
- Bir üniversite hocasından: nasıl e-posta yazılır?
- Common Lisp ile 220 MB Dosya İşlemek
- Power of Soul: cl-sdl, OpenGL, Common Lisp, binary clock, 99 şişe bira
- Ancient Symbols, Computational Linguistics, and the Reviewing Practices of the General Science Journals
- SBCL cephesinde enteresan gelişmeler
- Turkish deasciifier in Python and state of the art in deasciification
- clbuild: Common Lisp Paket Yönetim Sistemi (bir nevi)
Leave a reply