Message Area
Casually read the BBS message area using an easy to use interface. Messages are categorized exactly like they are on the BBS. You may post new messages or reply to existing messages!

You are not logged in. Login here for full access privileges.

Previous Message | Next Message | Back to International chat echo - member...  <--  <--- Return to Home Page
   Networked Database  International chat echo - member...   [527 / 900] RSS
 From   To   Subject   Date/Time 
Message   mark lewis    Ozz Nixon   Name that compression...   March 30, 2019
 11:45 AM *  

 On 2019 Mar 29 22:06:18, you wrote to Maurice Kinal:

 ON> it would make sense on the server to use timestamp - and a piece of
 ON> logic to make sure no two nodes post during the same second.

i would not rely on seconds granularity at all... sure, for manual posting but
certainly not for offline QWK/QWKE/BW uploads where the user may upload 50+
messages in one go... are you going to make them wait for 50 seconds while you
delay a second for each message? what happens if you have two or more users
online which upload their offline replies at the same time? sure, the odds are
against that happening but we all know the name of Murphy very well, don't we
;)

then there's external automated posting tools that can easily post 100+
messages per second on today's hardware...

using the timestamp along with a plain simple serial number would work... but
for that matter just a plain simple serial number is really all that is
needed... i never did figure out why so many tried to come up with convoluted
serial number generating routines... i remember that many used CRC16 and then
CRC32 which are well known to have limited range as well as easily hit
collisions... then some thought of using MD5 which then had to be chopped to
fit within the limits of the serial number and again, limited range and
collisions reared their heads...

but i know of at least one format, written in 1994 and implemented that same
year, that incorporates the multinode node number, timestamp and serial
number...

==== Begin "MSGID.TXT"  ====
Area: FIDONet Developers Area (E)
Date : Apr 15 '94, 20:20
From : Leonard Erickson                                       1:105/51.0
To   : Paul Edwards
Subj : Re: EchoMail
───────────────────────────────────────────────────────────────────────────────
─

 -=> Quoting Paul Edwards to Mikael Ståldal <=-

 PE> There is no requirement for there to be a MSGID kludge, and can you
 PE> honestly say that you have NEVER been at risk of violating the MSGID
 PE> standard, ie there was no possibility that you ever generated two
 PE> MSGID's the same within any 3 year period?  I certainly can't.

The identifier part of the MSGID is 8 hex digits. As a worst case,
there are 1096 days in 3 years. (assuming that there's aleap year in
there somewhere). There are 86400 seconds in a day. That gives 94694400
seconds. In HEX that's 5A4EC00. Note that this is *7* digits. The max
number of possible ID's is 100000000h. Doing the division gives 2Dh or
45d IDs for each second. I think we can live with a system that's
limited to tossing messages at 45/second. Or that tosses faster, but
won't let itself be run again until enough time has passed. 3.9
*million* messages per day is more traffic than anybody is likely to
generate!

As a *simple* method of doing this, have the program generate the
Julian Day Number (April 15, AD 1994 is JD#2449457). Then figure modulo
2048 of it. That's 49. Shift it to the right an appropriate number of
bits (multiply by 20 00 00 hex). That gives us 62 00 00 00 hex. And we
have 20 00 00 hex or 2,097,152 decimal message numbers per day. I think
that can be handled easily enough. Just generate a message number
(starting at 0 for the start of the day) and add it to the modified jd.

So we get:
        serial = (JD# mod $800) * $200000 + mnum

That's *not* that hard. And you can even allow for multiple tasks by
just allocated the least significant digit or digits. With 2 digits
allocated for a task number, that gives each task 8k numbers to
allocate per day. I think that's enough. :-)

For up to 16 tasks:
        serial = (JD# mod $800) * $200000 + num *16 + task#

For up to 256 tasks:
        serial = (JD# mod $800) * $200000 + num *256 + task#

... Unrecoverable Application Error: (A)bort, (R)etry, (B)uy Desqview ?
-!- Blue Wave/QBBS v2.12 [NR]
 ! Origin: Shadowshack (1:105/51.0)

==== End "MSGID.TXT" ====

the above may not be sufficient, though, if one is importing usenet newsgroups
and generating MSGID serial numbers for them... however, the idea is quite
workable...

i have pascal code that does the above with some slight variation and at least
two FTN capable programs are using my code under license but it is still simple
 enough to create and manage... it was testing on a live system for just over
three years before being released for public consumption in utility tools...

the only real gotcha is if the incremental serial number file is lost... then
it may be possible to generate duplicate serial numbers on the same day from
the same node but once the date rolls over, that is taken care of... unless the
 system clock gets reset for some reason... ok, so that's two possible
gotchas...

either way, plain straight incremented numbers are the easiest and you don't
need to worry about the clock or how many nodes... just that the serial number
file is not reset... of course proper file locking and access is needed to
protect against two or more nodes getting the same number at the same time...

so anyway, there it is, FWIW...

)\/(ark

Always Mount a Scratch Monkey
Do you manage your own servers? If you are not running an IDS/IPS yer doin' it
wrong...
... Too many people think a potato tastes like a Pringle.
---
 * Origin:  (1:3634/12.73)
  Show ANSI Codes | Hide BBCodes | Show Color Codes | Hide Encoding | Hide HTML Tags | Show Routing
Previous Message | Next Message | Back to International chat echo - member...  <--  <--- Return to Home Page

VADV-PHP
Execution Time: 0.0889 seconds

If you experience any problems with this website or need help, contact the webmaster.
VADV-PHP Copyright © 2002-2024 Steve Winn, Aspect Technologies. All Rights Reserved.
Virtual Advanced Copyright © 1995-1997 Roland De Graaf.
v2.0.140505

Warning: Unknown: open(c:\Sessions\sess_lfi5rinfhv9u1cf8tm4ak5vad1, O_RDWR) failed: No such file or directory (2) in Unknown on line 0 Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (c:\Sessions) in Unknown on line 0 PHP Warning: session_start(): open(c:\Sessions\sess_lfi5rinfhv9u1cf8tm4ak5vad1, O_RDWR) failed: No such file or directory (2) in D:\wc5\http\public\VADV\include\common.inc.php on line 45 PHP Warning: Unknown: open(c:\Sessions\sess_lfi5rinfhv9u1cf8tm4ak5vad1, O_RDWR) failed: No such file or directory (2) in Unknown on line 0 PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (c:\Sessions) in Unknown on line 0