OK. Ini revisi dari statistik milis edisi February 2001. Skrg dihitung
juga jumlah email berdasarkan TLD-nya sesuai saran Pak Rus. Kemudian
soal posting ke website saya rasa tidak perlu karena sudah ada di
arsip linux-aktivis. Jika ingin dilihat lewat web silakan mulai dari:

http://www.mail-archive.com/cgi-bin/htsearch?method=and&format=short&config=linux-aktivis_linux_or_id&restrict=&exclude=&words=statistik+milis

(subjectnya selalu saya gunakan "statistik milis" jadi gampang
disearch).

Scriptnya saya lampirkan juga di bawah. Scriptnya menganggap 'ezmlm-list'
dan program2 utility lain yg digunakan sudah ada di $PATH.

Ronny

> Generated at Sat Feb  3 21:51:21 2001 GMT
> 
> 1. Jumlah pelanggan masing-masing milis:
>     6203 total
>     1140 linux-setup
>     1022 linux-admin
>      690 linux-programming
>      643 linux-berita
>      572 linux-desktop
>      531 linux-bursa
>      400 security
>      341 linux-policy
>      331 linux-aktivis
>      273 klinik
>      162 i18n
>       98 majalah
> 
> 2. Jumlah alamat email yang unik dari semua milis: 2830
> 
> 3. Rata-rata tiap alamat email terdaftar ke 2.19 milis
> 
> 4. Distribusi cross-subscription:
>    1559 alamat email terdaftar di 1 milis
>     525 alamat email terdaftar di 2 milis
>     281 alamat email terdaftar di 3 milis
>     172 alamat email terdaftar di 4 milis
>      85 alamat email terdaftar di 5 milis
>      61 alamat email terdaftar di 6 milis
>      46 alamat email terdaftar di 7 milis
>      41 alamat email terdaftar di 8 milis
>      15 alamat email terdaftar di 9 milis
>      17 alamat email terdaftar di 10 milis
>      19 alamat email terdaftar di 11 milis
>       9 alamat email terdaftar di 12 milis
> 
> 5. Jumlah email berdasarkan top level domain (TLD):
>      .am = 1
>      .ar = 3
>      .as = 2
>      .au = 8
>      .bn = 1
>      .ca = 2
>     .com = 1238
>      .cx = 1
>      .de = 9
>     .edu = 56
>      .id = 1037
>      .jp = 16
>      .my = 5
>     .net = 376
>      .nu = 1
>      .nz = 1
>     .org = 41
>      .qa = 1
>      .se = 1
>      .sg = 14
>      .st = 1
>      .to = 4
>      .tw = 2
>      .uk = 9


#!/usr/bin/perl
# Calculate mailing list stats.
# Ronny Haryanto <ronny at haryan dot to>

# usage: ./thisprogram > result.txt
# (optionally, you can add 2>/dev/null if you're going to run this
# script from cron)

###########################################################################
# config
###########################################################################
# TODO: make these run-time configurable (use getopt)

# The directory where this program puts the list of subscribers
# for each list.
$WorkingDir = "/tmp/milisstat-list-$$";

# The directory where all of the mailing lists are located.
$ListsDir = "/home/1/web/linux/lists";

# Do not process these subdirectories under $ListsDir
@Excludes = qw(intern);

###########################################################################
# Version History:
# 2000-10-20 initial coding
# 2001-02-03 added step 5: count based on top level domain
###########################################################################

# leaving these untouched should be safe:
$TmpDir = "/tmp/milisstat-tmp-$$";
$tmpfile = "$TmpDir/unik";
$tmpjum = "$TmpDir/jumlah";
$tmpjumfinal = "$TmpDir/jumlahfinal";

$|=1;
umask(077);

print STDERR ">> $0 started at ".gmtime(time())." GMT\n";
print "Generated at ".gmtime(time())." GMT\n\n";

print STDERR ">> Setting up dirs...\n";
mkdir($WorkingDir,0700) if(!-e $WorkingDir);
(-d $WorkingDir) or die "$0: $WorkingDir is not a dir\n";
mkdir($TmpDir,0700) if(!-e $TmpDir);
(-d $TmpDir) or die "$0: $TmpDir is not a dir\n";

print STDERR ">> Creating subscriber lists...\n";
chdir $ListsDir or die "$0: $ListsDir: $!\n";
@lists = glob("*");
die "$0: no lists found in $ListsDir/\n" if(scalar(@lists)==0);
foreach $list (@lists)
{
    my $found=0;
    foreach $e (@Excludes)
    {
        if($list eq $e) { $found=1; last; }
    }
    if($found) # skip excludes
    {
        print STDERR " * (skipping $list)\n";
        next;
    }
    print STDERR "   $list\n";
    `ezmlm-list $ListsDir/$list > $WorkingDir/$list`;
}

chdir $WorkingDir or die "$0: $WorkingDir: $!\n";



print STDERR ">> Step 1\n";
@individuals = `wc -l * | sort -rn`;
print "1. Jumlah pelanggan masing-masing milis:\n @individuals\n";



print STDERR ">> Step 2\n";
`cat * | sort | uniq > $tmpfile`;
$jumlahemail = `wc -l $tmpfile`;
$jumlahemail =~ s/^\s*(\d+)\s+.*$/$1/;
print "2. Jumlah alamat email yang unik dari semua milis: $jumlahemail\n";



print STDERR ">> Step 3\n";
($totalpelanggan) = $individuals[0] =~ /^\s*(\d+)/;
$ratarata = $totalpelanggan / $jumlahemail;
printf "3. Rata-rata tiap alamat email terdaftar ke %3.2f milis\n\n", $ratarata;



print STDERR ">> Step 4 & 5\n";
open(IN,"<$tmpfile") or die "can't open $tmpfile: $!\n";
`rm -f $tmpjum`;
open(OUT,">>$tmpjum");
$i = 0;
my %TLD_count;
while(<IN>)
{
    chomp;
    $i++;
    # add the TLD of this email to our count
    /^[^@]+@([0-9a-zA-Z\-]+\.)+([A-Za-z0-9]+)$/;
    $TLD_count{$2}++;
    # count how many times this address shows up
    $cmd = 'egrep "^'.quotemeta($_).'$" * | wc -l';
    print OUT `$cmd`;
    print STDERR "\r   Working ... ".int($i*100/$jumlahemail).'%';
}
print STDERR "\n";
close(OUT);
close(IN);
`sort -r $tmpjum > $tmpjumfinal`;
@un = `uniq $tmpjumfinal`;
foreach(@un)
{
    chomp; s/\s*//g;
    $cmd = 'egrep "^[ \t]*'.quotemeta($_).'$" '.$tmpjumfinal.'|wc -l';
    $hasil{$_} = `$cmd`; chomp($hasil{$_});
}
print "4. Distribusi cross-subscription:\n";
foreach $key (sort {$a<=>$b} keys %hasil)
{
    print $hasil{$key}." alamat email terdaftar di $key milis\n";
}
print "\n";



print STDERR ">> Step 5\n";
print "5. Jumlah email berdasarkan top level domain (TLD):\n";
foreach $tld (sort keys %TLD_count)
{
    printf "    %4s = %d\n", ".$tld", $TLD_count{$tld};
}
print "\n";


print STDERR ">> Cleaning up\n";
# clean up the temp files and dirs
unlink ($tmpfile, $tmpjumfinal, $tmpjum);
`rm -rf $WorkingDir $TmpDir`;
print STDERR ">> Finished at ".gmtime(time())." GMT\n";

----------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]

Kirim email ke