= 2005-07-29 《邮件列表的规范和礼节:创造良性发展的交流空间》幻灯 = 在[[CPUG]]/[[BPUG]]成立大会上的报告。 使用[[http://www.meyerweb.com/eric/tools/s5/|S5]]制作,请下载 [[attachment:slideshow-v2.tar.gz]] 或者 '''[[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() }}} == 反馈 == 对我的幻灯有什么意见哪?提在这儿好了。