如何选择面向对象编程与面向过程编程?

可能我们脑海里天生就有面向过程编程的思想,大致就是把一件事情分成几步,一步一步地完成。不假思索写出来的代码,自然就是面向过程的。

对于面向过程编程,变量(数据)与函数(行为)是分开的,它们都被安排在某个模块(文件)里。模块就好像是一个对象(类),因此,面向过程编程就好比在一个默认的类中编程,而这个类往往不被注意到。

对象同时包含数据和行为。如果只考虑数据,使用列表、字典等 Python 数据结构即可。如果只关注行为而不存储任何数据,那一个简单的函数更合适。

听起来有点枯燥,我们通过例子来理解。

计算多边形的周长

面向过程

通常来说,我们会以一个存储着各个顶点的列表来代表多边形。每个顶点以一个二维元组(x, y)建模,该元组描述顶点的位置坐标。

square = [(1, 1), (1, 2), (2, 2), (2, 1)]

计算周长,我们只需要计算相邻两个顶点之间的距离,然后加起来。因此需要一个计算两点之间的距离的函数。编码如下:

import math

def distance(p1, p2):
    return math.sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)

def perimeter(polygon):
    perimeter = 0
    points = polygon + [polygon[0]]
    for i in range(len(polygon)):
        perimeter += distance(points[i], points[i+1])
    return perimeter

这是面向过程的解决办法,调用方法如下:

square = [(1, 1), (1, 2), (2, 2), (2, 1)]
perimeter(square)

4.0

面向对象

上面的函数已经很简洁明了,但不妨来看看面向对象的版本是怎样的。

import math

class Point(object):

    def __init__(self, x, y):
        self.x = x
        self.y = y

    def distance(self, p2):
        return math.sqrt((self.x - p2.x) ** 2 + (self.y - p2.y) ** 2)

class Polygon(object):

    def __init__(self):
        self.vertices = []

    def add_point(self, point):
        self.vertices.append(point)

    def perimeter(self):
        perimeter = 0
        points = self.vertices + [self.vertices[0]]
        for i in range(len(self.vertices)):
            perimeter += points[i].distance(points[i+1])
        return perimeter

这段代码比上面的面向过程版本长了很多,几乎是上面的两倍。我们先来看看它是如何调用的。

square = Polygon()
square.add_point(Point(1, 1))
square.add_point(Point(1, 2))
square.add_point(Point(2, 2))
square.add_point(Point(2, 1))
square.perimeter()

4.0

是不是通俗易懂,它比函数版本的代码更易读。对于函数版本的代码,我们可能需要写更多的文档以表明它的用法。

我们还可以对 Polygon 类进行优化,使它更容易使用,让它像函数版本那样接受一个元组的列表。

def __init__(self, points=[]):
    self.vertices = []
    for point in points:
        if isinstance(point, tuple):
            point = Point(*point)
        self.vertices.append(point)

如果我们要为多边形增加一些特征,如 color 或者 texture,将这些数据封装进类会变得更有意义。一般来讲,拥有复杂的数据集,需要对它进行特定操作,这时使用具有属性和方法的类会很有帮助。它不仅可以使代码易读,还可以使逻辑紧凑。

如何选择

在一个具体的场景里,如果只需要计算多边形的周长,一个函数可能是最简单、最快的开发方法。但是如果我们需要对多边形进行多种处理(计算周长、面积、和其它多边形的交点等),那么我们需要一个对象来满足这些需求。所以,对于较复杂的问题,一般采用面向对象编程。

用户登录过程中密码传输的安全分析

密码,属于个人机密。最好除本人以外,不让任何人知道。

对于某个网络应用的密码,需要保存到服务提供方的服务器,因此必须加密。最好采用不可逆加密,以确保服务提供方也无法知道原始密码。另外一方面也是为了防止拖库(数据库整体泄露)。所以服务端保存的密码,一般是对原始密码进行哈希处理的结果。

分析

密码在传输过程中要加密

