特色文章

第七周期 By Alex

这里是微信公众号「第七周期」的 WEB 站点,我会将公众号的内容同步发表在这里,记录我的成长过程。博客最好的用途就是可以沉淀一些优质的内容,希望可以给你带来思考和改变,欢迎关注。

网站最初搭建于 2014 年夏天,慢慢的成为了我生活中的一部分,15 年开通微信公众号,开始持续性写作,写作可以促进阅读和思考,不断学习,养成乐于分享的习惯。

从事移动医疗运营,负责数据运营工作,在这里你可以看到我的读书和学习笔记,还有关于数据分析、数据可视化知识的分享。当然,也有我对于生活的思考,希望你能喜欢我的文字。

欢迎扫码关注我的微信公众号——「第七周期」

图表案例——使用面积图模拟股票价格

本篇图表案例取自商业周刊,该图表通过面积图呈现某个时间段股票价格的变化情况。

跟普通图表对比,这张图有两个特别的地方,第一是纵坐标底部有截断,第二是网格线在覆盖在面积图前面。所以希望通过这个案例,可以学会怎么处理下面两种情况。

mark

  1. 纵坐标轴不均匀分隔,并且截断坐标轴;
  2. 将网格线覆盖在面积图前面。

**模拟数据源 **
由于对应图表原文的链接失效,所以无法找到最初的源数据,需要自己整理数据源。面对这样的一个面积图,横坐标和纵坐标数据很难对应。目前有一个比较方便的方法,那就是使用 EasyCharts 插件中的数据小偷功能,就可以将图表对应的数据源提取出来。获取插件和具体使用方法请看底部简介的信息,找到EasyCharts QQ交流群即可获得。

mark

初步图表

  1. 选中数据,插入图表,选择面积图,面积图填充颜色为RGB(108,207,246),无线条;
  2. 调整图表区域,使其落在 C9 单元格;
  3. 添加水平网格线,颜色为黑色,宽度为 1 磅;
  4. 选中纵坐标轴,设置最大值为 50 ,最小值为 10,单位为 10;
  5. 选中横坐标轴,横坐标轴设置,无填充,线条为实线,黑色。
  6. 设置横坐标轴的刻度线标记间隔为2,主要类型为内部。

mark

**截断坐标轴 **

经过上面的步骤,大概的图表格式已经出来,但是对比原图发现,横向坐标轴并不是显示从 0 开始,也没有截断标志,所以还需要进行如下处理。

  1. 选中纵坐标轴,转到坐标做选项,展开数字,选择自定义格式,在格式代码框写入 [<20]0,,点击添加。这段格式代码的意思是将坐标轴中小于 20 的值显示为 0,所以 10 就会显示为 0。
  2. 然后使用插入形状制作截断坐标轴的标志,放置在 0 和 20 之间。

mark

网格线设置

这时候的图表已经非常接近原图了,但是原图中的网格线是覆盖在面积图前面,Excel 默认是没有这个功能的,需要使用一些作图技巧,基本操作如下:

  1. 将之前处理好的图表复制一份。
  2. 将复制那份图表设置为无填充,无边框,面积图也是无填充,无边框,并且删除坐标轴、标题、副标题等,只保留网格线。
  3. 删除原图表网格线,将复制得到的图表拖到原图表处,调整使得两个图表重合。

mark

最后成果

图表已经基本完成,后期需要加上图表横坐标信息和数据来源声明,可以使用单元格也可以使用文本框,如果图表需要嵌入到 PPT 上,则优先考虑使用文本框,因为可以通过组合方式一起嵌入到 PPT。调整字体,一般使用 Arial 字体,调整至合适大小即可,最后的成果如下。

mark

获取源文件方法

进入第七周期或者 EasyCharts 公众号主页,回复「股票价格」即可获得。

本文由本人原创,并授权 EasyCharts 公众号首发,转载请注明出处。

低价选择的背后是更高的成本

国庆假期原本没有考虑回家,但是因为某些不可抗拒的力量,必须回家一趟。昨天在微信上买了回去的票,买票的时候发现,有几趟较早的车便宜 12 块钱。想着自己也能早起,就买较早的吧,还可以省点钱。

上车之后发现,这趟车不是平时坐的直达车,需要在广州和佛山市内拉客,无比后悔。问了一下司机几点能到,司机告诉我大概十二点,内心惨淡。按照平时直达车的预计时间是两个小时,现在整整多出了两个小时,而这两个小时换回来的仅仅是节省 12 元。

很多时候,我们愿意选择更低的价格,却不知道其背后需要承担更高的成本。更低的价格是可以看得见的眼前利益,更高的成本则是隐性成本,比如时间、机会、又或者是身体健康。我们愿意花时间到网络上面找免费的、排版并不友好的电子书,却不愿意到亚马逊、豆瓣、微信读书上面购买付费的。

当然,并不是所有低价或者免费的东西都不值得推崇。一些高价的,超出我们支付能力的东西我们可以尝试花时间去找免费的,或者更加低价的替代品。比如我可以理解学生暂时性的安装盗版系统和破解软件,因为这毕竟是一笔高昂的费用。

当我们选择更加低价的时候,我们需要清醒思考:低价背后隐藏着那些成本?我是否有能力支付承担的价格?而不是一味的追求低价。

禅定时刻:

外出吃饭,超市、便利店买东西,能用支付宝买单就用支付宝。支付宝可以随机减,虽然那都是一块几毛钱的事,但那也是钱啊。

普通人应该掌握的药学常识

昨天,在微信朋友圈热文上看到一篇文章,并且显示好友都在读。 文章标题:XXX你以为只是补肾?看后震惊了,一定要告诉家人! 文章介绍某个药品可以治疗 40 种疾病,老少皆宜,轻则感冒发烧,重则肿瘤癌症,统统都能治。那么,这样的文章能信吗?准确的回答:完全不可信。写的人是骗子,信的人就是傻子。

那么,普通人应该掌握哪些药学知识?

  1. 专业的事情交给专业的人,相信你的医生,首先参考医生的用药建议。
  2. 相信权威医学杂志和指南,因为这是相对可靠的资料。
  3. 学会看懂药品说明书,并且坚信你能看懂。
  4. 下载「用药助手」APP ,方便查看说明书;下载 「MIMS 中国」APP,方便辨别药物。
  5. 服用了某个药品,病情好转,不能 100% 说明药品对该疾病有效,可能是心理安慰。
  6. 有的病不用吃药可以痊愈,人体有自愈功能。
  7. 不要轻易向身边好友推荐未经科学验证的偏方。
  8. 大众媒体的健康养生文章大多不可信,能不相信就不信。
  9. 我说的可能都是错的。

禅定时刻:

微信公众号「冀连梅药师(ID:ji-lian-mei)」可以获取到专业、实用的药学知识,多了解药学知识,可以给你和家人带来好处。

当知乎遇上长尾理论

很早之前就听说过《长尾理论》,但是一直没有读,终于在假期拿起 Kindle 开读。读起来真是津津有味,理解起来也不费劲,通过大量的案例阐述,使得书的内容无限贴近商业现实。

简单解释一下长尾理论:在一个细分市场里面,大众热门商品占据该市场的大部分销量(下图红色部分),销量小但种类多的产品(下图蓝色部分),累积总销售可以接近热门商品,甚至是超过热门商品。这些单品销量较少的商品称为利基商品,利基商品组成一条长长的尾巴,称之为长尾。

mark

在长尾理论提出之前,商业活动信奉的是帕雷托 80/20 法则。认为 20% 的热销商品可以带来 80% 的销售。所以在成本有限的情况下,商家将会放弃那 80%的低销品(长尾商品)。但是长尾理论作者认为,那 20% 热销品里面,并不都是优质品,80% 的低销品并不都是劣质品。所以不应该放弃 80% 的低销品,尤其是互联网时代。这些长尾商品加起来的销售抵得上大众热销品,并且有可能在里面发现新的 20% 热销品。

就在昨天,我在知乎看到了一个两年前提的问题,关注人数为 3 人,只有一个人回答,没有一个人点赞。当时我觉得这个问题挺有意思的,首先在这个公众号上面写了一篇文章,然后再将文章贴到知乎上面。两天时间,我的答案获得了不少的赞,并且这个问题有了更多的关注和答案。在我写下这篇文章之前,关注这个问题有 444 人,回答 38 人。

我想知乎这个问题又是一个很好的例子,这些不受青睐的问题,属于长尾问题,一直躺在那个地方,占用了知乎服务器几十个字节。一旦有了比较精彩的答案,就会重新焕发光彩,赢得知友的关注,成为那 20% 的热门问题。

如果你去读这本书,你会发现书上面有更多比知乎这个例子更有说服力的例子。你也可以从平时的工作和学习中总结这样的规律,比如你可以认为:你就是长尾中的一员,并且是优质的那种,总有一天发掘出来成为受人关注 20%。

Power BI 更新:将 Power BI 报表导出 PPT(预览版)

10 月 17 日,Power BI 团队博客更新了一篇文章,文章公布了 Power BI 的一项新功能——将 Power BI 报表导出 PPT,目前这个功能为预览版,需要后期不断完善。个人认为这个功能在今后会非常重要,可能会颠覆过去我们在 PPT 和 Excel 制作报表的习惯?不相信?继续往下看。

在过去,如果我们需要将 Power BI 制作好的报表放到 PPT 上,只能使用截图,并且是一页页的截。截图之后就是静态图片,失去了 Power BI 交互式图表的特性。但是很多报告,我们必须需要通过 PPT 来展示。要想在 PPT 上面做出交互式的图表,却又非常费劲。所以,截图是一种妥协的选择。在 Power BI 发布的新功能中,我们可以将制作好的 Power BI 报表一键导出为 PPT ,无需一页页截图。但是目前导出来的 PPT 依旧是图片形式,不是动态图表。我相信这是一个好的开始,起码 Power BI 团队意识到了用户的需求。

目前只能导出报表图表,不能导出仪表盘图表,导出操作步骤为:选择报表—文件—导出到PowerPoint(预览)

对于这个新功能,有以下几点说明:

  1. 只能在 Power BI 网页版导出;
  2. 一页报表导出来就是一张 PPT,一份报表导出来就是一份 PPT;
  3. 需要导出的报表不能超过 15 页;
  4. 报表中的可视化图表在 PPT 中以图片形式存在,没有交互性;
  5. 导出来的图片只显示导出前在报表中显示的区域内容;
  6. 报表中的文本框导出来后,可在 PPT 中编辑;
  7. 导出来的 PPT 会自动生成首页图、时间、报告主题、报表链接等内容;
  8. 点击每张 PPT 都可以跳转到对应的报表链接页面。

虽然这个新功能还是比较鸡肋,但是相信以后可以直接将 Power BI 的可视化图表插入到 PPT 中,可以实现在 PPT 中展示交互式图表。

微软的这款新产品,能让你从繁琐的工作中解放

几个月前,微软发布一款新产品,名字叫「Microsoft Flow」,翻译过来就是微软自动化工作流。微软给这款产品的定义是:在你最喜爱的应用和服务之间创建自动化工作流,以获取通知、同步文件、收集数据等。简单解释:用户通过创建规则,使得应用或者服务之间产生关联,关联之后的应用或者服务到达设定的条件时,就会触发连锁反应。比如:设定自己发送的朋友圈可以同步到微博;在 Instagram 点击喜欢的图片保存到 OneDrive 上。

