Re: A Succinctness Challenge
From: Marc Battyani (Marc.Battyani_at_fractalconcept.com)
Date: 05/31/04
- Next message: David Steuber: "Re: A Succinctness Challenge"
- Previous message: David Steuber: "Re: Socket Programming"
- In reply to: Alexander Burger: "Re: A Succinctness Challenge"
- Next in thread: Alexander Burger: "Re: A Succinctness Challenge"
- Reply: Alexander Burger: "Re: A Succinctness Challenge"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Mon, 31 May 2004 16:53:47 +0200
"Alexander Burger" <abu@software-lab.de> wrote
> Marc Battyani <Marc.Battyani@fractalconcept.com> wrote:
> > Here is what I do in my framework:
> > > - immediate responses to function keys acting on the database
> > > - pop-up dialogs and menus which handle database contents
> > > - unlimited table scrolling through the database
> > > - enable/disable GUI components depending on the current state of the
>
> Interesting. I still don't see how you do it in a portable way without
> Java, because no other technology gives you a permanent connection to
> the server in a portable way. Sorry, I could not find that information
> in your paper :-(
I could tell you, but after that I would have to ask Tim B. to send you his
black helicopters. ;-)
More serioulsy, I just use an hidden frame for behind the scene
communication.
Look at the table of content on the left of
http://msdn.microsoft.com/library/ to see what I mean (and you can look at
the javascript)
> I was trying many times to get away from Java (that's also the reason
> for the experiments in "lib/htm.l" I mentioned before), not because of
> security reasons, but because of poor Java support across many
> platforms.
Yes, one of my first framework version used a Java applet too, but nobody
accepted this.
> > And also :
> > Simultaneous update of all the views for all the users when a value
changes.
> > On the fly pdf generation with cl-pdf and cl-typesetting,
>
> Besides pdf, we also generate plain PS and LaTeX in some cases.
>
> > It works trough firewalls and proxies.
>
> Firewalls and proxies are not so much a problem, because it only
> concerns connections in one direction (from client to server, as the
> applet connects backwards). And Pico Lisp also supports a tunneling
> protocol.
OK.
> > > For a more complete application than the simple person database take a
> > > loot at "http://bws.software-lab.biz", which is a scaled-down version
> > > of a real application. It may not be fully functional because we were
> > > too lazy to generate all necessary test data, but you'll get an idea.
> > > Login with "test" and "test" and play around a little.
>
> > OK I've played a little with it (though I don't speak German)
> > It's a nice Java database application, not really a web application.
> > Obviously each framework designer will prefer it's own one, otherwise he
> > would have done it in another way ;-)
>
> Yes, we agreed on that before :-)
>
> As you said, it depends very much on the purpose. A web application is
> probably easier for an un-initiated user, but for people who have to
> work with it 8 hours a day a dedicated application might be preferred.
Hm, I assume you mean a dialog based application as the web applications are
dedicated too.
> It would be nice if you could post a solution to the simple person
> database of my original posting, using your framework.
Here it is: (I made some modifs to show some disable predicates, added a
maried status to show interaction with the spouse value, if you change sex
or your spouse gets maried to somebody else you are automatically un-maried,
etc.)
As you can see I don't rely on any database to make the controls though it
would be possible.
(defclass person nil
((name :value-type string :user-name #T(:en "Name" :fr "Nom" :de "" :sp ""
:it "") :disable-predicate 'locked-name)
(locked-name :value-type boolean :user-name #T(:en "Lock name" :fr
"Verouiller nom" :de "" :sp "" :it ""))
(sex :value-type symbol :user-name #T(:en "Sex" :fr "Sexe" :de "" :sp ""
:it "") :initform :male)
(bithdate :value-type :date :user-name #T(:en "Birth date" :fr "Date de
naissance" :de "" :sp "" :it ""))
(father :value-type person :user-name #T(:en "Father" :fr "Père" :de ""
:sp "" :it "") :get-object-func 'choose-father)
(mother :value-type person :user-name #T(:en "Mother" :fr "Mère" :de ""
:sp "" :it "") :get-object-func 'choose-mother)
(maried :value-type boolean :user-name #T(:en "Maried" :fr "Marié" :de ""
:sp "" :it ""))
(spouse :value-type person :user-name #T(:en "Spouse" :fr "Conjoint" :de
"" :sp "" :it "") :disable-predicate '(not maried) :get-object-func
'choose-spouse))
(:user-name #T(:en "Person" :fr "Personne" :de "" :sp "" :it "") :guid
39944127642591635827640405902 :short-description 'name))
(defun choose-father (obj)
(remove obj
(remove :female (persons *all-persons*) :key 'sex)))
(defun choose-mother (obj)
(remove obj
(remove :male (persons *all-persons*) :key 'sex)))
(defun choose-spouse (obj)
(nset-difference
(remove (sex obj)(persons *all-persons*) :key 'sex)
(list obj (father obj)(mother obj))))
(defmethod (setf spouse) :around (spouse (obj person))
(let ((prev-spouse (spouse obj)))
(unless (eq prev-spouse spouse)
(call-next-method)
(when prev-spouse
(setf (maried prev-spouse) nil))
(when spouse
(setf (maried spouse) t
(spouse spouse) obj)))))
(defmethod (setf maried) :before (maried (obj person))
(let ((spouse (spouse obj)))
(when (not maried)
(setf (spouse obj) nil))))
(defmethod (setf sex) :before (value (obj person))
(unless (eq value (sex obj))
(setf (maried obj) nil)))
Marc
[Who should really be working on real work!]
- Next message: David Steuber: "Re: A Succinctness Challenge"
- Previous message: David Steuber: "Re: Socket Programming"
- In reply to: Alexander Burger: "Re: A Succinctness Challenge"
- Next in thread: Alexander Burger: "Re: A Succinctness Challenge"
- Reply: Alexander Burger: "Re: A Succinctness Challenge"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|