一般网络攻击的入口有三处:客户端、传输过程、服务端。本文主要是分析用户登录的数据在传输过程中被攻击的情况。这也是黑客最容易下手的地方。现在连接网络基本都通过 wifi 的方式,最常见的是电脑或者手机连接到陌生的网络(公共 wifi)。那么 wifi 提供方轻而易举就可以监听到用户所有的网络请求,主要是实施抓包和重放攻击(Replay Attacks)。

所以密码在传输过程中也需要加密,这就解决了明文密码在传输过程中被泄露的问题。

请求参数一次有效

重放攻击又叫重播攻击、回放攻击,意思是将用户发送的有效请求再发送一次,以欺骗服务器。(如取得登录凭据。)解决办法是确保请求参数使用过一次即失效,使得重发请求失效。

解决方案

1. 不使用 https 协议的情况

通过随机识别码来防止重放攻击。在进行登录请求前,先请求获得一个随机识别码(request_code),在服务端确保产生一个在有效期内唯一的随机识别码,随机识别码在服务端过期时间设置为 1 分钟。

登录请求的参数中增加随机识别码参数,密码使用 md5 加密。然后对参数进行签名,签名算法事先约定好。签名是为了防止参数被修改。那么登录请求的参数如下:

/api/login/?username=zhangsan&password=md5(pwd)&request_code=4321&sign=xxxxxxxxxx

加密与签名建议使用 RSA 算法。

也可以将每个请求的 body 进行加密,使用对称加密算法。在客户端启动或者初始化时,向服务端请求获取对称加密算法的密钥,该密钥是经过 RSA 加密的,使用时解密出该密钥。(当然,对称密钥要足够复杂。否则,黑客将跳过 RSA 直接攻击对称加密部分。)

2. 使用 https 协议

由于 https 本身已经具有加密和防重放攻击的功能,所以购买证书部署好即可。但是 https 仍然有可能被攻破解,所以在上面的方案基础上增加 https 协议,是最为稳妥的方案。

注:对于浏览器,也可以通过 js 实现 md5 等哈希算法以及 RSA 加解密。

美国的数据之路

本文是我阅读涂子沛先生的《数据之巅》读书笔记。

本书看起来是在讲大数据,但实际上作者通过生动详实的例子,深入浅出地讲解了人口普查数据在美国各个历史阶段的使用和发展。这些经验非常值得发展中国家学习和借鉴。

数据,自古就有,人口普查、农业统计、军事战争、政治计算……数据虽小,却有助于治国安邦。美国之所以繁荣鼎盛,数据文化是主因之一。人类使用数据的巅峰形式,是通过数据赋予机器“智能”。

一、 初数时代

这一时期为美国建国初期 50 年左右。

只有 200 多年历史的美国,最初使用数据是因为立宪与人口普查。他们认为国家权力应该在人口之间平均分配,因此分权之前需要通过普查把国民数量点清楚。

一开始仅仅统计各州人数,以确定众议院席位数。后来人口普查统计的范围越来越广,越来越细,如性别、种族、年龄、职务、个人经济情况等。

美国从建国开始,就形成了记录的习惯。其宪法规定,国会的辩论和投票应该有记录,并予以公布。到今天,这 200 多年的辩论记录已经成为非常宝贵的政治大数据。现在通过一个关键词就可以找出历史上的资料。

数据文化的形成,需要政治精英和平民大众共同努力。美国的建国者一再强调,共和国的目标不是愚民,而是培养有知识的公民。培养的方法主要有两个:一是提高识字率,减少文盲;二是推广数学教育,减少数盲。通过教育提高公司的思辨能力,使其学会独立思考。美国的数据文化是从共和政治和经济发展两条主线共同发展而来的,尤其是共和政治中对人口数据的运用,促进了整个社会数据意识的萌芽。

二、内战时代

这一时期,美国南方的奴隶制度还在进行。由于北方工业的发展,缺乏劳动力,有人提出解放黑奴,让黑人自由流动,以吸引黑人到北方参加劳动。但南方南方统治者并不希望这样,因此南北双方关于是否废奴的矛盾越来越深。