Microsoft Flow|center

这类应用和服务称为 IFTTT (If this then that 的简写),并且有个网站和应用就叫 IFTTT。通俗的来讲,IFTTT 的作用就是如果触发某一件事,则执行设定好的另一件事。IFTTT 的宗旨是:让互联网为你服务,它就像是一座神奇的桥梁,可以连接我们平常工作的各种网络服务,自动为我们处理一些繁琐的工作流。

IFTTT|center

其实 Flow 跟 IFTTT 非常相似,都可以称为类 IFTTT 应用,也叫自动化工作流应用。但是我个人认为二者还是有些许不同,从我的使用感受出发, IFTTT 更多的是用来收集和分享,比较适用生活和学习。而 Flow 更加注重工作和效率,因为可以跟微软其他办公工具进行无缝连接。

目前 Microsoft Flow 支持连接 60 多种服务,处了微软自己的服务和应用以外(包含 Office 365、Onedrive、Outlook、SQL Server等),还包含了大量的其他日常使用的服务,比如 Twitter、Instagram、Dropbox等等。
Flow 支持的服务

针对上面提到支持的服务,Microsoft Flow 提供了不同服务间连接的模板,在模板的支持下,我们可以快速创建我们想要的 IFTTT 服务。除了可以选择模板之外,我们还可以选择手动创建自己想要的 IFTTT 服务,使用起来非常灵活。

Microsoft Flow 提供的模板

下面通过我的一个实际需求,演示如何使用 Microsoft Flow 创建我们想要的自动化工作流。我的需求是将上传到 OneDrive 特定文件夹的新文件同步到 Google Drive 上面,实现文件多备份。

第一步:创建流程。访问 Microsoft Flow官方中文网站 flow.microsoft.com/zh-cn/,在我的流程页面右上角找到从模板创建。
创建流程

第二步:选择模板。在模板页面找到对应的模板,可以通过顶部的筛选器筛选模板。找到对应的模板之后选择,并且确认使用该模板。
选择模板
确认模板

第三步:账号授权。接着就是需要登录对应的账号进行授权,这里就分别需要登录我的 OneDrive 和 Google 账号进行授权。
账号授权

第四步:选择需要同步的文件夹和同步的位置,选择同步的文件和自动同步到同步位置,没有选择同步的文件下的文件是不会同步的。选择文件夹之后就可以点击右上角的创建流程按钮,即可创建成功。
选择需要同步的文件夹和同步位置

简单的几步就可以完成一个自动工作流,回到我的流程就可以看到自己创建的工作流,可以选择关闭或者删除工作流,也可以修改工作流。
已创建的工作流

Microsoft Flow 可以做的事情非常多,只要我们学习工作上有需求,都可以尽情的发挥想象力,创建切合自己实际的工作流,提升我们学习和工作效率。

Python 字符串大小写转换

通过upper()lower()title()capitalize()内置函数实现字符串大小写之间的转换

# _*_ coding:utf-8 _*_

str = "www.drugnotes.pw"
#将所有的字母转换为大写
print (str.upper())


#将所有的字母转换为小写
print (str.lower())

#将整个字段的第一个字母转换为大写,其余字母转为小写
print (str.capitalize())

#将每个单词的首字母转换为大写,其余字母为小写
print (str.title())

#通过切片器的形式可以对任意位置的字母进行大小写转换
#将前两个字母转换为大写,后面转化为小写
print(str[0:2].upper+str[2:]lower())

打印输出结果为:

WWW.DRUGNOTES.PW

www.drugnotes.pw

Www.drugnotes.pw

Www.Drugnotes.Pw

WWw.drugnotes.pw

练习题:

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]:

#  _*_ coding:utf-8 _*_

方法1:直接使用capitalize()函数将list上面的首字母改为大写,其余为小写

def normalize(name):
    return name.capitalize()
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)

方法2:直接使用title()函数将list上面的首字母改为大写,其余为小写
def normalize(name):
    return name.title()
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)

方法3:使用切片的方式获取每个将list里面的所有元素的首字母改为大写,后面的为小写

def normalize(name):
    return name[0:1].upper()+name[1:].lower()
L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)

以上就是关于 Python 大小写转换的代码实现。

Power BI 简明教程(1):初识 Power BI

这是 Power BI 简明教程的第 1 篇文章,也是本人第一次尝试专题写作。作为一个 Power BI 使用者,我对这款产品满怀期待,希望可以得到 Power BI 更多的精髓。跟大家一起在这里学习和讨论 Power BI,相互学习,共同提高。

Power BI 是什么?

Power BI 是微软在去年推出的一款数据可视化工具,可以通过 Excel 、数据库、网页等数据导入或者连接,经过数据处理,绘制等操作,最后生成交互式报表。Power BI 的操作界面跟我们日常使用的 PPT 和 Excel 非常相似,并且 Power BI 采用鼠标拖拽视图的形式绘制图表,所以只要会使用 PPT 或者 Excel 制作图表,就很容易上手 Power BI。

Power BI 操作界面

Power BI 作为微软重点的可视化产品,被认为直接跟元老级可视化产品 Tableau 竞争可视化市场。所以微软非常重视这款产品,专门为此成立了几十人的开发和设计团队,不断的强化 Power BI 的功能,拓展可导入的数据源和拓展图表库。最为关键的一点就是 Power BI 采用免费政策,非常适合可视化工具初学者学习使用。

Power BI 有什么?

微软为 Power BI 分别开发了 Power BI Desktop(Windows 桌面版)、 Power BI Online(在线版)、Power BI Mobile (移动版)以及嵌入式。Power BI Desktop 目前只提供 Windows 系统,使用 Mac 的同学只能使用在线版或者移动版。移动版提供 IOS 、Android 以及 Windows Phone 三个版本。通过登录账号,桌面版、在线版和移动版支持数据同步,随时随地都可以访问自己的数据报表。并且通过在线版添加协作账号和分享链接将自己制作好的报表分享给自己的同事,实现报表共享功能。

应用类型

Power BI 可以做什么?

数据获取:Power BI 作为一款数据可视化工具,最大的用处就是将导入的数据转化为交互式可视化图表,让数据更加直观,易读。目前 Power BI 支持 60 多种常见的数据导入和连接,可以满足不同公司、不同业务部门需求。
用途介绍

数据清洗、建模和更新

Power BI 的作用不仅仅只是简单的将数据呈现为图表,还可以对数据进行塑形、清洗、汇总、建模等。比如我们需要呈现一个月的销售情况,我们可以直接将下载得到的销售表格导入到 Power BI ,Power BI 会对特定数据进行透视汇总处理,可以直接呈现每个商品的销售总数量以及销售金额等等数据。告别过去在 Excel 数据透视、新建汇总表格,插入图表等步骤,大大的提高的工作效率。除此之外,Power BI 还可以随时随地对数据进行更新,如果数据源新增或者修改,只要在 Power BI 上面点击刷新,数据就会同步过来。

清洗数据

数据可视化

Power BI 官方默认提供 20 多种常见的图表类型,都是日常使用最为广泛的图表,绝大多数情况下能满足我们的需求。通过各种类型的图表搭配使用,功能更加强大。除此之外,Power BI 还在官网上面提供了丰富的拓展图表库,如果默认的图表搭配使用仍然不能满足需求的话,那就可以选择增加拓展图表。

放几张通过 Power BI 处理得到的图表,颜值高到令人发指。









分享你的报告,随时随地查看

通过发布功能,可以将制作好的 Power 同步到云端,使用在线版或者移动端登录之后就可以查看。除此之后,还可以邀请同事朋友参与报表制作,也可以分享报表链接给相关同事。

除了上面提供的这些功能之外,Power BI 还有很多功能,可以解决很多我们日常数据可视化,数据汇报的问题。更多的功能会在后面的教程分享提到,由于本人也是在熟悉 Power BI 阶段,所以希望可以和大家一起学习,一起进步,继续前行。

欢迎继续关注 Power BI 简明教程,下期再会。

友情提示:Power BI 官方指导式学习教程中文版已经全部更新,阅读体验更佳,学起来更加容易理解。直达地址为:Power Bi官方教程文档

精读《乡土中国》

作者简介:

费孝通(1910年11月2日-2005年4月24日),著名社会学家、人类学家、民族学家、社会活动家,中国社会学和人类学的奠基人之一。费孝通著述浩繁,其作品《乡土中国》和《江村经济》以及晚年《中华民族多元一体格局》是研究中国经济、社会和文化的必读的书籍。

再版序言:

这本书在 1947 年有三联书店第一次出版,37 年后,三联书店建议作者重新出版这本书。这本书收录了 1946 年作者在云南大学和西南联大的“乡村社会学”课程的内容,并且整理为 14 篇连载文章,最先发表在《世纪评论 》杂志上。

这本书和作者的其他报告著作不一样,它不是中国社会一个个具体的描写,而是从具体社会中提炼出来的一些概念。它包含了中国基层社会的一种特具体系,支配着中国社会生活的方方面面。

乡土本色和文字下乡:

中国几千年的历史来看,中国的基层本质是乡土性的。「土」字在现代社会虽然带有蔑视的意味,这也是对中国基层的最清晰的评价。「土」就是意味着泥巴,因为生活在乡下,离不开土地,种地是普通人最基本的谋生手段。随着城市化的进展,文字开始下乡,农民开始进城。过去的乡土社会里面,人类大多是通过动作、气息、眼神等“特殊语言”进行交流。文字来到乡下就显得多余了,变得麻烦。在现代人的眼里,乡土农民就是“愚”,但是这些并不是乡土农民的智力问题,而是他们的知识问题,就好像现代城市人来到乡土农村之后不知道五谷一样,都是属于知识上的“愚”,并非智力上的“愚”。

差序格局的私和家庭关系:

中国乡土社会的最大的毛病就是私,就是那种“各人自扫门前雪”的私,其实除了乡土农民之外,中国的城市居民也是普遍存在这样的私。这种私是因为中国乡土社会基层结构是一个“有一个个私人联系所构成的网络”的差序格局。中国传统社会就是一个为了自己可以牺牲家庭,为了家庭可以牺牲国家,为了国家可以牺牲天下的社会。跟西方的以团体格局为基层的社会结构不一致,中国主流是以自我为中心,然后慢慢的向外展开。

中国乡土社会中的家庭界限没有西方家庭的界限那么清晰可见,无论是血缘还是地缘都是难以区分,可以是很大,也可以是很小。西方社会主流家庭概念就跟一捆柴一样,绑在一起的就是一个家庭,并且每一根柴都是只能放在一个家庭里面,界限非常的清晰可见。但是在中国的乡土社会,每一个人就像是扔进水池里面的一块石头,他的家庭关系就像是扩散的水纹一样,可以不断的向外延伸,可以是几圈波纹,也可以是无穷无尽。总的来说还是和差序格局一致的以自己为中心的向往展开,你的家庭可以是很大,大到整个国家;也可以是很小,小到只有的你和你的父母,甚至是你自己一人。

乡土社会的感情定向:

