Differences between revisions 10 and 11
Revision 10 as of 2005-07-31 02:53:29
Size: 2512
Comment:
Revision 11 as of 2006-10-31 13:12:54
Size: 212
Editor: 61
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= 2005-07-29 《邮件列表的规范和礼节:创造良性发展的交流空间》幻灯 =

在["CPUG"]/["BPUG"]成立大会上的报告。

使用[http://www.meyerweb.com/eric/tools/s5/ S5]制作,请下载 attachment:slideshow-v2.tar.gz 或者
'''[wiki:localshare/classes/050730-CPUG/usMaillist/ 在线阅读]'''

''构思时用的freemind图在["QiangningHong/2005-07-25"]。''

== 使用方法 ==

解压后用浏览器(推荐[http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1 Firefox])打开maillist.html即可。

== 用到的统计邮件列表中MUA使用情况的小程序 ==

写的很烂 //blush 不过应该不会算错;)

用mbox文件的文件名作参数,我是直接用的[http://www.mozilla.org/products/thunderbird/ Thunderbird]的文件。

{{{
#!python
#!/usr/bin/env python

import email
import mailbox


class Statics(object):
    def __init__(self):
        self.muas = {}
        self.muas_by_from = {}

    def process(self, msg):
        mua = self.get_mua(msg)
        if not mua:
            return

        self.muas[mua] = self.muas.get(mua, 0) + 1

        self.muas_by_from.setdefault(mua, set()).add(msg['From'])

    def get_mua(self, msg):
        mua = msg.get('X-Mailer') or msg.get('User-Agent')
        return mua

    def get_frequent_muas(self):
        muas = sorted(((count, mua) for mua, count in self.muas.iteritems()),
                reverse=True)
        return muas

    def get_popular_muas(self):
        return sorted(((len(y), x) for x, y in self.muas_by_from.iteritems()),
                reverse=True)


def main():
    import sys

    mbox_fn = sys.argv[1]
    mbox = mailbox.UnixMailbox(file(mbox_fn), email.message_from_file)

    stat = Statics()

    total = 0
    for msg in mbox:
        total += 1
        stat.process(msg)
    print total, 'messages processed'
    print

    print 'The top 10 MUAs are:'
    m = stat.get_frequent_muas()
    c = sum(x[0] for x in m)
    for count, mua in m[:10]:
        print mua, '(%.1f%%)' % (count * 100. / c)
    print 'Messages without MUA field: %.1f%%' % ((total - c) * 100. / total)
    print

    print 'The top 10 popular MUAs are:'
    m = stat.get_popular_muas()
    c = sum(x[0] for x in m)
    for count, mua in m[:10]:
        print mua, '(%.1f%%)' % (count * 100. / c)



if __name__ == '__main__':
    main()
}}}


== 反馈 ==

对我的幻灯有什么意见哪?提在这儿好了。
attachment:b_9F9D4FFB7F3B520D.jpg
Trolls is much better than QiangNingHong rubbish Pigs....
Trolls is much better than QiangNingHong rubbish Pigs....
Trolls is much better than QiangNingHong rubbish Pigs....

attachment:b_9F9D4FFB7F3B520D.jpg Trolls is much better than QiangNingHong rubbish Pigs.... Trolls is much better than QiangNingHong rubbish Pigs.... Trolls is much better than QiangNingHong rubbish Pigs....

QiangningHong/2005-07-29 (last edited 2009-12-25 07:14:57 by localhost)