Michael White | 1 Jul 2003 03:55
Picon

Re: problems upgrading to 2003


On Monday, June 30, 2003, at 11:54 AM, Pat Bensky wrote:

> Is it really fair for the client who a) has just paid for an upgrade 
> but b)
> opted not to pay for the maintenance contract to have to pay me to fix
> problems that are caused by the upgrade?
>

err on the side of conservative - keep a solid foundation under your 
clients...

M    ;-)

**********************************************************************
4th Dimension Internet Users Group (4D iNUG)
FAQ:        http://www.pdm-inc.com/iNUG/faq.htm
Admin:      mailto:iNUG@...
Unsub:      mailto:4D_Tech-off@...
**********************************************************************

Peter Mannheim | 1 Jul 2003 04:03
Picon
Picon

Duplicate Record etc.

dear iNUg,
Thanks to everyone for all your feedback, including emaiIing me directly -
always useful. I decided to use global arrays to assign the data, then for
the phase where I have to tick off the Line Items due for Refunds, I used
Set Query Destination(Into Set)
Query( my criteria)
Delete Record
Remove from Set
Use Set
Clear Set
... worked a treat.

A small point en passant :- the code I used to copy data or copy it back -
I forget which now - like this ( I've just shown a few assignment lines for
brevity) did not work when I shoved it in a parameterless procedure, so I
had to put it inline !
( i.e. either the assignment To or From the Line Items)
      RLine:=Records in selection([LineItems])
      ARRAY STRING(10;×asItemNumArray;RLine)
      ARRAY STRING(80;×asItemName;RLine)
         For ($i;1;RLine)
        ×asItemNumArray{$i}:=[LineItems]Appro ID
        ×asItemName{$i}:=[LineItems]ItemName
<snip>
            NEXT RECORD([LineItems])
      End for
      Case of
        : (Substring([Invoices]Appro Number;1;2)="I-")
          INPUT FORM([Invoices];"Refund Input")
          DUPLICATE RECORD([Invoices])
(Continue reading)

Peter Mannheim | 1 Jul 2003 04:27
Picon
Picon

Duplicate Record bug

thanx for the caveats about sets going 'stale'.
In my particular scenario, I misdirected the iNug about what I did -
emailing in a hurry!

Actual code to process the Line Items after I had ticked the ones due for
'Refund' was:
    QUERY([LineItems];[LineItems]Appro ID=[Invoices]Appro Number)
    CREATE SET([LineItems];"Line Set")
    FIRST RECORD([LineItems]) ` possibly unnecessary
    For ($i;1;Records in selection([LineItems]))
      Case of
        : ([LineItems]Refund=True)
      ` do stuff to process totals etc.
         : ([LineItems]Refund=False)
          REMOVE FROM SET([LineItems];"Line Set")
          DELETE RECORD([LineItems])
      End case
      NEXT RECORD([LineItems])
    End for
    USE SET("Line Set")
    CLEAR SET("Line Set")
` and so I save just the records that have Refunds due...

- might I have problems in a multi-user environment, I wonder ?

thanx

Peter Mannheim

**********************************************************************
(Continue reading)

Matthias Schmidt | 1 Jul 2003 04:40
Picon
Favicon

Re: Duplicate Record bug

Peter,

as I already suggested, I would do that stuff with arrarys.

That's special in a multiuser environment more efficient. But it depands
on the number of records you want to work on.

Am/On: Tue, 1 Jul 2003 04:27:26 +0200 schrieb/wrote: Peter Peter Mannheim

>thanx for the caveats about sets going 'stale'.
>In my particular scenario, I misdirected the iNug about what I did -
>emailing in a hurry!
>
>Actual code to process the Line Items after I had ticked the ones due for
>'Refund' was:
>    QUERY([LineItems];[LineItems]Appro ID=[Invoices]Appro Number)
>    CREATE SET([LineItems];"Line Set")
>    FIRST RECORD([LineItems]) ` possibly unnecessary
Yes this is unnecessary here.