将个人对于感情的发展方式称之为「感情定向」,那么乡土社会的感情定向就是亚普罗式的,他们认为宇宙安排了一个完善的世界给我们,我们只需要守护它,维持它就可以了。但是现代社会却是浮士德式的,他们将冲突看成是这个世界的基础,生命是阻碍的克服,没有了阻碍,生命就没有了意义。所以男女之间建立的那种亲密关系的方式早已经成型。乡土社会需要维持这个秩序,一切违反这个秩序的要素都会被遏制。所以男女之间的鸿沟就此架起,乡土社会是一个男女有别的社会,所以也是一个安稳的社会。

礼治和法制:

中国的乡土社会并不存在法律,因为中国的乡土社会是一个礼治社会,之所以能过维持礼治,并不是因为权力的存在,因为礼治是在中国的传统之上的。法律是依托在政治权力的,现代社会是靠政治权力来执行法律,过去部落也可以是一种政治权力。在中国乡土社会由礼治转变为法制的过程当中,中国现行的司法制度在乡土社会当中产生了特殊的副作用。那就是破坏了原有的礼治社会,但是有没有建立可靠的法制秩序。

社会权力:

主流的权力形成分为两种形式,一种是由社会冲突发展形成的,另一种是依靠社会合作形成的。社会冲突表现的是权利在不同的团体或者阶级之间流动,支配权利的可以发号施令。为了保持自身所拥有的权力,那就需要将冲突持续下去,这种权利称之为横暴权力。然而从社会合作这一方面来看,权力是因为社会分工而产生了,因为社会分工的原因使得谁也离不开谁。也是因为社会分工的原因使得每个人付出更少却可以享受更多。由于牵涉到自身的利益,所以我们就需要干涉别人或者被别人干涉,我们都拥有一种干涉别人的权力,称之为合作权力。

在乡土社会的权力结构里面,除了上面的横暴权力和合作权力之外,还存在着另外一种权力,被称之为教化权力或者长老权力。从小的方面来讲,教化权力可以是亲代之间上一代对于下一代教化得到的权力,教化权力是不存在横暴和合作的。从大的方面来讲,教化权力可以来自一个人生存在环境的文化,文化教化一个人是不需要横暴和合作的。

所以在一个变化较少的时代里面,文化是稳定的,不会因为受到过大的冲击而导致文化的溃败,我们就长时间生活在一个很传统的世界里面。当时代的变化远远的大于文化的变化的时候,权力很难被教化而得到,往往都是通过横暴或者合作产生权力,这时候的文化也就不能教化人类而产生教化权力。

血缘和地缘:

是指人和人的权力和义务根据亲属义务来决定,也就是根据生育和婚姻的构成来决定。过去的乡土社会就是一个血缘关系的社会,这样的社会是稳定的,缺乏变动的。这里的稳定指的是社会结构的一致,填入结构中的地位的个人是不能静止的,会存在死亡和新生,生育就成了维持社会结构稳定的基础。而在商业社会发展以及城市化的运动中,过去的血缘社会中的人存在着不断的变动和扩张,社会结构也从血缘社会转变为地缘社会。地缘社会是契约社会的基础,指的是陌生人之间也可以进行约定,不像过去血缘社会只能跟血缘关系的人进行契约。从血缘结合转变为地缘结合是社会性质的转变,也是社会上的一个大转变。

乡土社会变迁的欲望和需要:

我们的乡土社会并不是静止不变的,只是乡土社会比现代社会变得慢而已。社会变化分为社会继替和社会变迁,社会继替指的是任务在固定的社会结构中流动,社会变迁指的是社会结构发生了变动。

随着社会的变化,在现代社会里知识即是权力,因为在这种社会里生活的人要以他们的需要去做计划。过去乡土社会依靠经验,我们不需要计划,因为时间过程中,自然替乡土社会的人选择出一个足以依赖的传统的生活方案,个人依着欲望去活动就得了。

本文最先发表在微信公众号「空谷幽兰」,扫码可关注

一切都是最好的安排

6 月 28 日年级毕业酒会,不少人喝的烂醉;6 月 29 日毕业典礼,这是我们大学期间最后的毕业流程。7 月 1 日,领完毕业证之后各奔东西,有人选择趁人不注意的时候偷偷离开;有人选择拥抱之后痛哭;有人选择将所有人送走后,留自己一人在学校享受最后离别的滋味。

回头想起,班里面除了转走到临床的五个男生之外,其他同学都陪伴着各自四年,整整的四年。还有两个女同学军训结束之后才从其他的班级转来,似乎转走的五个男生和转进来的两个女生都是冥冥之后最好的安排。

最让我感到惊讶的是那两个从来没有报到的本来属于我们班的男生,对于他们的记忆,仅仅是他们在班级名单上面的名字,具体名字现在已经记不住了。我在努力的回忆着自己以及班级过去四年里所发生的一切事情,如果假设这些事情都有这两个在参与,那么最后的结果又会是怎样呢?

假如那两个男生开学的时候来学校报到了,并且有一个男生入住了我的宿舍,那我跟他成为最好的哥们?假如成为了最好的哥们,我们有没有可能因为一起打架被学校开除了?又或者我们各自不满对方,最后相互干架,还是被学校开除了呢?

假如那两个男生开学的时候来学校报到了,并且他们都长得高,并且会打篮球,那么我们班在参加篮球赛的时候是不是就不会止步八强?甚至是拿到冠军?又或者因为他们的存在,我压根就没有机会上场?

假如那两个男生开学的时候来学校报到了,并且他们都是学习能力强,有领导力。那他们是不是就会带领我们班级保持年级排名第一?又或者他们是学渣,会不会严重的拉低了我们班的平均分?

假如那两个男生开学的时候来学校报到了……实在有太多的假设了,但是这些假设都会不会存在,因为我们无法改变过去,也难以判断未来。

我们认识的每一个人,在我们身上发生的每一件事,我不是受我们单一的因素影响,而是牵涉到我们周遭的一切。我们自己和身边人的每一个选择都会在某种程度上决定了我们今后的生活是怎么样的,有的选择会立竿见影的影响到自己的生活,但是很多都不是,而是渐微式地渗入到我们生活的最深处。

虽然面对这样的生活,我们似乎很被动。但是不要悲伤,这或许这是上天最好的馈赠。就像那两个同学没来报道之后,我还是觉得我的大学所发生的一切就是上天最好的安排。

Excel 表格生成字典

今天下午同事向我请教了一个问题,将表格里面的那些字段转变为一段代码,代码的样式是技术给到的,其实代码的内容是一个个的字典。

[
    {
        name            : '五氟利多片',
        goodsName       : '剂型 商品规格',
        price           : 99.00,
        type            : '处方药',
        approvalNumber  : '国药准字H45454545',
        factory         : '湖南制药厂'
    },
    {
        name            : '五氟利多片',
        goodsName       : '剂型 商品规格',
        price           : 99.00,
        type            : '处方药',
        approvalNumber  : '国药准字H45454545',
        factory         : '湖南制药厂'
    },

表格里面包含数据有 400 多条,可以手动的将这些数据的每一个字段填写到对应的位置,但是这样做起来就会显得非常的麻烦。我尝试用编程的思维去批量的进行处理,后来想起了操作数据库,写 SQL 语句的人也会遇到这样的问题,所以尝试用 Excel 字符串连接的的方式去生成相似的内容,然后通过快速填充的方式进行填充。最后语句是这样的:

="{
  name   : '"&A2&"',
  goodsName  : '"&B2&"',
  price   : "&D2&",
  type   : '"&C2&"',
  approvalNumber : '"&E2&"',
  factory   : '"&F2&"'
 },"

其实就是简单的使用 & 符号将字符串和单元格引用连接起来,下来的时候就会自动填充,得到了所有数据之后就整列复制-粘贴为数值,然后再将数据复制到文本编辑器,可以选择使用 NotePad++,最后保存为 txt 格式。

这样的功能在 Excel 上面虽然很少用到,但是使用 & 进行字符串连接是经常用到的。而且这些连接功能常常是以辅助的形式出现,所以比较少人会注意到,但是只要你熟练使用,并且把它记在心里,那么你的 Excel 视野就别回的更加的开阔。

取色器的三种用法

在制作 PPT 或者是制作数据报表的时候,我们都需要进行填充颜色。一个 PPT 做的好不好?一份报表做的专业不专业?看填充的颜色就能看的出来。所以,选择填充颜色非常重要,由于我们不都是设计出身,我们不能理解三原色(RGB)的配色原理,更加不能理解十六进制颜色码。并且我们不能靠只会开发软件的微软提供的默认颜色,毕竟微软开发的软件都不太好看,这是一个事实。但是,我们也不能就此放弃,我们可以不需要懂什么配色原理,只要找到自己喜欢的颜色,大喊一句「卧槽,这颜色真好看,是在太好看了」,然后选择颜色填充。真的,因为这世界上有一个神器叫做「取色器」。

取色器在 Photoshop 上应用的最广泛,只要选中这个神器,放到你想要的那个颜色上面“吸一吸”(点击一下鼠标)就可以将颜色选中,然后填充到相应的地方。在 Photoshop 将取色器用烂了之后,微软终于在 2013版本的 PPT 上面加入了这个神器,可以说是后知后觉。

在 PPT 上面,只需要选中需要填充的文字或者对象,然后点击填充颜色按钮,就会弹出来可以选择的颜色,在最底下就有一个取色器。有的人的电脑可能不能弹出这个东西,那是因为你的不是 2013 或者 2016 版本 Office套件,最好的解决方法就是升级,彻底又好用。这个取色器的使用方法和 Photoshop 上面的取色器使用方法基本一样,没有太多的难度。虽然使用起来非常的方便快捷,但是有一个硬伤,那就是只能取当前界面的颜色,不能取外面的颜色,这是非常糟糕的一点。

Drugnotes

有时候我们需要的颜色不一定存在那张 PPT 上面,那怎么办?过去我是先将原来的图片放进来 PPT,取完颜色之后再删除,当时的我被如此机智的自己深深的感动了。

直到有一天,我发现了 ColorPix。

ColorPix 是一款免费的绿色小软件,整个软件只有 605kb ,免安装,使用非常简单。只要运行程序,将鼠标放置在某个颜色上面,然后就可以返回 RGB 值或者是十六进制码这些参数。你可以凭借你惊人的记忆力记下这些数字,也可以按下空格键锁定颜色,随意切换页面进行填充,你还可以点击这是颜色参数后面的数值进行复制,是不是感觉好厉害?

Drugnotes

Drugnotes

说实在 ColorPix 已经解决了很多取色的问题,小巧又方便,但是对于有些懒人来说,就是这么一个小小的软件都不愿意下载,更加不愿意安装最新版的 Office 套件,那该怎么办?

别急,还有 QQ 截图。

找到你想要的颜色,在 QQ 登录的状态下截图,Windows 系统使用快捷键「Ctrl+Alt+A」。然后将鼠标停留在某个颜色上面,你就会发现 RGB 的值就出现在下面。

Drugnotes

卧槽,这是技巧真好用,实在太好用了!


今日推荐
 
褪墨·时间管理,他们的口号是「把事情做的更好!」。一个分享时间管理,学习技巧、个人提升等知识的开放性博客。该博客已经运营多年,虽然现在上面的很少更新文章,但是过去发表的那些文章,什么时候去读都不会觉得过时,依旧让人受益匪浅。网址:www.mifengtd.cn