林肯当选总统的那一年,南方有几个州宣布独立,美国的联邦正式解体。并且南方的军队打响了南北战争的第一枪,攻占了南北之交的要塞。联邦瓦解、共和破裂,林肯的第一反应是极力避免战争。他对着刚拿到的第八次人口普查数据,想用数据证明,即使分歧再深,战争也不是最佳选择。他提出由政府出钱为奴隶赎身,但一算账,发现所需费用是联邦政府当时一年预算的15倍。

北方军队的统帅谢尔曼,率 6 万大军挺进南方的中心城市亚特兰大,然后他采取了后世历史学家认为整个南北战争中“最为大胆、最为关键的一次行动”:挥师东进、横穿佐治亚州,一路打到美国东部海岸线。后勤补给是军队突进的关键,谢尔曼通过统计部门拿到的各种数据,为他的东进提供的信息支撑。根据农场、牲畜、集市、车站等重要资源的分布,精心计算最佳行军路线,以确保行进中的补给。

林肯宣颁布的《解放黑奴宣言》顺应人心,成千上万的黑奴逃往北方,最后共有 20 万黑人加入北方军队,促进了北方阵营的胜利。为了赢得战争,南方也征召黑奴入伍。因为黑作为独立人参与战争,黑人的地位有所提高。战后,南北双方都希望争取更多的国家权力,不得不通过宪法确定了黑人男性投票权。

三、镀金时代

美图内战结束到 1900 年这一时期被称为“镀金时代”。内战时期,数据激起了动人的浪花。到了镀金时代,数据开始在美国社会形成波澜。

1900 年前后,美国的中央政府形成了农业统计局、人口普查局、劳工统计局和经济分析局四足鼎立的统计机构格局。统计部门不仅发布原始的调查数据,还尝试发布各种经过复杂计算产生的指标,例如失业率、生活成本指数、工资指数等。这些指标不仅监测经济发展的波动,还预测未来的走向,在世界范围内都是重要的创新。此时,美国的政治精英已经认识到,数据不仅仅代表“真正的事实”,还蕴藏着事物发展的规律,一旦掌握,就可以把握社会的脉搏甚至预测未来。

人口普查这项最原始的大数据行动,更加火热地进行着。1880 年的普查统计的数据扩大为人口、出生死亡率、农业、社会、工业等五大部分,问卷的问题数也上升到 1 万多个。当年的美国人口也首次突破 5000 万,最终收回问卷多达 1000 多万。

空前的数据量给统计工作带来了巨大压力,为了快速地统计出结果,无非有以下几个对策:1. 缩小普查问卷的范围;2. 增加数据处理分析的人手;3. 技术创新。缩小普查范围不可行,增加人手速度提升有限,最终只有技术创新。镀金时代,美国正在涌现一大批发明家,肖尔斯的便携打字机、贝尔的电话、爱迪生的电灯,都集中在这个阶段发明。每年都有很多新的专利被注册。当然,普查统计既使用已有的新发明提高统计效率,也推动了统计科学家的出现,发明新的工具。

市场的需求才是真正的创新动力,当需求成为越来越迫切的现实,重大的技术突破一定会产生。

四、量化时代

从 1900 年到现在都可称为量化时代,也称为进步时代,形成了数据大潮。

1907 年,70 多名新闻记者和社会科学家对当时工业城市匹兹堡,开展了一次城市环境和工人处境的大型调查,史称“匹兹堡调查”。调查收集了大量数据,形成 6 本调查报告,其中的《工伤事故及法律卷》列举了各种工伤事故数据,整理了 1000 多宗案例,血淋淋的事实直接促成了美国工伤赔偿制度的出台。1908 年,数据开始进入法庭。许多重大案例,大量引用数据和事实,最终获得胜利。在法律界开创了一种用数据辩护的新形式。

进步时代影响力最深远、最广泛的,当属“成本收益分析”。成本收益分析始于治水,因为水利项目的投资都非常巨大,而且影响千秋万代。理论上讲,只要收益大于成本,就值得去做。成本计算与收益计算是该方法的核心,在实践的过程中,相互竞标的单位,会夸大其方案的收益,把一些无形收益、次级收益、相关收效均计算在同,导致方法失去客观性。因此,政府精英们为所有情况制定了量化标准,和必须遵循的原则。