>    For ($i;1;Records in selection([LineItems]))
>      Case of
>        : ([LineItems]Refund=True)
>      ` do stuff to process totals etc.
>         : ([LineItems]Refund=False)
>          REMOVE FROM SET([LineItems];"Line Set")
>          DELETE RECORD([LineItems])
>      End case
>      NEXT RECORD([LineItems])
>    End for
(Continue reading)

Matthias Schmidt | 1 Jul 2003 04:33
Picon
Favicon

Re: Duplicate Record etc.

Peter,

sorry, I don't completely understand, what you want.

but with the code down there, I would use:
Array Longint ($records;0)
Selection to Array (Table($file)->;$records)
For($i;1;Size of Array($records))
   Goto Record (Table($file)->;$records{$i})
   .......
end for

or what you do there:

Array Longint ($records;0)
ARRAY STRING(10;*asItemNumArray;0)
ARRAY STRING(80;*asItemName;0)

Selection to Array ([LineItems];$records;[LineItems]Appro
ID;*asItemNumArray;[LineItems]ItemName;asItemName)

For($i;1;Size of Array($records))
   If($true)
      Goto Record (Table($file)->;$records{$i})
       .......
    end if
end for

or something simular with local arrays only.

(Continue reading)

Scott Ribe | 1 Jul 2003 04:44

Re: enterable var in display selection

> In my estimation, enabling the same record to be modified by multiple users
> via DIALOG, without providing some means by which each user can see *the
> current state of the actual record* before modifying it, is "the wrong way".

For crying out loud, stop taking what Nick says and twisting it around in
order to prove him wrong. You seem to willfully ignore the "according to
your criteria" in his original quote and go off on a tangent as though he
had claimed there should be no locking at all.

> *  hence if several users open the same record together you can give
> them priviledges according to your criteria and not on the 'first
> arrived, first served' basis;

There are other legitimate ways to do things besides 4D's default ways; and
there are things about 4D that are done poorly, if not flat-out incorrectly.
Just because the 4D way is the only way you know doesn't mean you should
jump down somebody's throat whenever they point out a weakness or suggest a
way to work around it. In fact quite the opposite, it means you should
probably listen because you might be able to learn something if you'd stop
being so sensitive and defensive.

--

-- 
Scott Ribe
scott_ribe@...
http://www.killerbytes.com/
(303) 665-7007 voice

**********************************************************************
4th Dimension Internet Users Group (4D iNUG)
FAQ:        http://www.pdm-inc.com/iNUG/faq.htm
(Continue reading)

Lowell Herbert | 1 Jul 2003 04:52
Picon

Re: [OFF] Improving Developer Productivity

Walt,

Awesome article!  You highlighted a subject that is of recent interest 
to me after reading a book by Eckhart Tolle entitled "The Power of 
Now".  I purchased another book today on the same topic:   "Present 
Moment Awareness..." by Shannon Duncan.

I find what you discuss in the article to be extremely beneficial in 
every area of my life, including 4D programming.  My programming 
productivity and competency are dramatically improved in direct 
proportion to my "present moment" awareness.  I was in a non-productive 
state today and the insight gained from your article and  other sources 
helped me to "transcend" that mental block.

Back to work now...After I wash the dishes :-)

Lowell

On Monday, June 30, 2003, at 04:06  PM, walt@... wrote:

> Hello all.
>
> Recently, a developer asked me how I, as a single developer, can put 
> out so many products and tools. I hadn't thought about the subject of 
> Developer Productivity in quite awhile, but his question got me to 
> thinking about the subject.
>
> My "secret" (if you can call it that) is creating an atmosphere of 
> focus and concentration, similar to what athletes do when they want to 
> maximize their performance. It's called being "in the zone.". I wrote 
(Continue reading)

thomas.swenson | 1 Jul 2003 06:22
Picon

Re: 4D Web Server User Log Off

You can also do this with a cookie. 

That way  the URL looks a little more pleasant. I believe that WebServer4D uses 
this method. Also, since the PHP manual was mentioned, PHP does sessions through cookies if you 
want. Furthermore, these days you can tell users that a site requires cookies.

Hints:
Ensure that the identifiers are de-coupled from the user identity - i.e don't 
have the user's identity be any part of the identifier. i.e you don't want anybody figuring out login 
identities by "reverse engineering" the contents of the messages passed between client and server.

Ensure that the generating algorithm doesn't generate the same sequence of identifiers. An 
example of this is the use of 4D's RANDOM function. Since RANDOM starts with the same seed 
every time 4D starts, situations could arise where the server fails, restarts, and begins issuing 
identifiers to users that log in again immediately - though not neccessarily in the same order.  In 
the web world (stateless HTTP) they wouldn't know that the server went down, they would just be 
prompted for a login again. It sounds far-fetched, but it can happen. Something like RANDOM * 
MILLISECONDS % 7. Which looks unique enough  - though I'm sure there are more mathematically 
based obfuscating methods than this.

> Hi,
> 
> Basically when a user logs in they submit username/password 
> information via a form. The Server creates a session ID record 
> indicating among other things who the user is and the last login.
> 
> The URL ends up looking something like:
> http://ofolio.akedl.edu/edit41/mainEdit.shtml?sid=SKUKESHA7962GHUBOBE7
> 
> When parsing the URL the server can retrieve the session ID record 
(Continue reading)

Dan LaSota | 1 Jul 2003 08:19

Re: 4D Web Server User Log Off

>You can also do this with a cookie.
>
>That way  the URL looks a little more pleasant. I believe that 
>WebServer4D uses
>this method. Also, since the PHP manual was mentioned, PHP does 
>sessions through cookies if you
>want. Furthermore, these days you can tell users that a site requires cookies.
>

this is a good point. Perhaps seeing a session ID is too much for 
some. On the other hand you can suggest users turn on cookies, but 
they may not be able to, or may refuse to. One's audience should be 
considered.

--

-- 
Dan LaSota
AE data, Inc.
693 Manchester Loop
Fairbanks, AK 99712
(907) 479-0650
dan@...
http://www.ae-data.com

**********************************************************************
4th Dimension Internet Users Group (4D iNUG)
FAQ:        http://www.pdm-inc.com/iNUG/faq.htm
Admin:      mailto:iNUG@...
Unsub:      mailto:4D_Tech-off@...
**********************************************************************

(Continue reading)

Jim Redfield | 1 Jul 2003 08:51
Picon
Favicon

Re: 4D Web Server User Log Off

Good morning,

I know this may sound like a broken record, but you should consider 
Active4D for professional session management. A4D does session 
management elegantly and provides a professional way for managing the 
logon/logoff status of the end user. I know some of you use A4D so I 
apologize for the obvious. However, for all the rest, go get Active4D, 
use it, and if it fits your needs, deploy your web sites with it. You 
will be happy you did.

http://www.aparajitaworld.com

Jim Redfield

On Monday, June 30, 2003, at 11:19 PM, Dan LaSota wrote:

> You can also do this with a cookie.
>
> That way  the URL looks a little more pleasant. I believe that 
> WebServer4D uses
> this method. Also, since the PHP manual was mentioned, PHP does 
> sessions through cookies if you
> want. Furthermore, these days you can tell users that a site requires 
> cookies.

**********************************************************************
4th Dimension Internet Users Group (4D iNUG)
FAQ:        http://www.pdm-inc.com/iNUG/faq.htm
Admin:      mailto:iNUG@...
Unsub:      mailto:4D_Tech-off@...
(Continue reading)


Gmane