文章首发在「Drugnotes」微信公众号

Drugnotes 公众号

如需转载,请注明原文出处,原文链接:http://www.drugnotes.pw/%E5%8F%96%E8%89%B2%E5%99%A8%E7%9A%84%E4%B8%89%E7%A7%8D%E7%94%A8%E6%B3%95.html

在枯燥的工作中提炼

前几天,手头上有一批医院的数据库需要进行处理,工作的内容比较简单也比较复杂。说它简单是因为只要核对两份表格是否存在重复的医院,说它复杂是因为两份表格里面的医院名称不一样,但是有可能某些医院实在两份表格里面存在重复的。所以解决问题的方法就是通过不断调整 A 表格里面的医院关键字在 B 表格里面进行搜索,还需要针对 A 表中的医院到网络上进行搜索确认是不是存在别名或者简称,所以这项工作是复杂的。

好啦,工作的内容大致就是这样,找来几个小伙伴帮忙一起完成。当他们查收工作表格和阅读规范文档之后,一脸茫然的叫我过去讲解具体的流程。我讲完流程之后,他们的表情告诉我他们的内心是崩溃的。见此情况,我故作轻松,踌躇满志的说:「现在你们只是第一次做,先尝试,慢慢就会上手的」,接着就扔下一句「在做的过程中有问题我们再讨论」,然后走开了。

虽然后来我们也遇到了很多的问题,但是那些问题都在意料之中。并且随着我们工作的深入,问题也变的越来越少,问题的类型也由原来的流程类型问题转变为搜索技巧,然后再转变为内容真实性判断。这说明我们对刚开始工作的不熟悉走向熟悉,然后去摸索怎么把工作做得更加准确无误。

其实,在这个过程中,我们是有成长的。

曾经我也做过这样类似的工作,在刚开始的时候我也抵触的,当这项工作完成之后我发现其实收益非常的大,最大的收益就是在我们的搜索引擎技巧和判断搜索信息的质量。

第一个好处就是习得一些 Excel 技能。在整个过程中,我们需要在表格上面进行快速的切换,对于一些 Excel 新手来说,很多快捷键并不熟悉,这个工作可以让他们熟练 Ctrl+F 和Ctrl+pgdown 或者 Ctrl+pgdown。这些小功能和技巧虽然非常简单,但是都必须熟悉之后才能用的顺手。

第二个好处就是对搜索引擎和搜索结果质量判断有更多的认识。搜索引擎是我们最大的获取信息的人口,起码对我来说是这样,所以掌握关键词技巧和判断结果质量的好坏变得至关重要。在频繁的更换关键词信息和判断信息质量的操作中,我们的搜索技能得以精进。

好处还有很多,比如我们还知道了医院的命名是有规律的,也是没有的规律的。说不定以后都能判断哪些医院是莆田的,懂得一些就医的常识。

读者可能都会觉得这是一篇鸡汤文,其实你尝试认真的阅读里面的每一句话,然后细心体会、琢磨,你就会发现这篇文章真的是鸡汤文。

戴维·哈斯塔姆:叙事性作品的想法

戴维·哈伯斯塔姆 (David Halberstam 1934年4月10日-2007年4月23日),美国著名记者和作者,因详细报道越南战争时间而获得 1963 年普利策,著作有《出类拔萃之辈》和《最寒冷的冬天:美国人眼中的朝鲜战争》等。

作者针对如何进行叙事性写作写了一篇文章,文章收录在《如何讲好一个故事》这本书中。戴维·哈伯斯塔姆在文章中总结了他 52 年的叙事性写作经验,从他的大量作品当中都能体会到这些经验,我们不妨用来学习学习。

第一,写作之前就要有一个明确的好点子(或好想法),好点子(或好想法)是一个故事的起始,也是贯彻整个故事故事的主线和目的,作者在文章中写到:

要把叙事性的东西写好,你就必须得能够回答下面这个问题:这个故事要讲什么?换句话说,对于一个叙事性的新闻报道来说,关键的是这个故事的点子或者想法,或者,是它的概念。所谓写作,所谓叙事性写作,就是让一个想法从诞生一直走到成熟、走到结出果实。

作者在写讲述越南战争的经典之作——《出类拔萃之辈》的初期就是一个很简单的想法,这个想法就是让了弄明白那批被这个时代认为“最聪明的执政者”是如何将美国人民带入战争的泥沼,给国家带来了沉痛了灾难。作者就顺着这样的一个想法,花了四年的时间进行采访和收集可靠资料,最后书籍顺利的完成。作者后面再次强调了想法的重要性:

捉住一个想法,一个中心的点子,然后去努力落实它,发展它,把它变成一个故事,变成一个讲出了今天我们的生活方式中某些东西的故事,就是叙事性写作的根本所在。

第二,时间对于写作者是非常重要的,对于叙事性写作的作者来说,时间不仅是花在实际的写作上面,还需要花在大量的调查、采访以及阅读上,戴维·哈伯斯塔姆在他完成《出类拔萃之辈》之后强调说:

因为这本书的成功,后来我才能够得到相当宽裕的预付款,这样我就能有时间用我想要的方式进行写作。对于一个纪实作家来说,时间真的是至关重要的要素:你能做的采访越多,你的作品就越厚重。

戴维·哈伯斯塔姆最后的一本书是《最寒冷的冬天:美国人眼中的朝鲜战争 》,为创作本书,他走访了诸多知名图书馆和研究机构,从浩如烟海的资料中探寻历史的隐秘;他访问了100多位散布美国各个角落的朝鲜战争幸存老兵,描绘和剖析了二战后这场“为平局而死”的战争,最后从独特的角度得出了关乎历史和未来的一系列发人深思的新结论。

第三,读书,无论是什么类型的写作,如果想要持续大量的产出,都需要大量的阅读,需要大量的输入。

读书,读好的纪实性的书。读那些非常好的新闻杂志。

戴维·哈伯斯塔姆还认为:阅读侦探小说也是锻炼写作的好方法,没有人能够比好的侦探小说家更会构建一个故事。

戴维·哈伯斯塔姆的很多作品被奉为经典,他的作品和写作理念独树一帜。2007年4月23日,就在《最寒冷的冬天》付梓之际,在为下一部作品进行采访的途中,戴维·哈伯斯塔姆 在前往北加州采访退休美式足球选手的路上,在旧金山南部的圣马特奥县被另一辆汽车横腰撞上,当场死亡。车祸发生的前两日晚,哈伯斯塔受邀在加州大学柏克莱分校就“新闻与新闻事件及其历史价值意义”为题作演讲。

(完)

最好的告别

作者简介

阿图·葛文德,白宫最年轻的健康政策顾问,影响奥巴马医改政策的关键人物。哈佛公共健康学院教授,哈佛医学院教授,《纽约客》等杂志专栏作家。2004年被《新闻周刊》评为“20位最具有影响力的南亚人物”之一;2010年《时代周刊》全球“100位最具影响力人物”榜单中唯一的医生。至今出版书籍有《阿图医生(1、2季)》、《医生的修炼》、《医生的精进》、《最好的告别》等。

总序,生命之思与医学之唔

在新书《最好的告别》中,葛文德变得宿命起来,他深知,医学在怎么发愤图强,依然无法摆脱一个人很确定的结果,那就是用于也无法战胜死神,生命的最后一课必定是衰老与死亡。从医学不确定性和认知到对死亡必然性的豁然,葛文德大夫完成了一个医生最完美的精神发育,也昭示了现代医学在高技术、高消费驱使下飙车遇阻的警示。

人们必须接受生老病死这样的一个事实

现代科学深刻的影响了人类生命的进程,跟历史上任何时代的人比起来,我们活的更久、生命质量更好。科学进步已经把生命进程中的老化和垂死变成了医学的干预科目,融入了医疗专业人士的“永不言弃”的技术追求。但是,无人可以逃脱生命的悲剧——那就是,生命就是一条单行线,从出生的那一天开始,每个人都在不断的凋亡和老去。救治失败不是医学的无能,而是对生命的尊重。

活到 100 岁的代价

过去,能够活到老年的人并不多见,而那些能够活到老年的人常常作为传统、知识和历史的维护者,具有特殊的作用。他们往往维持着一家之主的地位和权威,支配着政治的权利。随着科技、经济和医学的进步,老龄不再具有稀缺价值,互联网使得知识易得也让老年人不再独享对知识的智慧发的掌握,他们的这种被年轻人崇老的地位动摇了。但是也因为老年人在经济上面越来越变的独立,他们对于晚年的生活有了更多的独立选择,所以他们转向追求独立、自助的晚年生活。现代化并没有降低老年人的地位,而只是降低了他们的家庭地位,由年轻人对他们的崇拜转化为他们对自己独立的自我崇拜。但是,他们对独立和自助的尊崇没有考虑到生活得现实,独立、自助的境遇早晚会变得不可能。严重的老年疾病或者衰老早晚会来袭,就像落日一样不可避免。

接受变老这件事

生命老化的故事就是身体器官走向衰竭的故事,衰老的过程是可以延缓,但是无法终止。经典的观点为人衰老的原因是随机损耗的结果,但是最新的观点认为衰老是有序的、基因设定的。但是研究表明,遗传对于寿命的影响小的惊人,寿命长短只有 3% 取决于父母的寿数,即便是基因相同的双胞胎,寿命差异也很大,典型的差距在 15 岁以上。人类衰退的方式和所有的复杂系统的衰退方式一致,是随机的、逐渐的。随机的损失并不能马上导致整个机体崩溃,但是在某一个关键系统崩溃之后,就会破坏整个系统。所以,衰老是我们的宿命,死亡总有一天会降临。

我们为衰老做好准备了吗?

老年时一系列连续不断的丧失,当一个老年人渐渐的失去自己独立生活的能力的时候,他们就只能离开自己生活几十年的熟悉的家,被送进疗养院。在疗养院,他们不仅要面对陌生的环境,他们还需要接受自己失去的生活自由和自身的隐私。疗养院给老人分配了狭小,没有自由和隐私的空间,他们的诸多活动和兴趣爱好都会被受到限制。疗养院以及老人的子女更加关注的是老人的安全,而不是他们真实想要的东西——对自己生活隐私和控制力。并且老人还需给疗养院支付昂贵的费用,甚至是花光他们毕生的积蓄。所以,很多老年人的眼里,作为度过生命的最后一程的地方,老人院是恐怖的,孤寂的、可恨的。

适应从家到老人院生活的转变

我们很难想象,当我们渐渐的衰老、脆弱、没有帮助的无法生活的情况下,我们还可以选择怎么样的生活?根据马洛斯的需求理论来分析认为安全和生存是最重要、最基本的目标。当我们选择能力有限的时候,当我们开始觉得未来是有限的、不确定的时候,我们关注点开始转向此时此地,放在日常生活的愉悦和最亲近的人身上。

抗击疗养院的三个瘟疫

厌倦感、孤独感和无助感是疗养院的三大瘟疫,托马斯尝试将农场的模式复制到疗养院当中吗,将大自然的真实生活融入到疗养院当中。他的实验就是为了老人提供一个活着的理由,而不是单纯的为了降低残障老人的死亡率。衡量人们对药物的依赖下降了多少、多活了多长时间比较容易,而衡量人们重生活当中得到的价值感则困难得多。

