DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T d

⟦3cd67d48c⟧ TextFile

    Length: 2461 (0x99d)
    Types: TextFile
    Names: »delay«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/news/misc/delay« 

TextFile

#
#	Note, Date-Received knows abotu yout local timezone
#
./grabheaders | awk '
BEGIN{
	t = "Jan 31 Feb 28 Mar 31 Apr 30 May 31 Jun 30 Jul 31 Aug 31 Sep 30 Oct 31 Nov 30 Dec 31"
	split(t,x)
	n = 0;
	for(i=1;i<24;i+=2) {
		month[x[i]] = month[(i+1)/2] = (i+1)/2
		days[(i+1)/2] = n
		n += x[i+1]
	}
}

/^Date: /{
	if (NF == 7 ){
		t = $6
		x[1] = $3
		x[2] = $4
		x[3] = $5
	} else if (NF == 5 && split($3,x,"-") == 3) {
		t = $4
	} else if (NF == 4 && split($2,x,"-") == 3) {
		t = $3
	}else if (NF == 6) {
		t = $5
		x[1] = $2
		x[2] = $3
		x[3] = $4
	}else{
		print "Bad date",messageid, $0
		next
	}
	sent = x[1] + days[month[x[2]]] + (x[3]-80)*365
	if (x[3]%4 == 0 && month[x[2]] > 2)
		sent++
	split(t,x,":")
	sent *= 60*24
	sent += x[1] * 60 + x[2]
}
/^Date-Received: /{
	if (NF < 3){
		print "Date-received", messageid ,$0
		rec = 0
		next
	}
	split($2,x,"/")
	rec = x[2] + days[x[1]+0] +(x[3]-80)*365
	if (x[3]%4 == 0 && x[1] > 2)
		rec++
	split($3,x,":")
	rec *= 60*24
	rec += x[1] * 60 + x[2] + 1.44
	if ($4 != "GMT")
		rec += 60*5
	if (rec > today)
		today = rec
}
/^Message-ID: /{messageid = $2}
/^Path: /{
	n = split($2,x,"!")
	if( n > 2)
		feed = x[2]
	else
		feed = x[1]
}
/^$/{
	n = int((rec - sent)/(60*24)+0.999)
	if( rec > 0 ) {
		if ( n >= 0) {
			adelay[n]++
			if( n > amaxdelay)
				amaxdelay = n
		} else {
			adelay[-1]++
			print "Time Warp", messageid
		}
		totdelay++
		feedsite[feed]++
	}
	rec = sent = 0
}
END {
	n = int((rec - sent)/(60*24)+0.999)
	if( rec > 0 ) {
		if ( n >= 0) {
			adelay[n]++
			if( n > amaxdelay)
				amaxdelay = n
		} else {
			adelay[-1]++
			print "Time Warp", messageid
		}
		totdelay++
		feedsite[feed]++
	}
	i = 0
	count = 0
	printf("\n\tPropagation Delay\n")
	printf("\n\t     No. of   Cumulative\n")
	printf("\tDays Articles Percent\n")
	if (adelay[-1] > 0) {
		printf("\t <0%8d%7d%% (Time Warp)\n",adelay[-1],0)
		count += adelay[-1]
	}
	while (i <= amaxdelay) {
		count += adelay[i]
		if( adelay[i] != 0 )
			printf("\t%3d%8d%7d%%\n",i,adelay[i],(count*100)/totdelay)
		i++
	}

	n = 0
	for (i in feedsite)
		ptr[++n] = i

	j = 1
	while (j < n){
		if  (feedsite[ptr[j]] < feedsite[ptr[j+1]]){
			temp = ptr[j]
			ptr[j] = ptr[j+1]
			ptr[j+1] = temp
			if( j > 1) {
				j--
				continue
			}
		}
		j++
	}
	printf("\n\tDistribution of news feeds\n")
	printf("\t   Count Percent   Site\n")
	j = 0
	while (++j <= n){
		i =feedsite[ptr[j]]
		printf("\t%8d%7d%%   %s\n",i,(i*100)/totdelay,ptr[j]);
	}
}'