成本收益方法是理性的分析工具,因此得出的结论可能让人惊讶。当成本计算涉及到人的死亡损失时,就需要对人的生命价值进行量化,而且需要转变为一个货币单位。可能大部分人的第一反应都是反对,因为“生命无价”!但是要对每一条无价的生命进行有效保护,就必须对生命的价值进行量化。因此出现了几种生命定价方法:未来收入折现法(计算一个人因为死亡而损失的收入)、价值意愿法(为降低生命风险而愿意支付的金额大小)、劳动力市场评估法(将工人期待的工资分为正常报酬加上死亡风险补贴)。

20 世纪 60 年代福特公司生产的平托轿车,因其价格便宜,受大工薪阶层的欢迎。但不久便因为此款车型发生的追尾起火事故,成为人们的焦点。有记者调查发现,平托车的油箱放在后轮轴承后方,这是个致命的设计,任何后部碰撞都有可能导致汽油泄漏、引发爆炸。并且发现福特公司内部是知道这个缺陷的,而且有补救方案。那么为何还要生产呢?其实福特公司经过成本收益分析,使用补救方案产生的成本,比死亡车祸带来的损失大很多。当时给每例死亡的定价是 20 万美元。

五、抽样时代

20 世纪 30 年代,对选举的预测和研究,催生了统计科学的一次重大革命。结论是社会调查可以通过选取部分有代表性的样本来完成,即抽样。

《文学文摘》一直使用全量统计方法,它会综合其杂志几百万订户的意见,得出预测结果。而统计界的风云人物盖洛普,使用抽样调查,仅对 5000 人做了问卷调查,就成功预测了罗斯福会当选。他的“科学抽样”,没有盲目地大面积调查,而是根据选民的人口特点,确定家庭主妇、工人、农民、老人、中年人、年轻人等各色人群在 5000 人的样本中应该占有的份额,再确定电话访问、邮件访问、街头访问等各种调查方式所占的比例。由于样本找得准,所以能以“小”见“大”。

《乱世佳人》这部以南北战争为背景的爱情小说,受到人们的广泛欢迎。其成功,引起了好莱坞的关注。有的导演大声叫好,有的导演却嗤之以鼻,是因为当时以南北战争为题材的电影部部亏本。新书上市后不久,好莱坞著名制片人塞尔兹尼克就高价收购了该书的电影版权。他又委托盖洛普的公司调查该书有多少人读过。经过几轮调查,普洛普非常肯定地告诉他,《乱世佳人》已经成为美国有史以来最流行的小说,共有 1400 万美国人读过,其流行程度仅次于《圣经》。

随后电影在筹备到开机的各种不确定的问题,都找盖洛普进行调查。如电影时长、是否分为上下两集、黑白还是彩色,再到演员选取、广告设计等。1939 年 1 月,等到盖洛普的调查全部完成,电影才开机拍摄。拍摄方在重大问题的决策上,几乎全部听取了盖洛普的意见:影片为分上下两集,时长 238 分钟,彩色,由费雯丽担任女主角。最后盖洛普给片方的结论是,这部电影将有 5650 万观众,其人数之多,将创有史以来的电影之最。

在新片上市之前,盖洛普又向塞尔兹尼克建议说,这个巨大的潜在观众群体,主要是小说的粉丝,所以影片的广告要重点突出“书”。于是首轮的电影广告设计,从图形到字体,完成模仿了小说的封面。1939 年 12 月电影上映,全国各地影院爆满。故事的发生地亚特兰大市甚至将首映日定为节日,举城欢庆,成为轰动性的文化盛事。最后,通过 4 轮上线,《乱世佳人》一共售出了 5997 万张电影票,而 1940 年美国人口普查的结果为 1.3 亿人口,也就是说,全国近一半的人都观看了这种电影。票房数与盖洛普预测的相差不到 6%,好莱坞大佬们个个都啧啧称奇。

六、数据开放时代

