HTML

Lambda

A modern programozási nyelvek világában töltött évek után irány vissza az alapokhoz. Az egyik legrégebbi nyelvvel, a Lisppel ismerkedem, és próbálom felhasználni mai, modern alkalmazások készítésére, mindenki okulására.
Rólam
Kinek szól?

Friss topikok

  • kotee: UCW-t már nem nagyon fejlesztik aktívan (amennyire én tudom).. Helyette viszont van cl-dwim és WUI... (2009.09.10. 14:00) Környezet kiépítése 2

Linkblog

Archívum

Vissza az alapokhoz?

2009.05.15. 00:04 vonbraun

Környezet kiépítése 2

Címkék: tutorial telepítés lisp futtatókörnyezet uncommonweb

Múltkor ott hajítottuk el a fonalat, hogy van egy feltelepített, de ki nem próbált Lisp-ünk az SBCL képében. Itt az ideje, hogy ki is próbáljuk. Egyik egyszerű módja a clbuild-del történik (ha már fent van): ./clbuild lisp. Némi szöveg után egy barátságos csillagot kell kapnunk (ez a REPL, amiről majd máskor szólok), ahova már Lisp utasításokat lehet írni. Most egyelőre nyugodjunk meg annyiban, hogy elindult, és közöljük vele, hogy (quit) -- a zárójelekkel együtt, mire illemtudóan kilép.

Három alapozó feladatunk van még hátra a kiváló webes alkalmazás létrehozásához:

  1. webes környezet összerakása
  2. fejlesztőkörnyezet és tartozékai
  3. megtanulni a nyelvet :)

Ma a webes környezetet rakjuk össze.

Lisp-ünkhöz nem létezik a klasszikus értelemben vett webes keretrendszer, mint például a Ruby on Rails vagy a CakePHP. Ez nem azt jelenti, hogy a választott környezetünk gagyi, hanem jobbára azt, hogy nincs rá ilyen formában szükség.

Ahogy körülnéztem, két gyakrabban használt keretrendszert találtam, az UnCommon Web (UCW) és a Weblocks nevezetűt. Mindkettő elég elriasztó elsőre, és mindegyiknél a kulcsszó a "continuation", amitől majd egy későbbi írásban fogok szót ejteni (már írnom kell külön, hogy miket halasztok későbbre, szóval ne aggódj, tényleg fogok róla írni). Az elérhető források alapján úgy döntöttem, hogy elsőnek az UCW-vel fogok megismerkedni, mert ez tűnt kiforrottabbnak és szélesebb körben használtnak. Van benne egy alap webszerver is, ami jól is fog jönni. Van ezen kívül más út is, amit majd máskor részletezek :)

Szóval kedvenc szerverünkön tartózkodva adjuk ki ezt a parancsot: ./clbuild install ucw. Ez letölti és helyére rakja az UCW-t és a függőségeit is, és már csak ezért hálát adhatunk, hogy a clbuild-et kitalálta valaki. Persze a világ nem tökéletes, és nálam hiányolta még a closer-mop csomagot, ezért ha ezt nem láttad a felrakottak között, célszerű telepíteni a ./clbuild install closer-mop paranccsal (közben persze lehet hogy javították a clbuild-et). Hasonlóképpen vegyük magunkhoz a puri és az rfc2388-binary csomagokat: ./clbuild install puri, ./clbuild install rfc2388-binary. Ezeket majd a futtatandó példaprogram igényli.

Indítsuk el a Lisp-ünket a ./clbuild lisp paranccsal, majd közöljük vele, hogy (require 'ucw) (figyelj az aposztrófra az ucw előtt!). Ezen remélhetőleg nem sértődik meg és jó hosszan írogat amint fordítja az egyes programokat. Ha visszakapod a csillagot, akkor rendben ment minden. Ha nem, akkor kérdezni fog valamit, ami általában valamilyen csomag hiányára utal. Próbáld meg kideríteni a szövegből, hogy mi lehet az a csomag (esetleg másold be az egészet ide kommentbe), kérd meg a clbuild-et, hogy telepítse és próbáld újra.

Ha az első megpróbáltatáson túl vagyunk, töltsük be a példaprogramot. Erre való a (load "/eleresi/utvonal/fajl.lisp") parancs. A (load "/home/bkovacs/clbuild/source/ucw/manual/example-code.lisp") nálam betölti a példaprogramot. Persze a fájl elérési útvonalát cseréld le a nálad létezőre. FRISSÍTÉS: egy openvz alapú minimál-szerveren furcsa fordítási hibákkal elszállt a betöltés. Kinyomoztam, hogy egyrészt kell neki GCC, másrészt pedig a libc6-dev (vagy ezzel megegyező, libc6 fejlesztéshez szükséges) csomagot kell feltenni. Az ilyen munkához ajánlom a Linux screen programját (igény szerint erről is írok). Ha itt is visszakaptad a csillagot, akkor a neheze megvan. Ezután el kell indítani a példa szervert a (ucw-user:start-example-server) paranccsal. Ez először kérdez, mert a start-example-server nincs exportálva a ucw-user csomagból, erre 0-t nyomva (continue) továbbmegy és elindul a szerver. A logja a Lisp ablakában látszik, minden művelet itt fog zajlani. Nézd is meg, hogy melyik porton indult el a webszerver. Az alábbi sor végén látszik, hogy nálam a 8000-es portot használja.

00:40          UCW INFO    Started standard-server #<STANDARD-SERVER IT.BESE.UCW.CORE:HTTPD-BACKEND 1 {C410B89}> with backend #<HTTPD-BACKEND :host 0.0.0.0 :port 8000 {C42B019}>A teszteléshez írd be a böngésződbe a http://localhost:8000 (illetve a 8000 helyett azt a portot, amelyen nálad elindult) címet és szokatlan hibaüzenetet kell kapnod.

The page you requested was not found
"/" was not found on this server

Lehet próbálgatni a minta-lapokat:

  • http://localhost:8000/example/hello.ucw
  • http://localhost:8000/example/hello2.ucw
  • http://localhost:8000/example/hello-action.ucw
  • http://localhost:8000/example/hello-session.ucw
  • http://localhost:8000/example/hello-callback.ucw
  • http://localhost:8000/example/hello-components.ucw
  • http://localhost:8000/example/hello-yaclml.ucw
  • http://localhost:8000/example/hello-control-flow.ucw

Férfiasan bevallom, ezek a példák így bedobva még távol állnak az értelmestől. Igazából azt hivatottak demonstrálni, hogy az UCW mindenféle feladatra használható, a hagyományos "megyünk oldalról oldalra" típusú weblaptól a komoly workflow-t (itt jön majd a "continuations") megvalósító lapokig.

A következőkben a hiányzó elemeket rakjuk majd hozzá a rendszerünkhöz, mielőtt belemennénk a nyelv és az UCW rejtelmeibe. Addig is, ha kérdésed van, szólj hozzá alul!

1 komment

A bejegyzés trackback címe:

https://lambda.blog.hu/api/trackback/id/tr661122489

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

kotee · http://kendernezo.blog.hu/ 2009.09.10. 14:00:25

UCW-t már nem nagyon fejlesztik aktívan (amennyire én tudom).. Helyette viszont van cl-dwim és WUI, ráadásul magyar fejlesztőkkel : )

common-lisp.net/project/cl-dwim/

Akit érdekel bővebben:
www.meetup.com/parentheses/
süti beállítások módosítása