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]