随着 1951 年电子计算机走出军方的实验室,数据不再是保存在纸上,而是以 0 和 1 的电子化形式保存在磁带和硬盘中。随后的几十年,硬盘在全世界的普及,并且价格越来越便宜,这为海量数据的永久保存提供了可能。这种电子化的数据累积是人类迈进大数据时代的起点。80 年代,互联网开始在美国普及,使得数据的复制、传播、整合更加方便。

美国的信息自由运动起源于民间对政治知情权的争取。1953 年,在新闻界的强烈要求下,国会开始草拟《信息自由法》,要求在不危害国家安全、不侵犯个人隐私的情况下,政府应该公开一切信息和文件。这使得政府和企业开始透明地公开在大众面前,有利于人民监督。例如要求自来水公司为客户提供年度污染报告,报告中必须列明水源的各项指标、污染物多少,以及是否超出了国家规定的限度。这些数据无异于向自来水公司施压,使其提高警觉、改善技术、最大限度地减少污染。同时也让消费者可以在不同的公司之间自主选择,强化了市场竞争。

虽然普查局已经有足够丰富的数据,但在 911 事件发生时,仍然无法知道当时 2 栋大楼里有多少人员以及分布情况,严重影响了救援策略。惨痛的教训,让政府管理者认识到,“白日人口”这一数据的重要性。白日人口指一个地区在 8 小时的上班时间内,其人口数量。普查局的困难在于,要完成这项统计需要多方面的数据,而这些数据在美国是分散的。因此必须对联邦政府和州政府多个部门的数据进行整合。911 事件直接推动了,数据整合项目的进程,这个项目被命名为 LEHD。这些数据包括,公司信息、居民就业信息、社保及纳税信息等,整个系统一开始就有 60 多亿条数据。如此大的数据量,也促进了计算机技术的发展。因为必须要有相应的存储、计算系统,才有能力处理这么大的数据。

从 2006 年开始,普查局为 LEHD 开发了一个基于地图的互动式服务——OnTheMap,无偿提供给大众使用。只要连上网,无论在世界的哪一个角落,都可以随时查询相关的数据。这些数据包括一个地区的人口数量、公司数量、就业人员年龄分布、薪水范围等各种商业和政治数据。

为了整合数据,政府和企业也在建立各行各业统一的元数据定义,也就是数据标准。

七、大数据时代

数据最早来源于测量,所谓“有根据的数字”是指对客观世界测量结果的记录。数据赋予背景,它就变成了信息,信息经过提炼总结成为知识。数据有三大来源:测量、记录、计算。

20 世纪 80 年代,美国就有人提出了“大数据”的概念。到了 21 世纪的前 10 年,尤其是 2004 年社交媒体产生后,数据开始爆炸。大数据一般来讲,是指容量大。这利益于计算机存储技术的飞速发展,可以存储相当大的数据记录。一个普通图书馆的藏书,只要 1T 的存储空间,大约一包烟大小的硬盘即可装下。

现在越来越多的数据都电子化、信息化,也兴起了物联网的概念。各种传感器安装在各种机器上,它们收集着大量的数据。每个人都拥有至少一部智能手机,每天都在产生数据:社交网络的状态信息、拍摄的照片、视频等。每个人都犹如一个信息系统、一个传感器,不断地制造数据。还有可穿戴设备,时刻都在记录主人的物理位置、热量消耗、体温、心跳、睡眠模式、步数等行为与健康数据。

通过大数据,亚马逊在 2014 年宣布了一项新专利“预判发货”,即在网购时,顾客还没有下单,就将包裹寄出。这利益于数据挖掘技术,听起来不可思议。

摩尔定律使人类保存数据的能力增强,社交媒体使人类生产数据的能力增强,数据挖掘使人类使用数据的能力增强。这是大数据的三大成因。

未来将是一个由数据驱动、由算法定义的世界,自动化将接管越来越多的工作。随着智能时代的到来,那些重复性的、日常性的工作将逐渐被机器人接手。

台风口上,猪也能飞

这是雷军的一句名言,说的是借助社交网络传播的台风,使小米顺势而飞。

2010年,小米公司成立,发布了基于 Android 系统定制的 MIUI 手机操作系统。2011年,发布小米手机。2012年发布第二代小米手机,全年手机销售 719万台。2013年发布红米手机,MIUI 用户超过 2000 万,全年手机销量达到 1870 万台。2014年,发布小米路由器、小米平板以及第二代小米电视。

发展速度,相当惊人!

产品篇

小米联合创始人黎万强先生将其归功于参与感。

第一,通过用户参与能够做出好产品;第二,好产品再通过用户的口碑来传播与营销。

口碑传播有以下三个核心,黎先生称之为“口碑铁三角”:

  • 发动机——产品
  • 加速器——社会化媒体
  • 关系链——用户关系(不是把用户当上帝,也不是把自己当上帝,而是和用户做朋友)

消费理念的变迁决定了产品的形态。

功能式  >  品牌式  >  体验式  >  参与式

功能式:在物资匮乏的年代,人们为了满足功能式的需求而消费,以物美价廉为准。
品牌式:商品开始丰富之后,广告开始盛行,品牌成了人们追求的东西。
体验式:像超市与体验店,食品好不好,可以先免费品尝,手机好不好,可以到店体验。
参与式:像小米一开始就让用户参与到产品研发过程以及市场运营。

社交网络时代,企业与用户之间的信息传递路径发生了改变。以前企业只能通过公共媒体向外界传递信息,现在通过网络,可以第一时间发出声音。

以往的软件产品,可能一年才升级一个版本。而小米 MIUI 系统每周都会升级,并设立新功能用户投票版块,以用户投票数来衡量新功能的价值,然后给予员工奖励。用户还会在论坛对新版提建议、反馈问题,以促进下一版的发展。

下一版要增加什么功能点,也是通过用户提出需求、投票来决定的。

用户体验的核心是为谁设计。产品迭代的过程是:能用(设计出目标用户能用的产品)、好用(把产品交互做好)、好看(把产品界面做好)。如果没有把握好为谁设计,那么产品再好用好看也是白费。

人才始终是最重要的。最重要的是团队,其次才是产品。有好的团队才有可能做出好产品。要寻找兴趣相投(最合适)的人才(最专业的)加入团队。作为老板,至少有两件事情是最重要的:找人和找钱。乔布斯说他大约把四分之一的时间用于招募人才。雷军为了找到合适的人,常常一聊就是近10个小时。

品牌篇

小米将其定位为“互联网手机”,以移动互联网应用服务为主,而不是以手机硬件利润为主。小米做品牌的路径与传统企业不同,它一开始专注于忠诚度,做出好产品,通过口碑传播不断强化这一过程,到了足够量级后,才投入去做知名度。粉丝是口碑传播的基础,粉丝效应不可设计,但可因势利导,给用户可参与与互动的方式。如小米周边产品(米兔玩偶等)、米粉节。参与感的顶点是“成为明星”,在米粉节上,就选出了几十个在各个领域有代表性的资深米粉,为他们专门制作了 VCR,请他们走上红毯,领取他们的“金米兔”奖杯。

创业之初,在品牌上主要考虑以下几点:

  • 中文名要易记易传播
  • 配套的顶级域名可获得
  • 商标可注册
  • 便于国际化推广
  • 生活中早已熟悉,本身带有色彩感和富于情绪

很多创意人员说起产品理念头头是道,但是连自己营销的产品重要参数都一知半解。产品的技术细节要详细地展示出来,因为专业的用户会去研究和比较。

剧场式发布会是小米最显著的标志之一,如何办好剧场式的发布会:

  1. 做沉浸感的发布会,现场布置越简洁越好。舞台不用花哨,最好就是一块黑幕布下一张LED屏就够了。过度修饰的复杂场景反而会形成干扰。
  2. 现场的座椅应该一致,毕竟大家都是来听产品介绍的,不是来摆谱的。有的发布会最前面半排还要搞成沙发,就会造成现场感不一致感。
  3. 发布会时长不要超过 90 分钟,因为这是听众疲劳感的阈值。
  4. 场内要简洁干练,元素集中。场外则可以多一些丰富的互动设计,让来得早的用户可以玩。
  5. 发布会的核心是产品,关键表现形式是演示文稿。这一核心要素需要在前期细致准备好,达到每一张都是海报级的,合理安排尖叫点,最好保证每 5 钟会出现一个尖叫点,贯穿全场才能做到全程无尿点。

互联网公关要练“不生气”功。互联网是注意力经济,一个品牌和事件的关注度,一定要有碰撞、有矛盾、有张力才起得来。所以,传播途中有不同的声音不但正常,还可能是好事,在其中因势利导、抓主流就可以了。一件传播事件中,如果有七成是正面声音就很好了,剩下三成负面的其实也无所谓。

新媒体篇

企业做自媒体的内容品质最重要的是“讲人话”,不要太形式主义和客套。小米公司内部不仅要求让员工成为粉丝,甚至还尝试让粉丝成为员工。小米在社会化媒体平台上投入的人力有上百人,充分的人力投入很重要。比如,为微博运营团队配备了完善的产品经理、主编和编辑、设计师以及软件工程师团队。

基于QQ好友关系,微信更适合做服务平台,而不是营销平台。

服务篇

用户在哪里就到哪里做服务,随时在用户身过,甚至不是用户上门,而是主动找用户。

传统的客服电话一般只在工作时间提供服务,但对于 90 后、00 后的年轻人来说,打电话往往是件很痛苦的事情,而上网聊天则是他们喜欢沟通的方式,因此小米开通了 7x24 小时的在线服务平台。小米一开始是在论坛提供服务,全体工程师、创始人都去论坛上解答用户的问题。后来用户都在玩微博,就直接组建了数十人的团队,专门在微博上和用户保持一对一的沟通。微信流行起来后,又马上组建了微信客服运营团队。小米也在百度知道和贴吧服务百度平台上的用户。

人是环境的孩子。在不同的环境下,人有不同的表现和自觉性。在一个对客户光鲜,对员工却将就的环境下,服务体系的员工难免把服务当成一份不得已去完成的工作罢了。用制度规范服务人员,他们的微笑不是发自内心的,是假的。你给员工提供怎样的办公环境,他就会回报你怎样的工作成果。

小米的经验是什么?

做一个好产品,吸引用户成为粉丝,形成社群。在社群的参与下,持续改进产品,使产品更符合用户的需求。社群自发宣传,产生口碑。

注:本文是《参与感》读书笔记。

虚拟机 VMware Player 使用笔记

VMware Player

VMware Player 是 VMware Workstation 的精简版,轻量级的虚拟机。它和 VirtualBox 差不多,占用系统资源小,安装简单。

先去官方网站下载 VMware Player,我下载的是 7.1.0 版本,大小只有 75 M左右。这个版本是多语言版,选择中文即可。

安装完后,新建一个虚拟机,设置与其它虚拟机软件一样,大同小异。事先下载好需要安装的系统的 iso 文件。然后在虚拟机设置中,点选 CD/DVD,看到右边的连接,点击“使用 ISO 镜像文件”,然后浏览选择本地已下载好的镜像文件。

设置中的网络适配器,一般默认为 NAT。安装好系统后,如果无法连网,则可以选择桥接网络,再重启虚拟系统。

如果发现光标在虚拟机界面中,无法移出,可以使用 Ctrl+Alt 释放光标。

CentOS 6.4 桌面版

我安装的系统是 CentOS-6.4-x86_64-LiveCD.iso, 配置是 1 核、 1G 内存。

需要高级功能,可以根据软件状态栏的提示安装 VMware Tools。如果是 Linux 系统,需要解压安装包,并且使用 root 权限执行安装程序。我的系统上,安装时间稍长,大约 5 分钟。查看系统负载,已经接近 1。安装成功后,可以在宿主机与虚拟机之间拖放复制文件,同时虚拟机的屏幕分辨率也会与宿主机一致。

CentOS 这个版本默认不支持中文输入,可以通过以下步骤来添加中文输入的支持。

在命令行中使用 root 权限执行如下命令

yum install "@Chinese Support" 

它会下载并安装支持中文的软件。然后在 System -> Preferences 会看到 Input Method 选项。点击打开对话框,然后点击 Enable input method feature 并选择 Use IBus (recommended)。然后进行添加输入法等操作。最后需要重启操作系统。