什么时候努力医治,什么时候放弃治疗

虽然在美国的医疗系统之下,进行癌症治疗的治疗顺利的话,费用

会随着治疗的进行慢慢的下降。但是对于患者来说,除了单纯的延长生命之外,还有更多的优先考虑事项,他们更加关切避免痛苦、加强与家人和朋友的联系、意识清醒、不成为他人的负担。所以,问题不是我们如何能够承担这个系统的开支,而是怎样建立一个系统能够在人们终结之时,帮助他们实现重要的愿望。针对大限来临的病人进行善终治疗并不是无所作为,而是尝试提供一种死亡方式的新范式。医生面对绝症患者的时候,医生不愿意摧毁患者的期望,所以往往会高估患者的存活时间,在患者的苦苦追问之下,医生还会为患者提供不太可能有效的治疗方案。面对大限来临的患者,我们应该深谙“接受个人的必死性、清楚了解医学的局限性和可能性,应该按照人类本来的样子对待病人”的人生哲理。

艰难的谈话,为迎接生命的重点谋求共识

医生与患者之间有三种可能关系,第一种是最古老,也是最传统的“家长型”关系,医生是医学的权威,目的是确保病人接受医生认为对他们好的治疗方案;第二种是“资讯型”关系,就是医生告诉患者数据和事实,然后让患者自行选择治疗方案,这种医患关系会导致我们队科学了解越来越多,但是对病人的了解却越来越少。然而事实上,患者不仅需要了解他的病情咨询,还需要有医生给他提供决策。所以,最好的医患关系就是凌驾于前两种医患关系的”解释型“医患关系。患者既想了解信息,有需要掌握和裁决权,同时也需要医生的指导。在这种关系中,医生的角色是帮助病人确定他们想要什么。

最好的告别

当我们时日无多,不确定如何最好地满足自己的优先考虑时,我们被迫应付对体验的自我和记忆的自我都要紧的实际情况。我们不愿意忍受长时段的痛苦,缩短欢乐的时光。然而,有些欢乐使得忍受痛苦富有价值。高峰时重要的,结局同样如此。我们最终的目的不是好死,而是好好地活到终老。最后结局不仅仅对死者重要,对于留下来的人,甚至更重要。

思考死亡是为了活得更好

对于医学工作者的任务究竟是什么,我们一直都搞错了。我们认为我们的工作是保证健康和生存,但是其实应该是更加远大的目标——我们的工作应该是助人幸福,幸福关乎一个人希望活着的理由。

最好的告别图书封面

—End—

诱惑、选择与时间成本

昨天在博客上面写了篇关于做点事的文章,谈的就是我们该如何的用好自己有限的时间去做好一件件的事情。今天晚上,突然想要将这个话题再次展开,谈谈诱惑、选择与实践成本的关系。

诱惑,这里指的不是小三的诱惑,也不是钱财权贵的诱惑,是对于外界知识带给我们的诱惑。从某种层面来说这是一种好的诱惑,有时候可以让人发奋学习,练得十八般武艺,有时候却因为面对诱惑没有控制住自己,导致一事无成甚至走火入魔。

可能我们都有这样的经历,在上大学的时候,我们看到别人跳街舞很酷,所以就报名参加了劲舞社团;最后没有学习了几天,发现那个弹吉他的屌丝居然找到女朋友了,于是自己又去参加了吉他协会;然后看到辩论赛的男生也很帅气,所以就扔下篮球去学习辩论了。最后大学四年发现,自己参加了很多的社团,就是没有找到女朋友。工作了,你觉得秋叶做的 PPT 贼好看了,而且还把课程做的那么好,所以你去学习做 PPT ,希望自己总有一天也能做几张 PPT 去忽悠风投融资;后来你发现小蚊子的数据分析真不多,学会了说不定就能升职加薪,所以你就将电脑软件从 PPT 切换到了 Excel ,开始苦学函数、透视表、VBA 等大招;后来你有听别人说,以后就是大数据的时代了, Excel 处理数据太低级了,应该学习 SQL 语句,然后使用 SQL 进行数据分析,这样才能拥抱未来,所以你就鄙视那些只会使用 Excel 而不会使用 SQL 语句进行查询的数据分析师;后来你又学习 SPSS 、Python 等等知识,只是最后你一直没有加薪,更加没有升职。

这样的经历每个人都有经历过,或者正在经历,这就是来自于社会给我们的诱惑,而我们总是一次又一次的掉进诱惑的这个大坑里面。周而复始,乐此不彼。

其实在诱惑出现的时候,我们是做出了选择的,选择了放弃过去积累的点点滴滴,投身到全新的学习内容里面。那么是什么原因让我们放弃之前的努力,去追求一个尚未明确的东西呢?答案应该有很多,但是我觉得有两个是比较重要的。第一就是对于自身现状的不了解,也就是尚不明白我们现在在这里究竟要干嘛?是要跳街舞还是弹吉他?是要做 PPT 忽悠风投还是学习数据分析获得升职加薪?我们在选择的时候没有明确自己的现状如何,所以就盲目做了错误的选择。第二个原因就是对于未来的恐惧,是我,我们都在畏惧将来。当我们学习街舞的时候,看到了有人用吉他弹了首歌就追到女朋友了,担心自己在这样跳街舞就会孤独终老;当我们看到有用用出售 PPT 课程赚了很多钱,怕自己做一辈子的数据分析也没有这么多钱,所以内心就会恐惧。现在的科技革命变化太快,很多的书籍文章都在消费这些科技概念,让人看到这些变化的时候感觉到一种莫名的恐惧和急促。

既然做了选择,那么就得对新事物进行实习,这时候最高的成本不是学费,因为学习资源网络可得,最重要的就是时间成本了,每去经历一些新事物、学习新事物都是需要时间的,时间就是最为隐形的成本,也是最高昂的成本,没有之一。加入没有时间成本这个东西的话,我们面对外界诱惑的时候就不会存在任何的恐惧和急促。

这大概会是这样的一个过程:面对诱惑,我们忽视了过去的时间成本,尝试去走另外一条路,最后抛弃了原路,开拓新路,有花费了更多的时间。

最后就是一事无成。

做点事情

大概已经有很长的一段时间没有写文章,在过去的一个周末,待在学校里,白天到图书馆复习功课,晚上回来就跟同学们一起喝点小酒聊天。这样的日子很自在开心,但是也让整个人很疲惫。因为有早起的习惯,所以在学校睡觉到了早上六点多就会醒来,然后就再也睡不进去了,只能是起来处理工作和看书。

我喜欢一个人安安静静的看书,写点东西。在人多的地方,总是觉得整天都是人浮于事,没能静下心来好好看书写字。在这样的生活有了一个开头,就会变得一发不可收拾,最后一个星期过去了,发现一本书都读不完,一篇文章都没有写。

忘记了是哪一天看到和菜头写的文章,讲的是他的一个朋友总是拉他进群。文章除了讲和菜头自己是多么的不愿意进群之外,还讨论了他那个朋友的这种生活方式是如此的糟糕,整天就是沉浸在这样烂七八糟的生活里面,却忘记自己需要的是做点事情。

是的,我们都需要做点事情,做点事情可以是学习一些技能,比如编程、Excel处理数据、数据分析,画画读书写作写作也可以;还需要在工作上面做点事情,比如跟进项目进展、给用户数据建模、给产品写需求文档,又或者是写个运营或者活动方案,并且不断的推进;这些都是属于「做点事情」的范畴。

而做点事情就需要我们养成做事的一种习惯,比如每天看书、写作、编程、看数据、阅读咨询文章等等。或者我们不需要每天工作很长的时间,但是我们需要每天给自己一个输入和输出的途径,输入时为了以后更多更好的输出,而输出就是验证我们过去输入的东西是否在我们做事时候有帮助。

所以,我在阅读、写作、学习编程和工作,这就是我做点事情的方式。

音乐就在你的指尖流淌

《重来》是一本讲述如何通过「更加简单高效的商业思维」打造属于自己成功的产品,里面的每一个主题,每一篇短文都是精辟入理,很多观点都是违反常规,但却让人信服。

在这本书里面有一篇文章叫做《音乐就在你的指尖流淌》,作者通过音乐家的例子引出了一个观点,那就是「装备(工具)不是成就一个事情的最好法宝,行动(练习)才能成就你自己的想法。」

文章里面这样总结工具对于人类生产的作用:

人们把装备当做取胜的法宝,却不愿意花时间去练习,于是一直泡在专业器材店里。他们想要寻找捷径,然而,最好的工具不是用在普通领域的。而你在起步阶段肯定用不上他。

曾经在知乎里面看到只要的一个问题,「学习编程,应该配一台怎么样的电脑」,其中有一个人是这样回答的「只要能开机,越破越好」。并且这个答案被很多的网站点赞认同。同样的,曾经在朋友圈上面看到一个人说「腾讯的开发团队用的都是 PC ,但是去做了那么多好产品。」。

过去在学习编程的时候,我为了搭建 Linux 环境还是 Windoes 而纠结半天;为了选择编辑器而纠结了半天;写文章为了选择平台而纠结了半天……选择工作和学习使用工作在我们学习当中花去了大量的时间,到了最后,很多技能没有习得,只是电脑里面安装了一堆以后从来都不会使用的工具。

正如这本书的作者那样总结:

就用你现在手头上有的或者能负担得起的,然后开始做吧。工具不重要,就用你现有的工具也可以做的一样棒,音乐就在你的指尖流淌。

搬家的经历

今天就要搬家了,这是我出来工作第 10 个月里面第 2 次搬家,貌似有点频繁,不过还好不是第二次换工作。

第一次搬家是因为原先居住的那个地方楼层高、地方小、房子里面配套差,连一个热水器都没有,在寒冷的冬天里面都是使用热水棒来烧水,不仅麻烦,而且还比较耗电。除此之外就是房子里面的厕所总是会发出某种味道,让人闻到就觉得恶心。

在去年的 12 月底的时候,刚好那边的合同到期,所以到附近找了一个比较精美的小单间租了下来,每个月的房租比之前的那个地方要贵 200 ,但是里面什么配套都是齐全的,就在这个地方住了 4 个月。

只是到现在,公司搬迁到新的大楼,而且距离这个地方比较远,每天需要在公交车上的时间就是 1 个多小时,所以就打算换一个距离公司比较近的地方,这样上下班就会比较方便。在上上个星期,我到那边找到了房子,今天就要把所有的东西搬过去,并且今天晚上就要在那个地方住下来。

其实很不喜欢搬家,因为搬家就以为着自己的生活其实是不太稳定的。每一次离开一个地方,面对新的环境生活的时候情绪都会有微小的波动,虽然很快就会调整起来,但是也是会影响到自己的。

我希望这是我一年内最后的一次搬家,以后继续在那个地方住,就以为着我自己的工作也是比较稳定,可以长时间的在那个地方上班。一直以来都有朋友介绍自己去别家公司,自己也有过这样的想法,但是一直没有作决定。第一是因为我自己还比较喜欢现在的工作和公司;第二是因为我还更倾向在一家公司工作时间更长,这样可以积累到的公司就会变得更多。

其实这一次搬家是为了去适应我自己的工作,在很多时候我回因为工作和学习的原因,需要付出一些成本,而对于这些成本,我是愿意投入,因为那是投资自己和自己的事业。

