Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Slackware   Yuri Kostylev   07 Feb 2004 00:38:11 
 Re: Slackware   Kirill Frolov   10 Feb 2004 01:28:41 
 Re: Slackware   Yuri Kostylev   10 Feb 2004 20:05:43 
Архивное /ru.linux/14639833f7b26.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional