|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Yuri Kostylev 2:5050/61.1 07 Feb 2004 00:38:11 To : Eugene B. Berdnikov Subject : Re: Slackware -------------------------------------------------------------------------------- .RFC-X-Complaints-To: news@my.at.home.net .RFC-NNTP-Posting-Date: 6 Feb 2004 19:38:11 GMT .RFC-Cancel-Lock: sha1:kkdsJFjMskfujZ7P+sPlRB5jcu8= From: Yuri Kostylev <Yuri.Kostylev@p1.f61.n5050.z2.fidonet.org> >>> В непонимании того, что инструмент на самом деле - HЕподходящий. RB> Пример более-менее серьёзной задачи (не связанной с системным RB> администрированием - просто не особо представляю эту область), в RB> которой какой-нибудь bash/perl/что там ещё подходит более, RB> скажем, лиспа - в студию. EBB> Взять от юзера web-формочку, где отмечены крыжики, что надо EBB> показать, выбрать из базы (оракл, мискль, постгресс - что там EBB> стоит у заказчика), нужные данные, и вывести в виде EBB> html-таблицы. Куда проще. С perl'ом за рабочий день рисуется и EBB> отлаживается. Сколько недель мучаться на lisp'е? -- Eugene Час от силы. Типа такого (это пример, но вполне реальный) ;;; particular web site defines ;;; Also u can place your functions in the initlib table (defun print-sdata-list (l) "called with (parse-s-str (get-session-data sid))" (let ((res "")) (dolist (x l) (setf res (constr res (car x) " is " (hescape (cadr x)) " ;; "))) res)) (defun alert-page () (page "Alert" (text "bad user or session expired") (link "/lasp?id=site1" "BACK"))) (defun is-user (sid suser counter) (if counter (let ((cnt (format nil "~D" (1+ (parse-integer counter))))) (if suser (progn (put-session-data sid (constr "username=" suser "; count=" cnt)) t) nil)) nil)) (defun getlogin(args) (let* ((vlist (make-vlist args)) (sid (getvar vlist "sid")) (username (getvar vlist "user")) (pass (getvar vlist "pass")) (q (constr "select username, pass from users where username='" username "'")) (res (clsql::query q))) (if (and res (string= pass (strim (second (car res))))) (progn (put-session-data sid (constr "username=" username "; count=0")) (redirect "/lasp?id=site1&func=main-page")) (redirect "/lasp?id=site1&func=bad-login")))) (defun login-page (arglist) (let* ((vlist (make-vlist arglist)) (sid (getvar vlist "sid"))) (page "login" (form "POST" "/lasp?id=site1&func=getlogin" (text "Name:") (textfield "user") (text "Password:") (password "pass") (text "") (submit "ok" "ok") )))) (defun otable (arglist) (let* ((vlist (make-vlist arglist)) (sid (getvar vlist "sid")) (sdata (get-session-data sid)) (sdatalist (parse-s-str sdata)) (suser (getvar sdatalist "username")) (counter (getvar sdatalist "count"))) (if (is-user sid suser counter) (page "objects" (dbtable "objects" :style "border:1px solid blue" :td-style "border:1px solid red") (link "/lasp?id=site1&func=main-page" "Main")) (alert-page)))) (defun new-news (arglist) (let* ((vlist (make-vlist arglist)) (sid (getvar vlist "sid")) (sdata (get-session-data sid)) (sdatalist (parse-s-str sdata)) (suser (getvar sdatalist "username")) (counter (getvar sdatalist "count")) (addnews (getvar vlist "addnews")) (ta (getvar vlist "ta"))) (if (is-user sid suser counter) (progn (when addnews (add-news "news01" (clsql::sql-escape-quotes ta))) (page "news" (news-block "news01") (pblock "Add new:") (form "POST" "/lasp?id=site1&func=new-news" (textarea "ta" :size '(50 10)) (br) (submit "addnews" "addnews")) (br) (link "/lasp?id=site1&func=main-page" "Main"))) (alert-page)))) (defun site1-users (arglist) (let* ((vlist (make-vlist arglist)) (sid (getvar vlist "sid")) (sdata (get-session-data sid)) (sdatalist (parse-s-str sdata)) (suser (getvar sdatalist "username")) (counter (getvar sdatalist "count"))) (if (is-user sid suser counter) (progn (page "users" (dbtable "users" :td-style "border: 1px solid brown") (br) (link "/lasp?id=site1&func=main-page" "Main"))) (alert-page)))) (defun main-page (arglist) (let* ((vlist (make-vlist arglist)) (sid (getvar vlist "sid")) (username (getvar vlist "user")) (pass (getvar vlist "pass")) (sdata (get-session-data sid)) (sdatalist (parse-s-str sdata)) (suser (getvar sdatalist "username")) (counter (getvar sdatalist "count"))) (if (is-user sid suser counter) (page "main" (par "Main page") (link "/lasp?id=site1&func=otable" "View objects") (br) (link "/lasp?id=site1&func=new-news" "News")(br) (link "/lasp?id=site1&func=site1-users" "Users") "<hr />" (link "/lasp?id=site1&func=logout" "LOGOUT")) (alert-page)))) (defun bad-login (arglist) (page "bad" (text "incorrect login") (link "/lasp?id=site1" "BACK") (br) (link "/lasp" "Docs"))) (defun logout(args) (let* ((vlist (make-vlist args)) (sid (getvar vlist "sid"))) (remove-session-data sid) (page "logout" (text "You logged out") (link "/lasp?id=site1" "MAIN")))) (defun site1 (arglist) (let* ((vlist (make-vlist arglist)) (func (getvar vlist "func"))) (if func (call-func func arglist) (login-page arglist)))) -- Rydw i'n mynd i aros yma. --- Gnus/5.1006 (Gnus v5.10.6) Emacs/21.2 (gnu/linux) * Origin: Izhevsk (2:5050/61.1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/14639833f7b26.html, оценка из 5, голосов 10
|