—End—

Bootstrap 排版练习

<h1>Bootstrap 排版</h1>
<h2>这里是关于 Bootstrap 的标题练习</h2>
<h1>这是标题1</h1>
<h2>这是标题2</h2>
<h3>这是标题3</h3>
<h4>这是标题4</h4>
<h5>这是标题5</h5>
<h6>这是标题6</h6>
<h1>下面是关于内联标题的练习</h1>
<h1>这是标题H1<small>这是子标题H1</small></h1>
<h2>这是标题H2<small>这是子标题H2</small></h2>
<h3>这是标题H3<small>这是子标题H3</small></h3>
<h4>这是标题H4<small>这是子标题H4</small></h4>
<h5>这是标题H5<small>这是子标题H5</small></h5>
<h6>这是标题H6<small>这是子标题H6</small></h6>
</div>
<div>
    <h1>引导主体副本</h1>
    <p class="lead">这是一个引导主体副本的实例,这是一个引导主体副本的实例,这是一个引导主体副本的实例,这是一个引导主体副本的实例,这是一个引导主体副本的实例,这是一个引导主体副本的实例,这是一个引导主体副本的实例,这是一个引导主体副本的实例,这是一个引导主体副本的实例,</p>
    <p style="color:red">这是一个没有引导主体副本的对比实例,这是一个没有引导主体副本的对比实例,这是一个没有引导主体副本的对比实例,这是一个没有引导主体副本的对比实例,这是一个没有引导主体副本的对比实例,这是一个没有引导主体副本的对比实例,</p>   
</div>
<div>
<h1>列表练习</h1>
<h4>有序列表</h4>
    <ol>
    <li>有序列表1</li>
    <li>有序列表2</li>
    <li>有序列表3</li>
    <li>有序列表4</li>
    </ol>
<h4>无序列表</h4>
    <ul>
    <li>无序列表1</li>
    <li>无序列表2</li>
    <li>无序列表3</li>
    <li>无序列表4</li>          
    </ul>
<h4>未定义样式列表</h4>
    <ul class="list-unstyled">
    <li>未定义样式列表1</li>
    <li>未定义样式列表2</li>
    <li>未定义样式列表3</li>
    <li>未定义样式列表4</li>           
    </ul>
<h4>内联列表</h4>
    <ul class="list-inline">
    <li>内联列表1</li>
    <li>内联列表2</li>
    <li>内联列表3</li>
    <li>内联列表4</li>          
    </ul>
<h4>定义列表</h4>
    <dl>
    <dt>定义列表1描述</dt>
    <dd>定义列表1</dd>
    <dt>定义列表2描述</dt>
    <dd>定义列表1</dd>          
    </dl>
<h4>水平定义列表</h4>
    <dl class="dl-horizontal">
    <dt>水平定义列表1描述</dt>
    <dd>水平定义列表1</dd>
    <dt>水平定义列表2描述</dt>
    <dd>水平定义列表1</dd>            
    </dl>
</div>

《”边缘人“纪事》代序

《”边缘人“纪事》这本书讲述的就是几个”问题“小人物的悲惨故事,关于这几个小人物身上的”问题“并不是来源于他们自身,而仅仅是来源于那个特定的时代。

作者在这本书的开头写了一个序,这个序主要就是在作者 1976 年期间在监狱里面认识的一个三十多岁的”老头“。这个”老头“向他讲述了自己是怎么从一个富家子弟成为小偷,再划分为”四类分子“,再到后面的评为反革命。即便是后来整个事件得到平反,他终究还是被判处无期徒刑和死刑。

作者在讲述完这个故事的时候,写下了下面这样的一段话。

为什么像他这样一个好人家出身的孩子,那样轻易地就被他的家庭抛弃了?为什么一个犯了错误的少年一定要用那样的方法来惩罚,以至于近朱近墨,愈陷愈深,无以自拔?为什么当时要制定什么”四类分子“的政策,从而造成被管制者悲惨命运呢?为什么新中国建立几十年,始终没有严格的法律制度与法律标准,动辄要靠脱离法律程序的所谓”严打“来惩治犯罪?为什么《惩治反革命条例》不区分意图与行动、已遂与未遂,仅凭思想言论即可入罪,仅凭意图不管有无造成严重后果,即可判处无期或死刑?

作者的一连串疑问,娓娓到处了这些”问题“小人物他们的悲惨命运并不是他们一手造成的,起码那个时代、那个社会是存在问题的,可能这也是作者写这本书的真实原因。

谁是淘宝刷单受害者

最近在看《淘宝十年产品事》这本书,书的作者是淘宝产品经理苏杰,这是一本讲淘宝产品发展的,里面包含了大量的关于淘宝产品发展的一些细节,在豆瓣上面是这样介绍这本书的:

本书细数淘宝成立十年来经历的重大变化,核心产品的设计,以及背后的思考,深挖到淘宝信奉的价值逻辑。内容涵盖商品分类与管理;首页、List页等导购产品;搜索与导航;C2C、B2C、C2B等电商模式的演化;交易的前中后:如营销工具、购物车、订单、评价;旺旺;天猫、聚划算,等等。

当然,今天除了推荐这本书之外,就是谈一下淘宝刷单的事情。

淘宝刷单不仅是商家的共识,也是买家所知道的。淘宝针对刷单的事情,也付出了很大的努力,在这本书当中就写有这样的一段话:

第一回,作弊卖家找熟人帮忙买一笔订单,N件宝贝。反作弊针对性打击“一笔多件”订单,立竿见影。

第二回,作弊卖家升级,找熟人对一个宝贝下多笔订单,时间成本提升,但效果很好。反作弊团队针对性打击“一人多笔”,成效显著。

第三回,作弊卖家找N多熟人帮忙买自家的东西,作弊方式从“多件”、“多笔”,再到“多人”,成本继续提升。然而,“魔高一尺,道更高一丈”,反作弊团队总会把作弊卖家的这些作弊空隙越挤越小……

就这样,作弊手段和反作弊方法都在互相的较量中不断升级,搜索的排序中也加入了反作弊的模型。搜索引擎能够自动识别卖家是否有淘宝规定的七大作弊行为,如有以上情况发生,系统会自动识别并对这些宝贝做不同程度的搜索排序降权处理,严重的甚至会在搜索结果中屏蔽过滤。

简单地说,反作弊没办法完全阻止作弊,但可以让卖家的“作弊成本越来越高,收益越来越低,直到放弃作弊”。卖家也会考虑作弊的投入产出比。从简单的规则,到机器学习,再到后来对平台刷钻的研究分析和相应处理、对交易粒度的作弊情况识别等工作,逐渐形成了对作弊情况的处罚,打击了卖家利用虚假交易来刷人气、炒信用等情况,在人气排序和销量排序下都对这些作弊情况进行了有效打击。

简单的看上面关于淘宝在防止刷单上作出的很多努力,产品也做了多次的迭代,但是我却不认同里面的产品理念。其中有这样的一句话:

简单地说,反作弊没办法完全阻止作弊,但可以让卖家的“作弊成本越来越高,收益越来越低,直到放弃作弊”。

上面这段可以看出,淘宝去防止刷单思路就是不断的提高刷单的成本,可以说是简单粗暴。虽然说后面针对这些刷单行为的卖家严格处理,也降低了销量在搜索上的权重。但是这种防刷单的思路是有问题,最接的问题就是商家还是选择高成本的刷单,然后把这些刷单的成本转移到买家身上。或者有人就会否认这个转嫁成本的事情,但是可以说这是一个最正常不过的经济学常识了,没有什么可以争议的。

在电子商务刚刚出现的时候,商品的中间成本确实是非常的低,但是随着电子商务的发展,网上购物过程中的成本不见得要比实体店的要低多少,有的行业甚至是比实体店的运营成本还要高。所以就有了注册一个用户奖励 100 元,首单免费等等营销手段。其实可以很好的理解为什么会发生这样的变化。在互联网刚开始发展的时候,网上的信息量很少,用户可以很容易的发现你的产品。但是随着信息量越来越大的时候,你就需要投入成本让用户看到你的产品,这时候就需要投入大量的广告(刷单也是为了更容易看到),看到了还不行,还需要在产品上面做包装,这也是成本。当然实体店也有这些成本,但是可以知道的是,网上购物中间成本是在不断上升的,这些上升的成本肯定也是转嫁到用户支付的商品价格上面来的。

就算淘宝作出多大的努力,最终受伤的还可能是我们买家。你不相信也可以,毕竟我说的都是错的。

MySQL 分组数据

对于 Excel 数据透视表比较熟悉的人应该知道,透视表最常用的就是对数据进行透视汇总,得到相关的数据就是按照其中一个字段的一个数值进行汇总展示。举个简单的例子:有一份订单详细,记录着几个月以来订单里面每个商品的销售数量和金额。由于每个订单里面的产品是不一样的,需要汇总每个产品的具体销售数据进行汇总,那么就进行分组数据。汇总这些数据在 Excel 上就可以直接使用数据透视表,在数据库使用 SQL 语音就需要用到 Group by 操作符对数据进行分组汇总。

1. 创建分组数据

假如需要对一份销售数据表进行处理,根据商品的编号(Prods_id)汇总出来每一个商品的在一个时间段的销售总数量(Prods_num_sum)。分组数据的原理就是根据不同的商品编号对商品的每个订单中的商品数量进行相加之后返回最终的结果,并且没一个商品单独一行进行展示,这里面的逻辑和 Excel 数据透视表的逻辑是一模一样的,而且运行起来要比 Excel 透视表更快,可以处理的数据量更大。具体实现如下:

mysql ->SELECT Prods_id, sum(Prods_num) AS Prods_num_sum
            ->FROM
            ->Order
            ->Group BY Prods_id;

上面的语句就是通过商品编号进行销量合计,然后把这个合计的字段命名为 Prods_num_sum ,最后一个 Group BY Prods_id 意思就是根据 Prods_id 这个字段里面的值进行数据分组。这是一个较为简单,也是比较常用的一个数据分组操作。

分组数据不仅可以返回合计值,还可以运行之前所有的数据汇总操作,包括返回平均值AVG();行数COUNT()等等这些想要的数据汇总结果,就相当于在数据透视表上面设置字段的值是一样的,可以有多个选择。

分组数据还可以通过配合 WHERE 过滤语句进行使用,比如说在一年的销售数据表里面,可以通过 WHERE 对时间进行过滤,过滤得到12月份的商品销售数据的汇总。还可以是根据商品的分类进行过滤,总之可以配合之前学习的那些功能搭配起来进行使用。

对于分组数据得到的结果,还可以对数据进行排序,排序语句 ORDER BY 需要放在整个语句的最后,否则就会出现错误。

2. 使用 HAVING 过滤分组得到的数据

上面提到了关于分组数据的操作,直接得到的分组数据是所有的数据,有时候我们不需要返回所有的数据,比如我们只需要一个月销量大于 10 的结果,小于 10 的那些产品销售数据我们就不需要打印出来。需要实现这个功能就需要使用另外一个过滤操作符,那就是 HAVING 操作符,比如上面的实例添加上 HAVING sum(Prods_num) <= 10 这个语句就可以将销售数量小于 10 的数据去掉。具体实现如下:

mysql ->SELECT Prods_id, sum(Prods_num) AS Prods_num_sum
            ->FROM
            ->Order
            ->Group BY Prods_id
            ->sum(Prods_num)  <= 10;

HAVING() 和 WHERE() 都是对数据进行过滤的,但是两者是有很大区别的。为了方便理解,从它们作用的时间说起吧。WHERE() 实在计算分组数据的时候就执行的,就是说 WHERE() 是过滤哪些数据需要分组。而 HAVING() 实在数据计算分组之后执行的,意思就是判断那些不不满足条件的数据就不被打印出来。也可以理解为为 WHERE() 是对之前的 Prods_num 进行过滤,而 HAVING() 是对后面的 Prods_num_sum 进行过滤。

—EOF—

Excel 拆分单元格之后快速填充

经常就会有一些数据就是在合并单元格的情况下,但是需要对这些数据需要做数据透视并且汇总数据的时候就需要拆分单元格。但是拆分单元格之后就会出现只有顶部的单元格有数据,下面空着的数据需要自己进行填充,如果原本合并的单元格很多的时候就需要一个一个进行填充,这是非常麻烦的。

之前是没有想到解决的办法的,后来上网查了一下,找到了一个可以快速一件填充的方法,具体就使用到了 Excel 当中的查找与定位功能。

  1. 选中 A 列的所有数据,在开始工具栏的右边找到「查找与定位」,进去「查找与定位」控制版之后选择「空值」。
  2. 然后选中的是所有的空值单元格,这时候只需要在 A2 单元格上面输入 「=A2」,并且按下组合快捷键「Ctrl + Enter」就可以了。

上面的方法就是快速的填充被拆分的单元格后的空值的填充。

—EOF—

MySQL 汇总数据函数

在实际应用当中,我们经常不需要实际的数据列表,我们需要的是一个汇总的结果,比如说一个月销售了多少件商品?一个月销售的多少种产品?一个月销售的多少钱产品?这些都是关于数据的汇总的,对于熟悉 Excel 的人来说一定也知道 Excel 里面的这些功能,其实在 SQL 语言里面也是可以做到的,可以使用函数操作。

SQL 语言里面提供了 5 个用来数据汇总的函数,分别是 COUNT() ;AVG() ;SUM();MAX();MIN()这五个函数,看名字就可以很好的理解这些函数,后面会慢慢的来进行解释。

1. 使用「COUNT()」函数计算行的数目

「COUNT()」函数可以用来计算行的数量以及满足筛选条件行的数量,「COUNT()」有两种使用方式,一种就是使用「COUNT(×)」的语句来计算的所有的行数,返回行数的结果包含空值(NULL);「COUNT()」的另外一种使用方式为「COUNT(column_name)」语句,返回在「column_name」含有值的所有行的数量,不包含空值(NULL)。所以如果需要返回 「user_email」值不为空的行数的时候就可以使用下面的语句。

mysql -> SELECT  COUNT(user_email)  AS email_coust
             -> FROM
             -> user;

2. 使用「AVG()」函数计算平均值

「AVG()」 函数可以用来计算一个行里列里面所有的值或者满足特定条件的值平均值,使用的时候只需要在AVG()这个函数的括号内声明需要计算的字段就可以了。比如说需要计算一个月里面订单价格的平均值 Order_price,那么就可以使用 SELECT AVG(Order_price) AS AVG_order_price;当然,AVG() 这个函数还可以搭配 WHERE 这个操作符进行使用,可以计算出某些条件的平均值。

还有一个地方值得注意的是,对于 NULL 的行来说, AVG() 这个函数会自动的忽略不计

3. 使用「SUM()」函数计算总额

「SUM()」 函数可以用来计算一个行里列里面所有的值或者满足特定条件的值总值,使用的时候只需要在AVG()这个函数的括号内声明需要计算的字段就可以了。比如说需要计算一个月里面订单的总金额 SUM_price ,那么就可以使用 SELECT AVG(Order_price) AS SUM_price;当然,AVG() 这个函数还可以搭配 WHERE 这个操作符进行使用,可以计算出某些条件的总计。

4. 使用「MAX()」和「MIN()」函数分别返回最大值和最小值

「MAX()」和「MIN()」这两个函数分别用来计算行或者列当中的最大值或者最小值,使用方式跟前面的函数一致,也是可以通过使用 WHERE 等语句一起搭配起来进行筛选的。

上面就是简单的介绍了关于 5 个汇总函数的使用方式和技巧,还有一些值得注意的时间,后期会继续跟进,写一些更加高级的东西。

—EOF—

记录的好处

不少的朋友写过记录的这个话题,可以看出来这是简单不过的事情在我们日常的生活和工作当作是显得如此的重要。如果你平时没有记录的习惯,那么建议你看一下这篇文章,或者会让你改变一些看法。

先来谈一下记录。记录也可以说是日记吧,就是把一个人一天当中经历的事情用文字记录下来。刚开始记录的人会选择使用流水帐的方式;在深入的人就会在每天的具体事件去展开,去写一些自己的感悟和思考,最后自己的每天的记录就会变得越来越长,文字越来越多,每天记录话费的时间也会越来越多。但是打字和切换思考的速度就会变得越来越快,写作能力也会变得越来越好。所以这里面就因出来了记录自己日常工作和生活的两个好处,那就是思考和锻炼写作能力。

最近在看一本书,是知名博客作者阮一峰写的《如何变得有思想》,在这本书的书腰上面就写着「人不是生来就有思想的,而是通过不断的学习和思考得来的」这句话。所以如果要想让自己成为一个有思想的人,那就需要明天不断的去思考总结。人们总是会抱怨生活节奏太快,工作太忙没有时间阅读,其实阅读这件事情完全取决与你自己本身,与外界的环境没有任何的关系。一个没有思想的人就会容易在朋友圈传播谣言,就是轻易的上当受骗。保持每天的思考,可以让一个的精神得到丰富。当然,记录并不是思考的唯一方式,也不是最好的方式,但是记录是只需要一个人就可以做到,并且是每天都可以保持思考的一种方式。

第二个就是锻炼自己的写作能力,在过去的很长一段时间里面,我很少很去写字,知道后来上了大学,我尝试写日记。虽然那时候的日记就是纯粹的流水帐,一天的记录里面还凑不到几百字。但是后来我继续延续,并且适当的时候调整记录形式,现在我采用的记录方式就是针对一件事情,写上相应花费的时间,然后在后面写上自己的感想。比如说

阅读《如何变得有思想》,花 60 分钟
作者在书的开头就说「人不是生来就有思想的,而是通过不断的学习和思考得来的」,其实阅读就是一个不断思考的过程。

按照上面的记录方式,现在我每天的日记都是写满近 1000 字的,慢慢的我对文字有了更多的感觉,可以写一些见的人的文章,虽然写的还是不好,但是我在尝试着能说明白一件事的阶段想能写好一件事情的阶段去发展。

除了上面的思考和锻炼写作能力之外,记录还有很多好处,只要是做好记录,我们一定会在这个过程当中享受到很多的好处。

—EOF—

MySQL 使用函数处理数据

SQL 语句和其他的程序语言一样,都是支持函数,通过使用函数,可以对数据进行更加灵活的处理和清洗。SQL 常常使用函数来进行数据的转换、字符串提取、日期时间提取等。

SQL 函数存在一个比较大的问题,那就是对于不同的数据库管理系统,很多 SQL 函数都是不全支持的,或者说的使用方法不一样,所以在面对不同的数据库操作系统的时候就会出现很多 SQL 不能正常使用,需要单独查询相关数据库管理系统的参考文档。当然,我们也是可以自己去定义一个 SQL 函数,但是这样使用的时候跟其他的程序语言所定义的函数方式不一样,往往是使用起来会更加的麻烦。

基于 SQL 函数在各种不同的数据库管理系统不一致的情况,所以需要我们自己考虑是否使用函数。如果只是使用一种类型的数据库管理系统,那么就可以不用担心这个问题,只需要对照相关的数据库参考文档就可以了。由于本人使用的是 MySQL 数据库,而且 MySQL 也是目前网站就常用的数据库,所以下面的内容就是参考 MySQL 数据库的参考文档进行举例说明。

1. 使用 SQL 函数

如果需要使用函数,只要将函数名称后面用括号将想要操作的字段名称扩起来就可以对该字段的值进行函数操作。比如要将 「Address」 数据表里面的 「provice」都转换为大写,那么就可以使用函数 「UCASE()」这个函数,具体语句为:

mysql ->
             ->SELECT province, UCASE(province) AS province_ucase
             ->FROM
             ->Address;

上面第一个查询的字段是为了做查询结果的对比,可以进行忽略,后面的是才使用函数进行数据的转换,「UCASE(province) AS province_ucase」这个语句是将「province」里面的值都转换为大写,并且命名为「province_ucase」打印输出,部分结果如下:

+-----------+----------------+

| province  | province_ucase |

+-----------+----------------+

| guangdong | GUANGDONG      |

| sichuan   | SICHUAN        |

| hubei     | HUBEI          |

| yunnan    | YUNNAN         |

| beijing   | BEIJING        |

| shanghai  | SHANGHAI       |

| guizhou   | GUIZHOU        |

| fujian    | FUJIAN         |

| guangxi   | GUANGXI        |

2. SQL 常用的文本处理函数

前面提到了怎么去使用函数,SQL 函数也是比较多,不能实现一个一个的来进行举例说明。其实在实际的工作应用当中,只要记住常用的那几个函数就可以了,其他的用到了在去翻开使用手册查询就可以了。首先来看一下常用处理文本数据的函数都有那些。

  1. UCASE() 或者 UPPER():用来将字符串转化为大写;
  2. LCASE() 或者 LOWER():用来将字符串转化为大写;
  3. LEFT(str,len):返回字符串 str 自左数的 len 个字符;比如 LEFT(province, 3) 就是返回字段 province 里面字符串左边起的前三个字符,果有的参数是 NULL 值,则返回 NULL。
  4. RIGHT(str,len):返回 str 右边末 len 位的字符。比如 RIGHT(province, 3) 就是返回字段 province 里面字符串右边起边起的前三个字符,如果有的参数是 NULL 值,则返回 NULL。
  5. LENGTH(str):返回字符串长度。
  6. LTRIM(str): 去除字符串左边的空格字符,并且返回新的字符,可以用来清洗数据。
  7. RTRIM(str):去除字符串右边边的空格字符,并且返回新的字符,跟 LTRIM(str) 作用类似。

上面就简单的整理了一下 MySQL 用来处理字符串的常用函数,还有很多的用来处理字串的函数,需要了解就可以查询 MySQL 的文档。

3. SQL 常用的日期、时间处理函数

在实际应用里面经常需要进行日期和时间的处理,那么就需要使用函数进行相关的处理,处理日期和时间的函数也是比较多,但是只要记住常用的函数就可以了,需要的时候在查看文档参考。常用的日期时间处理函数有下面这些:

  1. CURDATE():返回当前日期的函数。选择返回结果为 ‘YYYY-MM-DD’(’年-月-日’)这种字符串的格式的,那就直接使用CURDATE(); 如果返回结果格式为 YYYYMMDD(年月日) 这种数值格式的话,那就使用CURDATE() + 0 这个语句。

    使用 mysql ->SELECT CURDATE(); 这个语句,返回结果为:

    mysql> select curdate();
    +------------+
    | curdate()  |
    +------------+
    | 2016-04-02 |
    +------------+
    1 row in set (0.00 sec)
    

    如果使用 mysql> select curdate() + 0; 这个语句,返回结果为:

    mysql> select curdate() + 0;
    +---------------+
    | curdate() + 0 |
    +---------------+
    |      20160402 |
    +---------------+
    1 row in set (0.00 sec)
    
  2. NOW():返回一定格式的日期+时间值。跟上面的 CURDATE() 这个函数是类似的,也是根据函数是否用于字符串或数字内容,返回格式格式为字符串型 ‘YYYY-MM-DD HH:MM:SS’ 或数字型 YYYYMMDDHHMMSS。

  3. CURTIME():返回当前时间,跟上面的两个类似,根据函数究竟用于字符串或数字,选择以 ‘HH:MM:SS’ 还是 HHMMSS 格式返回当前时间值(以当前时区来定)。
  4. YEAR(date)、MONTH(date)、DAY(date)、HOURS(date)等参数可以返回相关的年月日小时数据。

还有很多的关于日期和时间的处理函数,详情请参考相关文档。

4. SQL 常用的数值处理函数

针对于数值, SQL 里面也有一些处理函数,下面就是一些常用的处理数值的函数

  1. ABS(X):返回参数 X 的绝对值;
  2. COS(X):返回 X (以弧度计)的余弦值;
  3. EXP():返回以e(自然对数的底数)为底,以所传入的数值表达式为指数的幂;
  4. PI(): 返回 π 值;
  5. SIN():返回参数(以弧度计)的正弦值;
  6. SQRT() 返回参数的非负平方根;
  7. TAN(X):返回参数 X (以弧度表示)的正切值。

上面就是常用的一些针对数字的处理函数,还有很多的函数没有列出来,需要查看文档进行学习。

最后总结,虽然使用 SQL 函数处理数据比较快速,但是针对不同的数据库对于函数的使用又是不一样,所以在函数这一块内容还是需要学习一下相关的数据库函数文档。

—EOF—

MySQL 创建计算字段

在数据库里面,很多时候我们的数据都是一个一个类进行储存起来的,并且不是我们程序所需要的格式,举个最简单的例子就是我们用户的地址是通过省份(Pronvince)、城市(City)、地区(County)以及下面的详细街道地址组成的;还比如说商品销售的总额是有单品价格乘以销售数量。但是上面的这些每一段数据都是单独储存起来的,如果需要一个完整的用户地址或者需要销售金额,那么我们就需要把这些数据并接或者通过运算的方式去提取出来,这时候就需要使用 SQL 的计算字段功能了。

值得注意的是, SQL 的计算字段是会在数据库管理系统里面进行的,不需要我们在自己的电脑去转换格式然后在拼接起来,这样大大的提高了我们对于数据的处理能力和效率,这就是计算字段的功能强大之处。

1. 拼接字段

正如上面举的例子那样,我们需要用户的详细地址的时候,我们需要通过拼接省份(Pronvince)、城市(City)、地区(County)这些字段来组成详细的用户地址。在使用 SELECT 语句里面,通过使用特殊的操作符就可以拼接字段。根据具体的数据库管理系统,拼接字段的操作符可以是「+」和「||」有或者是 「concat()」操作符,具体使用那一个就需要查询相关的手册。MySQL 数据库之支持「concat()」操作符进行拼接字段。使用方法看下面实例

mysql ->SELECT 
             ->concat(province, city, county) 
             ->FROM
             ->Address;

上面的语句就是通过「concat」这个操作符将省份(Pronvince)、城市(City)、地区(County)这些字段拼接在一个组成一个新的字段,并且打印出来,打印出来的一部分结果是这样的。

+--------------------------------+

| concat(province, city, county) |

+--------------------------------+

| guangdongguangzhouhaizhu       |

| sichuanchengdujinjiang         |

| hubeiwuhanhuaiji               |

| yunnandalidali                 |

| beijingbeijingdongchengqu      |

| shanghaishanghaixuhui          |

| guizhouguiyangguiyang          |

| fujianningdexiapuxian          |

| guangxiyulinyulin              |

2. 使用别名

从上面打印的结果可以看到,对于拼接起来的那个新的字段是没有被命名的,需要给他一个新的命名,比如说是address,那么就需要使用 AS new_name 这个操作符进行命名,如下操作:

mysql ->SELECT 
             ->concat(province, city, county) 
             ->AS address
             ->FROM
             ->Address;

使用上面的语句就是在拼接语句后面添加一个 AS address 的语句,意思就是新拼接的字段命名为「address」,那么打印出来的字段抬头就是不之前的 「concat(province, city, county)」而是变成了「address」 ,其打印部分结果如下:

+---------------------------+

| address                   |

+---------------------------+

| guangdongguangzhouhaizhu  |

| sichuanchengdujinjiang    |

| hubeiwuhanhuaiji          |

| yunnandalidali            |

| beijingbeijingdongchengqu |

| shanghaishanghaixuhui     |

| guizhouguiyangguiyang     |

| fujianningdexiapuxian     |

| guangxiyulinyulin         |

3. 使用算术计算

除了上面的需要拼接的方式得到详细的地址的情况之外,在实际应用上面经常需要的就是对数据库字段进行运算符的计算,包括「+」、「-」、「×」、「/」这些常用的运算。比如说一个电商网站需要在用户结算的时候通过使用商品单价「item_price」乘以商品数量「quantity」来的出商品总价格「item_sum」,那么这个实际应用就需要使用到字段自己的算术运算了,具体实现为:

mysql ->select prod_id,quantity,item_price,quantity*item_price AS item_sum
             ->FROM
             ->OrderItems;

上面的语句就是检索出来这些字段,并且通过 quantity*item_price 的算术运算得到商品总价「item_sum」 ,打印出来部分结果如下:

+---------+----------+------------+----------+

| prod_id | quantity | item_price | item_sum |

+---------+----------+------------+----------+

|      51 |       27 |         50 |     1350 |

|      57 |       17 |        100 |     1700 |

|      17 |       16 |         75 |     1200 |

|      14 |       25 |         51 |     1275 |

|      19 |        3 |        101 |      303 |

|      63 |       12 |         76 |      912 |

|     100 |       25 |         52 |     1300 |

|       3 |        8 |        102 |      816 |

|      91 |       26 |         77 |     2002 |

通过简单的计算验证,得到的计算结果是正确的。对于别的算数运算符来说,操作方式是一致的,可以进行自我尝试。

这篇文章的内容主要讲的就是如果创建计算字段,最主要的两个内容就是字段拼接和字段直接通过算术运算的方式计算相关的值,还有提到的是使用「AS」来命名被计算出来的字段。

—EOF—

MySQL 使用通配符过滤检索数据

在前面的两篇文章里面提到的简单的数据过滤以及高级的数据功能功能都是针对与某一个确定的值或者某一个范围的值进行过滤,相对来说还不够灵活,尤其是针对与字符串数据的操作不是那么的方便。通配符可以在处理字符串数据的时候提供更加复杂的逻辑关系,过滤出来满足实际需求的数据。

通配符的定义就是「用来匹配想要值的一部分特殊字符」,需要在 SQL 语句里面使用通配符,那么就需要使用 LIKE 操作符。可以这样来理解, LIKE 过滤的包含特定字符的相似的值。

值得注意的是,通配符只能匹配字符串类型的数据,不能匹配其他数据类型的数据。

1. 使用「%」匹配出现任意次数的任意字符

「%」这个通配符是最常使用到的,可以放在需要检索数据的开头、结尾、中间任意一个位置,其作用就是用来匹配任意次数任意未知字符。例如需要检索出来在 user_name 这个数据表里面开头为「A」的所有数据,那么就可以使用下面的语句。

mysql ->SELECT user_name
             ->FROM
             ->user
             ->WHERE user_name LIKE "A%";

上面 LIKE 操作符后面的「A」后面跟着是「%」,意思就是以「A」为开头,后面的字符可以是任意的,而且后面后一个字符串出现的次数也是任意的。

「%」还可以放在字符串的前面,比如说需要检索出来用户邮箱地址结尾为 @163.com 的所有数据,那么就可以使用下面的语句。

mysql ->SELECT user_email
             ->FROM
             ->user
             ->WHERE user_name LIKE "%@163.com";

「%」通配符除了在头尾之外,还可以放在中间,表示以特定字符开头和结尾,但是中间的字符不确定的数据检索。例如需要检索出来 user_name 里面中间含有「l」的所有数据,那么就可以使用下面的语句。

mysql ->SELECT user_name
->FROM
->user
->WHERE user_name LIKE “%l%”;

上面的语句当中,可以不用确定头部和尾部的数据字符是什么,只要确定中间包含「l」就可以了。

在使用「%」这个通配符的时候需要注意的就是,「%」可以匹配空格,所以如果头部和结尾部分包含空格的话,那么就应该在开头和结尾都加上「%」通配符。还有就是「%」通配符对于值为 NULL 的数据是不起作用,所以不能检索出来值为 NULL 数据。

2. 使用下划线「_」匹配指定位置的一个字符

下划线「」这个通配符是和百分号「%」都是可以用来匹配字符的下划线「」和百分号「%」不一样的是下划线「」只匹配该通配符位置上的一个字符。同样的,下划线「」可以放在需要检索数据的开头、结尾、中间任意一个位置,。例如需要检索出来在 user_name 这个数据表里面开头为「A」,并且后面只有三个字符的数据,那么就可以连续使用三个下划线「_」进行链接匹配。

mysql ->SELECT user_name
             ->FROM
             ->user
             ->WHERE user_name LIKE "A___";

上面使用了三个下划线「_」,所以就匹配出来紧跟着「A」有三个字符的用户名,那么数据便里面就有「Alen」和「Alex」这些用户的数据被检索出来。

下划线「_」这个通配符在不用位置的使用和前面的百分号「%」是一样的,所以这里就不重复进行演示。

3. 使用方括号「[ ]」匹配指定位置的一个字符集里面的任意一个字符

下划线「_」这个通配符给出了特定的字符进行匹配,但是对于多个需要匹配多个可能字符的时候就可以使用方括号「[ ]」。花括号「[ ]」的使用就是通过将想要匹配的数字写在花括号里面,当其中一个字符存在就会满足要求。例如需要检索出来在 user_name 这个数据表里面开头为「A」或者「T」开头的数据,那么就可以使用下面的语句来实现。

mysql ->SELECT user_name
             ->FROM
             ->user
             ->WHERE user_name LIKE "[AT]%";

只要是 user_name 里面开头为「A」或者「T」的数据都会被检索出来,初次之外,还可以在花括号里面的字符前面加上「!」,比如说需要检索开头不是「A」和「T」的数据那么就可以写成 WHERE user_name LIKE “[!AT]%” ,但是值得注意的是,不是所有的数据库都是之前花括号集合检索的,比如 MySQL 这个数据库系统就是不支持的,具体哪些数据库系统支持就需要通过查看相关的文档来进行学习。

这篇文章主要就是介绍了一下关于同佩服的使用方法和适用情况,主要包括百分号「%」、下划线「_」、花括号「[ ]」这三个通配符。

—EOF—