Quantcast
Channel: 阮一峰的网络日志
Viewing all 686 articles
Browse latest View live

科技爱好者周刊:第 66 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。

(题图:上海陆家嘴,2018)

生存是一种即时策略游戏,所有的人都是这场游戏的玩家。财务自由了,就是游戏赢家。

具体来说,又分成两种游戏:财富游戏和地位游戏。财富游戏的玩家追求更多的财富,地位游戏的玩家追求更高的地位。

古时候,地位越高,财富越多,当大官就是发大财,所以大家都玩地位游戏。现代社会,财富游戏和地位游戏慢慢脱离了关系,不当大官也可以发大财,财富游戏的玩家多了起来。

这两种游戏有本质的区别。地位游戏一定是零和的,有赢家就肯定有输家。 比如,我当了部门主管,你就不能当了。所以,地位游戏很凶险,必须时刻提防其他玩家的冷枪。财富游戏不是零和的,我盖了一幢漂亮的房子,不影响你也盖一幢。我赚钱了,不影响其他人的利益,很可能还让其他人过得更好。比如,乔布斯创办了苹果公司,其他人就有了更好的电子产品可用。

创业是财富游戏,政治是地位游戏。 因为上面的原因,我认为,创业值得参与,政治不值得参与。有些创业项目也是零和的,比如抢票技术、秒杀技术、游戏外挂等等,那也不值得参与。

前端面试知识图谱

本期周刊很高兴得到北京 开课吧 公司的支持,他们是国内领先的在线教育平台。

开课吧根据阿里、头条、美团等公司2019年的面试题,梳理了一份完整的 《"高级前端工程师"面试知识图谱》 ,XMind 格式,通过周刊这个平台带给需要的朋友,希望对大家面试有所帮助。

此外,他们还有一个 Flutter 视频教程 ,也是免费的。想要学习这个最新的手机 App 开发框架的朋友,可以跟着学习。

扫描下面二维码,就可以免费领取《前端面试知识图谱》和 Flutter 视频,只有500个免费名额,其他问题也可以微信咨询。

开课吧专门打磨的 《JavaScript高级工程师》《Web全栈架构师》 进阶课程也已经上线,帮助大家打破技术瓶颈,快速提高自身竞争力,实现职业的可持续成长。

资讯

1、汤匙抗议

最近,一位艺术家在加州普渡医药公司的大楼门口,扔下了一个钢制雕塑,重达300多公斤。这个雕塑是一个正在加热毒品的汤匙,抗议普渡医药公司制造阿片类药物,明知这类药物被当作毒品使用,而无所作为。

该艺术家拒绝将雕塑移除,市政府不得不出钱移除,然后起诉了他。普渡医药公司因此发表声明,表示以后将不再主动推销阿片类药物。

2、小屏幕 iPhone

一个开发者公布了他的 iOS App 的访问统计,份额最大的四种设备(iPhone 6,6s,7,8)都是4.7寸屏幕,占总量的近50%。

他认为,这说明消费者并非一味喜欢大屏幕手机,但是苹果公司显然不这么想,正在放弃小屏幕,新的 iOS 13不再支持iPhone 5S,6 和 6+。

3、太阳能甲醇岛

瑞士科学家提出一个设想,海洋上铺设直径100米的太阳能浮岛,利用太阳能发电。电力输送到旁边的轮船。轮船使用这些电力,从海水中提取氢气,与二氧化碳合成甲醇,然后定期将甲醇送回陆地,作为燃料。

相比汽油,甲醇的安全性更好,更有利于环境保护。根据计算,只要有17万个这样的太阳能浮岛,就能弥补这个系统的成本。

4、爬墙机器人

卡内基·梅隆大学的研究生,做出了一个爬墙机器人的原型。这个机器人脚趾的尖端带有小针,使得它可以悬挂在垂直的表面。目前,这个机器人只能爬倾斜度为55%的斜坡,改进腿部材料的强度以后,将可以爬墙。

5、电动车的噪音发生器

欧盟最新规定,新生产的电动汽车必须配备一个噪音发生器。因为相比传统的内燃机汽车,电动车太安静,行人可能会因为无法听到,而处在危险之中,对于视力不好的人和盲人尤其如此。

该法规规定,电动车必须产生跟传统发动机相似的噪音。特别是在倒车或行驶速度低于每小时19km时,汽车必须发出声音。

6、减少电网自动化

美国参议院6月27日通过法律,要求减少电网自动化的程度,不得完全采用计算机控制,必须可以手动控制,目的是防止电网遭受黑客攻击时,出现大规模停电。

2015年乌克兰电网遭受攻击,导致25万人停电,人工控制防止了更大的停电。美国议员说:"如果乌克兰当时不依靠人工运行电网,结果可能会更糟。"

7、世界最大的太阳能电厂

阿联酋在沙漠之中,建设了一个世界最大的太阳能电厂,一共安装了320万块太阳能板,可以为9万人供电。峰值发电量是1180兆瓦,相比之下,美国最大的太阳能厂是569兆瓦。

8、天宫二号返回地球

天宫二号空间站于7月19日返回地球,残骸落入南太平洋。2018年4月天宫一号接收不到地面控制,自由落体坠毁,当时引入世界关注,幸好最后落在海洋里。为了避免这种结果,天宫二号选择了受控坠毁。

天宫二号是中国第一个真正意义的空间站,2016年9月发射。2016年10月,航天员景海鹏和陈冬在里面待了30天。由于它只有10.4米长,直径3.35米,跟一辆大卡车差不多,在这里待30天一定很折磨。

9、一句话消息

  • 苹果公司收购 Intel 公司的无线芯片业务,这说明苹果还是不愿意使用高通芯片,更别说华为了,一定要制造自己的 5G 芯片。收购价10亿美元,接收2200名员工。

  • 亚马逊公司配送中心的工人计划进行罢工,抗议受到机器人一样的对待。一名工人说:"我必须每8秒取一件货物,每小时332件,每天工作10小时。"

  • 美国队今年与中国队并列,夺得国际中学生奥林匹克数学竞赛团体冠军。下面是美国队6个成员的合影,其中5个是华裔。

  • 日本网友贴出京都动画工作室的内部照片。该工作室被一个神经病放火,已经有30多个动画师遇难。有人为了抢救画稿,而来不及逃离。

文章

1、如何编写幂等的 Bash 脚本?(英文)

幂等指的是不管运行多少次,都会得到同样的结果。幂等的 Bash 脚本的最大好处是,如果前一次执行中断,那么完全可以从头运行。本文讲解如何运用各种命令的参数,做到脚本的幂等性。

2、不使用 Cookie 如何追踪用户?

追踪用户的常见做法是,把用户 ID 保存在 Cookie。如果不用 Cookie,可以追踪吗?答案是可以的,一种思路是浏览器会缓存静态资源,那么用户 ID 保存在静态资源里面就可以,比如使用 etag 保存用户 ID。

3、中国互联网报告2019(英文)

《南华早报》出品的中国互联网行业的现状和预测报告,主要是大量的数据可视化图表。

4、耗尽 CPU 的正则表达式(英文)

七月初,cloudflare 曾经全球中断服务,原因是一个正则表达式耗尽了 CPU 资源。现在,他们公布了这个正则表达式(上图),看着很复杂,简化以后,出问题是这个模式 .*.*=.* 。七个字符里面包含三个贪婪匹配,从而导致急剧放大的计算量。上面链接详细解释,为什么这个模式有问题。

5、脊髓的带宽(英文)

脊髓是人体的中枢神经传递信号的通路,它的带宽有多大?一个神经科人士估算,可以达到每秒16.625 GB的数据,比 5G 通信的最快速度,还要快几十倍。

6、如何使用 Python 和 Tor 改变 IP 地址(英文)

有的网站对爬虫有 IP 限制,该文作者将爬虫放在 Tor 网络后面,使得每次请求都有不一样的 IP 地址,从而避开限制。

7、我如何发现 Instagram 的漏洞(英文)

作者讲述他如何发现 Instagram 的一个漏洞,可以改掉任何用户的密码,最后得到 Facebook 公司三万美元奖金的故事。

8、一场将 Safa 和 Marwa 分开的战斗(英文)

BBC 的长篇图片报道。Safa 和 Marwa 是一对头部连在一起的连体姐妹,一个英国的医疗团队试图将她们分开。希望有人把这篇报道译成中文。

8、阿波罗登月计划如何促进计算机的进步(英文)

今年7月20日是阿波罗登月计划50周年的纪念日,本文回顾了登月对计算机的推动作用。上图就是导航系统的主机壳,右边是它的输入模块。(@starshipsea 投稿)

9、视频弹幕标准的建议稿

本文总结了视频弹幕的特点,建议引入新的 HTML 标签<bulletchatlist><bulletchat>。(@Mrlilili 投稿)

10、原创与前沿的区别(中文)

自然科学基金要求注明,所申请的项目属于原创性研究,还是聚焦前沿。相当多的人分不清这两者,我所在的学科组讨论的大约300个项目,大约有20%标注为"原创性研究",其实全部属于"聚焦前沿"。

工具

1、Never-Blink

一个开源游戏,浏览器随机选择另一个用户,双方通过摄像头出现在网页上,谁先眨眼谁就输。

2、OctoLinker

一个 Chrome 浏览器插件,可以将 GitHub 里面的模块加载语句(比如import xxx from yyy),变成一个链接,点击以后就进入该模块的源码。

3、Pika CDN

一个专门为 NPM 里面的 ES6 模块提供的 CDN 服务,浏览器可以直接加载该 CDN 的 ES6 模块。

4、Automagica

一个跨平台的桌面自动化工具,可以编写脚本,自动执行桌面操作。

5、Pock

这个软件可以把 Macbook 笔记本的 Dock 栏都搬到 Touchbar。

6、web-flash

网站后台管理系统,基于 Spring Boot + Vue.js 搭建。(@enilu 投稿)

7、jexcel

一个浏览器电子表格的 JS 库,与 Excel 兼容。(@ctolib 投稿)

8、Zvm

一款 Python 实现的 "超轻量级" JVM,代码简单,结构清晰,方便学习 JVM 原理。(@5A59 投稿)

9、Exthouse

Chrome 浏览器的插件会对浏览器性能造成影响。这个工具可以分析评估插件对性能的影响。

10、Serveo

一个将本地计算机暴露在互联网上的服务。它的原理很简单,你在本地通过 SSH 与该网站建立远程代理,该网站会生成一个 URL,通过这个 URL 其他人就能访问你的本地计算机。

11、uPic

一个简洁的 Mac 图床客户端,用来从桌面端上传图片到图床。(@gee1k 投稿)

12、Gallery Go

谷歌官方推出的安卓应用,一个离线的照片管理器,可以自动按照主题整理照片。

资源

1、Toolfx.com

该网站收集专供程序员使用的一些在线工具。(@hubs 投稿)

2、people.kernel.org

Linux kernel 开发人员的博客聚合网站。

3、SQL 风格指南

SQL 语句如何写得清晰明确,这个仓库列出了风格规则。

4、LaTex 教程

Overleaf 提供的 LaTex 新人教程,容易入门。

5、awesome-space

该仓库收集优秀的天文学资源。

6、voxinsta

Instagram 是世界最大的图片分享工具,但是没有"发现"频道,无法浏览平台上面的优秀图片。这个网站就可以充当 Instagram 的发现频道。

图片

1、像素人像的高分辨率化

1993年的电子游戏《Doom》,里面的人物都是像素图像。现在,有人通过神经网络训练,将这些像素图形转成了高分辨率图像。

2、世界最大的室内海滩

距离德国首都柏林60公里的地方,有一个废弃的飞机库,长360米,宽210米,高107米,面积有七个足球场那么大。

一家马来西亚公司将其改造为世界最大的室内海滩,可以容纳6000个游客,足足有四百张躺椅。

飞机库的表面都改成了玻璃,使得它成为了一个巨大的暖房。在德国严寒的冬季,也是四季如春的气候。目前,里面生长着5万株热带植物。

文摘

1、我们在公寓出售比特币

2017年,我的创业公司倒闭了。

团队只剩下 Bach 和我两个人,我们打算从头开发一款新产品。因为只有两个人,我们租了一间公寓办公,距离我家只有5分钟路程。我们就这样投入将近一年的时间,开发一个不赚钱的产品。

这时,比特币的价格大约是1200美元。我还关注另一种Monero 币。每天午餐时间,我们都在谈论它们。

比特币一钱不值的时候,Bach 和我就知道这个玩意,所以我们错过了很多发财机会,这令人感到很痛心。我以前的看法是,比特币是一个带有高科技成份的庞式骗局。我现在觉得,Monero 带有比特币的所有优点,还比它可靠,而且很便宜,那时才8美元。

我记得,大约一个月的时间,我反复思考是否应该买它,然后我决定开始行动。

我去了 Coinhako,注入资金,执行验证,设置钱包,下了买单,完成交割。确保每一步都是正确的,即使作为程序员,这也很难!

如果程序员也很难买到比特币(Monero 不能用现金购买,只能使用比特币购买),那么一般人不就更难了吗?

我问 Bach,我们开设一家比特币零售店怎么样,让人们在我们这里购买比特币。我记得,我们都笑起来,因为两个程序员开设比特币零售商店的想法太荒谬了。但我们无论如何还是这样做了,就在自己的公寓,而不是另找店址。

几个月后,加密货币一片繁荣,比特币一路上涨到20000美元。每天,我们的公寓外面都有很长的队列蜿蜒,等着在我们帮助下购买比特币。我们将员工增加到了5人。

这件事的启示就是,不要忽视荒谬的想法。先尝试一下,让市场告诉你它是否荒谬。

2、戈亚尼亚事故

1985年,巴西的一家民营癌症医院搬迁,用于癌症放射性治疗的一个放射源没有及时拆除,一直放在废弃的旧医院里。

1987年9月13日,两个窃贼躲过警卫,偷走了放射源,他们不知道这个东西极其危险。

第二天,一个窃贼开始出现腹泻和头晕,左手肿胀,有烧伤痕迹。他去医院,医生让他回家多休息。后来,他截去了几个手指。

另一个窃贼继续努力拆除设备,最终将铯胶囊从设备取了出来。他用螺丝刀刺破了胶囊,看到了里面发出深蓝色光线。他把发光物质倒了一些出来,以为这可能是一种火药,试图点燃它,但粉末无法点燃。后来,他由于长时间接触放射性物质,导致右前臂溃烂,需要截肢。

过了几天,这个窃贼把这些东西卖给了附近的废品回收站。回收站的老板注意到胶囊发出蓝光,认为这是很神奇的东西,就把它带回了家。接下来的三天里,他邀请朋友和家人观看这种物质。

他的兄弟取走了一些发光材料,带回家后,给自己6岁的女儿看。小姑娘正在吃三明治,觉得很好玩,就把这些蓝色粉末涂在自己身上,还有一些粉末落在她正在吃的三明治上,这导致她受到的辐射超过了致命剂量。

一周后,回收站的老板把这些东西卖给了第二家回收站。再过了一周,1987年9月28日,当地一个医生注意到身边很多人同时患上严重疾病,她采样了一些物质带回了医院。至此,外界开始知道,这里发生了严重的发射物质泄漏事故。

消息公开后,11万多人接受了放射性检查,其中250人确认受到辐射污染,需要治疗。其中四人死亡,分别是两名回收站员工,老板的妻子和那位6岁的小女孩。

那个小女孩埋葬在公共墓地,为了防止辐射蔓延,她的棺材里面衬了铅板。入葬那天,墓地聚集了2000多人,担心她的尸体会毒害周围的土地,发生了骚乱,人们试图通过扔石块阻止她的埋葬。尽管受到这种干扰,她仍被埋葬。

最终,这一小撮铯产生了3000立方米的污染废物。这些废物被埋在城郊两个绿色土丘中。而这片土地要经过300年的时间才可以重新使用。

言论

1、

人才政策一贯是"爱一行,干一行;干一行,专一行",没有强迫大家去干一行就一定要爱一行。

-- 任正非

2、

认同华为公司价值观的、而且能给企业创造效益的员工,要给予重用和提拨。

不认同华为公司价值观的、而且不能给企业创造效益的员工,要给予劝退。

具备两者之一的员工,要予以分类和改造。

-- 任正非

3、

如果太阳是一只西瓜那样大小,地球将会处于43米之外,需要望远镜才能看到它。

--《极简宇宙史》

4、

喜欢读书的人在死之前,活过1000次,不读书的人只活过一次。

-- 乔治 R.R. 马丁,《冰与火之歌》的作者

5、

播客的优势就是诚实,它让我们能够在人们的耳边轻声细语,并告诉他们我们的看法。今天这种诚实和内心沟通很少见,因此很有价值。

-- 《我如何制作每月收入8000美元的博客》

招聘信息

以下公司正在招聘,欢迎应聘。

本栏目为收费服务,每条价格 250 元人民币,用于资助周刊。如果你的公司正在招人,欢迎联系我(Email: yifeng.ruan@gmail.com)。

讨论区有更多职位,欢迎大家访问。

1、资深 Web 前端工程师

美团基础研发平台,面向公司内部提供基础服务,例如云计算、虚拟化、中间件、基础服务等。工作地点:上海长宁。

团队主要负责公司内部知识管理、在线实时协作相关平台研发。期待你与我们一起打磨优秀的产品。希望你有最好有3年以上前端开发经验,对 React、Node、前端工程化的有丰富经验。

Email 联系 duwanzhi[AT]meituan.com,详见JD

2、前端程序员

bg2019071903

疯狂游戏,国内小游戏 Top 1 公司。工作地点:北京海淀区。

疯狂游戏成立于2010年,成功打造多款风靡全国的游戏,如《海盗来了》、《头脑王者》、《成语小秀才》、《疯狂猜图》、《疯狂猜歌》等。 团队拥有行业内顶尖的游戏从业者,来自 Microsoft、腾讯、百度、Gameloft 等知名互联网及游戏公司。

职位详情和联系方式,详见招聘官网

3、资深前端开发工程师

美团外卖上海研发中心。工作地点:上海中山公园

团队负责美团外卖小程序、m站等用户端产品的研发,及小程序基础设施体系化建设。欢迎具有3年以上前端经验,有兴趣打造高可用、高性能前端工程化产品的同学加入。职位详情:美团外卖-前端开发

简历投递 Email:shancheng.wang@dianping.com

4、高级前端工程师

比特大陆矿池团队。 工作地点: 北京市奥北科技园。

团队负责比特大陆矿池及多币种区块链浏览器项目研发。欢迎具有3年以上工作经验的同学加入团队,负责 BITMAIN 矿池产品前端的稳定性、扩展性,探究新一代区块链前端技术架构解决方案。点击查看岗位详细信息

简历投递 Email:lichun.guo@bitmain.com

回顾

去年的本周:《周刊第 14 期》

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年7月26日

信用卡的历史起源

$
0
0

最近,我读到一篇文章,介绍信用卡的来历,讲得非常清楚,既增长金融知识,又富有趣味。

下面就是我整理的信用卡的历史。

1、

20世纪早期,商品经济发展迅速,各种产品极大丰富。

2、

最大的问题是,大部分人买不起这么多新产品。

3、

商家于是发明了分期付款。比如,购买汽车时,你不用一次付款,可以分12个月支付。这样就促进了销售。

分期付款的本质是,商家对消费者进行短期贷款。

4、

分期付款虽然促进了销售,但是对商家很麻烦,必须定期向消费者收款,还要承担消费者违约的风险。会计也因此变复杂了,必须安排专门的员工管理分期帐务。

商家还必须进行顾客调查,判断哪些消费者具有分期付款资格,这也相当麻烦。

5、

1951年,一位商人发起了一个消费者互助组织 Diners Club,只要加入,都可以拿到一张会员卡,可以在会员商店凭卡消费。

对于商家来说,这种卡省掉了顾客调查的步骤,每月只需跟 Diners Club 结账,不需要跟每个顾客结账,也没有消费者违约的风险。对于消费者来说,只要一张卡,就能在所有会员商店"先买后付"和分期付款,不用每家店都登记个人身份。

由于双方都方便,这张卡很受欢迎,12个月内,发展了42,000名会员,并被330家商家接受。

6、

1958年,加州的美国银行(Bank of America)决定借鉴 Diners Club,发行自己的会员卡 BankAmericard。

7、

BankAmericard 的最大创新,就是它允许消费者推迟还款,可以日后再还,但必须支付高额利息。相比之下,Diners Club 要求会员当月必须结清所有欠款。这种设计让会员卡变成了有利可图的小额高息贷款业务,它成了美国第一张信用卡。

一年之内,该卡扩展到加州主要城市,由于缺乏经验和风险控制,出现了大量消费者违约,最高时22%的消费者没有支付欠款。美国银行第一年的损失,达到2000万美元(约为今天的1.7亿美元)。

8、

三年之后,该卡终于盈利,并在60年代中期发展成获利丰厚的业务。消费者日益接受这种卡,并提出了一个新的要求:希望在全国范围内使用该卡,而不是只在加州。

这让美国银行感到非常头痛,因为1930年代大萧条时,国会通过了一条法律,规定银行只能在一个州营业,不能跨州开展业务。这是因为美国的银行都是私人的,曾有很多小银行高息招揽异地存款,一旦倒闭在全国范围引起恐慌和挤兑,因此规定银行不能跨州,由州政府进行监管。

9、

1966年,美国银行终于想出了扩展到全国的对策。它决定成立一个联盟,加入的银行都能发行 BankAmericard,并且发展商户,每个月跟美国银行进行结算,这样就实现了跨行消费。不管何地,消费者只要看到贴着 BankAmericard 标志的商店,就可以进去刷卡消费。

由此带来的问题是,A 银行的持卡人在 B 银行的商户刷卡,B 银行并不了解该持卡人的实际状况,但需要为他垫款,这是有风险的。另外,不同银行之间的互相结算越来越复杂,效率急剧下降。

10、

1968年10月,美国银行召集所有成员行开会,讨论怎么解决上面的问题。最后决定成立一家独立的公司,专门负责银行间的信用卡业务。所有成员行发行的都是该公司的卡,且只与该公司进行结算,但每家银行可以用自己的名义发展持卡人和商家。

这家信用卡公司最初叫 National BankAmericard Inc.,1976年改名为 VISA,这就是 VISA 卡的来历。

11、

美国银行发明了信用卡,并主导了早期的全国信用卡业务,加入联盟的银行都要向它付费。那些不愿付费的银行,就开始独立发展自己的信用卡。

1969年,美国银行以外的这些银行决定联合起来,成立自己的卡组织 Master ,这就是 Master 卡的来历。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年7月27日

信息论入门教程

$
0
0

1948年,美国数学家克劳德·香农发表论文《通信的数学理论》(A Mathematical Theory of Communication),奠定了信息论的基础。

今天,信息论在信号处理、数据压缩、自然语言等许多领域,起着关键作用。虽然,它的数学形式很复杂,但是核心思想非常简单,只需要中学数学就能理解。

本文使用一个最简单的例子,帮助大家理解信息论。

一、词汇的编码

小张是我的好朋友,最近去了美国。

我们保持着邮件联系。小张写信的时候,只使用4个词汇:狗,猫,鱼,鸟。

信的所有内容就是这4个词的组合。第一封信写着"狗猫鱼鸟",第二封信写"鱼猫鸟狗"。

信件需要二进制编码,在互联网传递。两个二进制位就可以表示四个词汇。

  • 狗 00
  • 猫 01
  • 鱼 10
  • 鸟 11

所以,第一封信"狗猫鱼鸟"的编码是00011011,第二封信"鱼猫鸟狗"的编码是10011100

二、词汇的分布

最近,小张开始养狗,信里提到狗的次数,多于其他词汇。假定概率分布如下。

  • 狗:50%
  • 猫:25%
  • 鱼:12.5%
  • 鸟:12.5%

小张的最新一封信是这样的。

狗狗狗狗猫猫鱼鸟

上面这封信,用前一节的方法进行编码。

0000000001011011

一共需要16个二进制。互联网的流量费很贵,有没有可能找到一种更短编码方式?

很容易想到,"狗"的出现次数最多,给它分配更短的编码,就能减少总的长度。请看下面的编码方式。

  • 狗 0
  • 猫 10
  • 鱼 110
  • 鸟 111

使用新的编码方式,小张的信"狗狗狗狗猫猫鱼鸟"编码如下。

00001010110111

这时只需要14个二进制位,相当于把原来的编码压缩了12.5%。

根据新的编码,每个词只需要1.75个二进制位(14 / 8)。可以证明,这是最短的编码方式,不可能找到更短的编码,详见后文。

三、编码方式的唯一性

前一节的编码方式,狗的编码是0,这里的问题是,可以把这个编码改成1吗,即下面的编码可行吗?

  • 狗 1
  • 猫 10
  • 鱼 110
  • 鸟 111

回答是否定的。如果狗的编码是1,会造成无法解码,即解码结果不唯一。110有可能是"狗猫",也可能是"鱼"。只有"狗"为0,才不会造成歧义。

下面是数学证明。一个二进制位有两种可能01,如果某个事件有多于两种的结果(比如本例是四种可能),就只能让01其中一个拥有特殊含义,另一个必须空出来,保证能够唯一解码。比如,0表示狗,1就必须空出来,不能有特殊含义。

同理,两个二进制位可以表示四种可能:00011011。上例中,0开头的编码不能用了,只剩下1011可用,用10表示猫,为了表示"鱼"和"鸟",必须将11空出来,使用三个二进制位表示。

这就是,上一节的编码方式是如何产生的。

四、编码与概率的关系

根据前面的讨论,可以得到一个结论:概率越大,所需要的二进制位越少。

  • 狗的概率是50%,表示每两个词汇里面,就有一个是狗,因此单独分配给它1个二进制位。
  • 猫的概率是25%,分配给它两个二进制位。
  • 鱼和鸟的概率是12.5%,分配给它们三个二进制位。

香农给出了一个数学公式。L表示所需要的二进制位,p(x)表示发生的概率,它们的关系如下。

通过上面的公式,可以计算出某种概率的结果所需要的二进制位。举例来说,"鱼"的概率是0.125,它的倒数为8, 以 2 为底的对数就是3,表示需要3个二进制位。

知道了每种概率对应的编码长度,就可以计算出一种概率分布的平均编码长度。

上面公式的H,就是该种概率分布的平均编码长度。理论上,这也是最优编码长度,不可能获得比它更短的编码了。

接着上面的例子,看看这个公式怎么用。小张养狗之前,"狗猫鱼鸟"是均匀分布,每个词平均需要2个二进制位。

H = 0.25 x 2 + 0.25 x 2 + 0.25 x 2 + 0.25 x 2
= 2

养狗之后,"狗猫鱼鸟"不是均匀分布,每个词平均需要1.75个二进制位。

H = 0.5 x 1 + 0.25 x 2 + 0.125 x 3 + 0.125 x 3
= 1.75

既然每个词是 1.75 个二进制位,"狗狗狗狗猫猫鱼鸟"这8个词的句子,总共需要14个二进制位(8 x 1.75)。

五、信息与压缩

很显然,不均匀分布时,某个词出现的概率越高,编码长度就会越短。

从信息的角度看,如果信息内容存在大量冗余,重复内容越多,可以压缩的余地就越大。日常生活的经验也是如此,一篇文章翻来覆去都是讲同样的内容,摘要就会很短。反倒是,每句话意思都不一样的文章,很难提炼出摘要。

图片也是如此,单调的图片有好的压缩效果,细节丰富的图片很难压缩。

由于信息量的多少与概率分布相关,所以在信息论里面,信息被定义成不确定性的相关概念:概率分布越分散,不确定性越高,信息量越大;反之,信息量越小。

六、信息熵

前面公式里的H(平均编码长度),其实就是信息量的度量。H越大,表示需要的二进制位越多,即可能发生的结果越多,不确定性越高。

比如,H1,表示只需要一个二进制位,就能表示所有可能性,那就只可能有两种结果。如果H6,六个二进制位表示有64种可能性,不确定性大大提高。

信息论借鉴了物理学,将H称为"信息熵"(information entropy)。在物理学里,表示无序,越无序的状态,熵越高。

七、信息量的实例

最后,来看一个例子。如果一个人的词汇量为10万,意味着每个词有10万种可能,均匀分布时,每个词需要 16.61 个二进制位。

log₂(100, 000) = 16.61

所以,一篇1000个词的文章,需要 1.6 万个二进制位(约为 2KB)。

16.61 x 1000 = 16,610

相比之下,一张 480 x 640、16级灰度的图片,需要123万个二进制位(约为 150KB)。

480 x 640 x log₂(16) = 1,228,800

所以,一幅图片所能传递的信息远远超过文字,这就是"一图胜千言"吧。

上面的例子是均匀分布的情况,现实生活中,一般都是不均匀分布,因此文章或图片的实际文件大小都是可以大大压缩的。

八、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月 1日

科技爱好者周刊:第 67 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。

最近,我读了小说《侏罗纪公园》

这本书改编过电影,大家应该都知道情节:一个富豪复活了恐龙,开设主题公园,结果恐龙逃出来,造成了灾难。

小说里有一个数学博士伊恩·马尔科姆(Ian Malcolm),他是混沌理论专家,专门研究复杂系统。作者通过他告诉读者:侏罗纪公园必定失败。原因很简单:复杂系统不可预测,也无法维护。

"譬如说撞球吧。你打它一下,它就开始不断反弹。理论上来说,撞球是个很简单的系统,几乎可以说是牛顿系统。由于你知道加在球上的力、球的质量,因此你可以计算出球的撞击角度,因而可以预测这颗球的轨迹。从理论上来说,你可以预测它三小时之后将处于哪个位置。

可是事实上,你最多只能预测到未来几秒钟之内的情况。因为有些非常小的影响----桌面不平、桌子木头上有小凹陷之类的问题,都会使情况发生变化。过不了多久,你那些精确的计算就会不灵了。结果便证明了,像在桌上玩撞球这种简单系统也具有不可预测的表现。"

侏罗纪公园是一个复杂系统,人为复活了6500万年前灭绝的恐龙,把它们圈养在一起,但是这些基因工程产物的习性,我们一无所知。另一方面,在这些恐龙的旁边,还要维护一个井井有条的主题公园,让游客玩得开开心心,一边看着原始动物,一边喝着可口可乐,享受现代文明。这等于创造出了一个地球上不存在的世界,并让其持续运转,势必引入了空前的复杂性。

复杂系统受到太多的变量影响,任何一个变量发生异常,都可能引发连锁反应。 侏罗纪公园最后的结局也是如此,工作人员一不小心导致停电,让恐龙逃了出来。其他人发现,整个系统过于复杂,无法恢复,只能眼睁睁看着,岛上一片大乱,恐龙到处吃人。这就是说,一个按钮错了,复杂系统就崩溃了。

你可能会说,只要严格管理,就能避免这类错误,比如引入更加完善的权限控制、建立备用供电线路等等。但是这样一来,系统的复杂性就进一步增加了,相当于 为了防止一个按钮失败,又额外引入了更多的按钮。

现实世界就是一个复杂的主题公园 ,为了保证每个"游乐设施"都正常运作,这个公园越造越复杂,管理难度成倍增加,最后人们只好让计算机来管理。根据伊恩·马尔科姆的观点,最后总归会有人按错一个按钮,现实世界就会变得像恐龙横行的侏罗纪公园。

资讯

1、石灰岩矿洞变成游戏场

历史上,美国密苏里州有一个巨大的地下石灰矿场,里面的道路密密麻麻,就像迷宫一样。现在,它当作物流仓库使用。

最近,有人在里面骑自行车漫游,将视频传到网上,引起轰动,这个场景简直像视频游戏一样。人们已经在讨论,是否可以把现实增强 AR 游戏引入这个地方。

2、神奇的北极狐

挪威的科学家在一只北极狐身上安装了 GPS 追踪器,想知道它的行踪,结果发现了惊人的结果。从2018年7月开始,这只狐狸在短短76天内,从挪威跑到了加拿大,总行程超过3500公里,平均每天移动46.3公里,最多一天移动了155公里。它成为已知的移动速度最快的狐狸。

由于它的路线相当于从欧洲跑到了北美洲,横跨了北冰洋,所以有一部分路线是在海冰上。整整两周,它都待在冰上。科学家曾经怀疑,是不是有人把它抓到船上,但是不可能有船在北极行驶3000公里。

北极狐是非常耐寒的动物,可以在冰下50度的冰冻温度生存。我们永远不会知道这只狐狸的下落,因为2019年2月,GPS 追踪器不再工作,停止发送信号。

3、不开车的租车人

一家日本租车公司发现,很多租车人并没有开车,他们归还的车辆有异常低的里程数。调查后发现,这些人租车的目的五花八门,有人为了午睡,有人为了一个临时的工作空间,有人是为了把行李和个人物品存放在车中,甚至还有人是为了手机充电。

半小时租车价格是400日元(约25元人民币),平均8个人之中就有一个人,将车辆用于非运输目的。

4、生菜收割机器人

英国剑桥大学开发了一个收割生菜的机器人。它用摄像头识别出每棵生菜,然后使用机器学习算法判断是否生长成熟,有没有感染疾病,如果一切正常,就进行收割。

科研人员希望用它来证明,传统上难以自动化的一些农业操作,也可以使用机器人。理论上,这套自动化方法不局限于生菜,任何农作物都适用。

5、美国签证要求披露社交媒体

美国签证的新版申请表格出来了,要求申请者披露自己的社交媒体帐号。指定的社交媒体,国外的主要有 Facebook、Flickr、Instagram、LinkedIn、Pinterest、tumblr、Reddit、推特、Youtube,国内的有豆瓣、QQ、新浪微博、腾讯微博和优酷。

根据规定,哪怕帐号已经删除了,只要没有超过五年,都需要披露。不过,根据最近签证的朋友反映,这项目前还是选填的。

6、Windows 1.0

微软与 Netflix 合作,在电视剧《怪奇物语》里面,还原了 Windows 1.0 操作系统。这部电视剧的时间设定在1985年,Windows 1.0 就在那一年发布。

这个还原的系统实际上可以运行,微软内部称其为 Windows 1.1。

7、新西伯利亚的废水湖

俄罗斯新西伯利亚有一个漂亮的绿松石颜色的湖泊,最近引来许多网红和访问者打卡拍照。但是,这其实根本不是一个湖泊,而是当地火力发电厂的一个巨型废水池,里面有钙盐和各种金属的氧化物,导致它呈现现在这种颜色。

下图可以看到,水里都是各种化合物,浓度极高,pH 值也很高。这里的水不要说游泳了,碰到一点,对皮肤都是有毒的。目前,电厂只能警告来访者,尽量远离这个湖泊,千万不能碰到水。

8、健康寿命

国家卫健委统计,2018年中国人的平均寿命77岁,但是健康寿命是68.7岁,后面都是带病生存。如果65岁退休,剩下的健康日子平均只有3年多。这么想想,人生还是很短暂的。

同一时间,日本厚生省也公布了,2018年日本女性平均寿命为87.32岁,男性为81.25岁,都是历史新高。

9、一句话新闻

  • 印度生产的 iPhone 开始出口欧洲。

  • 全国日发电量7月22日至25日连续四天创历史新高,最高达235.35亿千瓦时,较去年夏季最高值增长4.2%。

  • 教育部发布文件,要求全国每所高校至少有一所实体书店。

  • 美国宇航局从卫星照片发现,世界比20年前更"绿"了,主要原因是中国和印度种植了更多的树。

  • 微软云服务 Azure 最新一季度的收入(114亿美元),已经超过了 Windows(113亿美元)。目前,Azure 云服务排在亚马逊之后,名列世界第二。

文章

1、计算机专业的学生应该知道什么?(英文)

一个美国大学教授谈,计算机专业的学生应该具备哪些方面的知识。

2、indieAuth 协议介绍(英文)

OAuth 协议已经成为授权协议的标准,但是获取用户身份的时候,必须明确列出各种平台(上图),看上去非常繁琐。indieAuth 协议是针对这一点改进,让任何网站都具备 OAuth 认证功能,甚至个人的 WordPress 网站也可以用来认证身份,用户只要提交一个 URL 即可。

3、GitHub 是最大的字体盗版网站(英文)

作者发现可以在 GitHub 轻松找到并下载各种商业字体。

4、使用 Datasette 探索 SQLite 数据库(英文)

Datasette 是一个探索和管理数据集的工具,它可以把各种各样的数据都转成 SQLite 数据库,然后在浏览器里面展示数据,并进行各种操作。本文是 Datasette 作者的一个演讲,解释他为什么要做这样一个工具,图文并茂,值得一读。

5、著名程序员的工作时间(英文)

Git 提交代码的时候,都会记录提交时间。作者统计了多个一流程序员的提交时间,比如 Linus (上图)基本上是工作时间提交代码,晚上10点以后不工作。

6、Raw 文件是什么样子?(英文)

数码相机拍摄的原始文件就是 Raw 文件,作者尝试直接读取 Raw 文件。

7、安全相关的 HTTP 头信息介绍(英文)

HTTP 头信息有许多字段跟安全相关,本文介绍所有这些字段,并给出设置方法。

8、利用谷歌爬虫的 XSS 攻击(英文)

有的网站安全性差,可以注入外部脚本,即 XSS 攻击。作者发现,注入脚本的网页可以提交给谷歌爬虫,被谷歌收录,用来提高第三方网站的排名。这个漏洞已经被谷歌修复了,但是攻击思路值得学习。

9、我的创业体会(英文)

一个印度创业者讲述自己的创业经历,最后总结三条体会。有一条说,不要想着做独角兽,要想着做蟑螂,那些大公司和风投看不上的角落,有更大的机会活下去。

10、冰川下的飞机(英文)

1942年,美军的一个飞行中队,包括6架战斗机和2架轰炸机,在飞越大西洋的过程中,由于天气恶劣而迷航,不得不在格陵兰冰川上迫降。1988年,这些飞机在冰下80多米的深处被发现,探险队抢救出了一架战斗机。经过修复,这架飞机于2002年10月重新飞上了天空。本文讲述飞机的发现和挖掘过程。

工具

1、postmarketos

一个适用于手机的 Linux 操作系统。

2、reverie

一个优雅的 Jekyll 静态网站主题。

3、数字雨

浏览器还原电影《黑客帝国》的数字雨,链接为 Codepen.io 演示。(@ developerchengang 投稿)

4、巡云轻论坛系统

Java + MySQL 开发的一个论坛程序,自适应手机端和电脑端,界面简洁,功能完整。(@diyhi 投稿)

5、lazydocker

命令行管理 Docker 服务的一个图形界面工具。

6、videodownloader

一个使用 Electron 制作的 Youtube-dl 的图形界面,可以下载包括 Youtube 在内的110个网站的视频。

7、谷歌地球 Web 版

谷歌地球的官方 Web 版,可以浏览全球的卫星照片。该应用体积很大,初始访问可能需要很长时间加载。

8、show-facebook-computer-vision-tags

Facebook 从2016年4月开始,对用户上传的每张照片进行机器识别,给出内容的关键词。这些关键词都随照片一起发送,但不会对用户显示。这个 Chrome 浏览器浏览器插件,可以把它们显示在照片上。

9、visitor-count-badge

一个开源服务,可以统计 GitHub 仓库的 Readme 文件的阅读次数,然后生成 badge 徽章,以便挂在仓库里。(@jwenjian 投稿)

10、AMP

AMP 是一个基于 web components 技术的网页组件库,属于谷歌的官方项目,开发者基本都是谷歌的在职工程师。

11、lit-html

lit-html 是一个极其简单好用的网页模板渲染库,使用 ES6 语法,一共只有两个方法。它是谷歌的 Polymer 团队出品。

资源

1、 MacOS Mojave 动态壁纸

MacOS 目前支持动态壁纸,壁纸会随着一天里面时间的不同,而自动变换。该网站提供各种动态壁纸下载。

2、独角兽公司榜单

该网站收录了估值达到 10 亿美元的创业公司,实时更新。(@kiddyuchina 投稿)

3、旋律百科

该网站收集各种旋律,用户可以通过多种方式(文字、声音、网页键盘)搜索旋律。

4、马克思主义文库

在线的马克思主义中文文库,包括马恩列斯、毛选等各种文献。(@zhang14725804 投稿)

5、HTTP Cat

该网站为各种 HTTP 状态码都生成一张猫的照片。(@sedgwickz 投稿)

6、联想 BIOS 模拟器

BIOS 是计算机的开机固件,联想公司在官网提供该公司 BIOS 的网页模拟器。

7、Developer jobs in Japan

该网站收集日本的软件工作机会,想去日本的朋友可以关注,由一个在日本工作的中国工程师维护。早期是邮件列表,第49期曾经推荐过,现在升级成了网站。(@rourouroujiang 投稿)

8、github-do-not-ban-us

一位伊朗开发者发起的项目,抗议只要国籍是美国政府制裁的国家,该用户就会被限制使用 GitHub。 (@marsvet 投稿)

图片

1、青蛙设计

青蛙设计是一家著名的设计公司,苹果公司早期的产品大多由该公司设计。这篇文章收集了很多青蛙设计的作品。

下图是苹果的 Lisa 电脑的设计原型。

下面是乔布斯离开苹果以后,推出的 NeXT 电脑。

2、登月宇航服

阿波罗计划的登月宇航员,宇航服的袖口都缝着操作步骤,防止宇航员漏掉某一个操作。

文摘

1、机器里的达尔文

1863年6月13日,英国小说家塞缪尔·巴特勒在新西兰的《新闻报》上发表文章《机器里的达尔文》,提出了机器可能是一种不断进化的"机械生命" ,最终机器可能取代人类成为优势物种。

我们自己创造了自己的继承者:我们每天都在增加他们身体的美丽和精致,我们每天都给予他们更大的力量,并通过各种巧妙的设计,让他们可以自我调节。随着时间的推移,我们将发现自己是次等种族。

日复一日,机器正变得比人类更强。我们日复一日地对他们屈服,每天都有更多的人被发展成机器的奴隶,更多的人每天将他们一生的精力投入到机器的发展中。结果,只是一个时间问题,机器最终将掌握真正的世界霸权。

2、我侄子的最后几天

我的侄子迈克尔曾经是一个健康的少年,但是不幸得了癌症,于2019年5月22日去世,只有15岁。

这六年来,所有的医疗方法都已经用过,完全无效。最后,我们只能束手无策地面对他的最后几天。

2019年5 月14 日,我来到医院。他坐在医院的病床上,正在玩《精英:危机四伏》游戏。

这是他最喜欢的游戏。在他生命的最后时刻,我实在不知道能做什么,只能希望他在游戏里面玩得开心。

我把他的情况和照片,发上了推特。《精英:危机四伏》的开发公司看到了推特,主动联系我,表示愿意赠送迈克尔一些礼物。当我透露,他可能只有几天生命了,他们表示会先给他提升一些装备。

第二天,他们就来病房看望了迈克尔,带来了开发团队所有成员的签名海报。游戏的创始人也在网上送出了祝福。

回去以后,他们把这次探望,放到了游戏论坛上。玩家们非常感动,纷纷在游戏里鼓励和帮助迈克尔。这让迈克尔心情愉快,一连几个小时在做任务,还从病房走到了食品间,这是几周来都没有的壮举。

迈克尔提出想访问游戏公司,公司在城市的另一边,医生建议不要离开医院。很快,他的病情恶化,面部肿胀越来越严重,眼睛很难睁开了,但是他仍然设法在屏幕上观察并修补他的太空船。

三天之后的周六,游戏公司得知他已经看不见时,提出专门为他创造一个音频章节,让他可以听到游戏情节。起初,我拒绝了这个提议,觉得这需要太多的时间,迈克尔可能没有那么多时间。但是随后,迈克尔的情况有所好转,游戏公司就开始推进这个想法。

周日,编剧在一天内写了一篇精彩的7000字的剧本。下周一,游戏公司找来三位专业配音演员,录制这个故事。周二,音频工程师合成整个音频,当天晚上将这个音频小说送到了医院,迈克尔听完了它。

周三,我联网跟他一起玩游戏。突然间,他开始咳嗽,通信断了,我立刻动身前往医院。到达那里时,他已经注射了镇静剂,处于昏迷状态。他的妈妈、爸爸和我轮流和他坐在一起,握住他的手。我在他耳边播放了专属于他的那个音频章节。

几个小时后,他去世了。

他的棺材写着游戏的格言:"领航员不死,将在另一个太空站重生。"

言论

1、

知识使人自由,或者起码渴望自由。

-- [南非] 特雷弗·诺亚《天生有罪》

2、

有些书只需尝一口,有些书可以吞下去,有些书要咀嚼和消化。

-- 弗朗西斯·培根。这段话镶刻在纽约公共图书馆门前的地面。

3、

推特宣布限制第三方客户端时,我就决定不再使用它了。这种服务要求用户投入大量时间,却不提供个人数据的所有权和控制权。

-- 《我相信 IndieWeb》

4、

宇宙不过是一片巨大的黑暗,银河系是漂浮在其中一个角落的恒星群岛。

-- 《极简宇宙史》

5、

日食与遮住头顶的遮阳伞没有什么不同。只不过挡住太阳的不是伞,而是月亮。

-- 《向女儿解释月蚀》

招聘信息

以下公司正在招聘,欢迎应聘。

本栏目为收费服务,每条价格 250 元人民币,用于资助周刊。如果你的公司正在招人,欢迎联系我(Email: yifeng.ruan@gmail.com)。

讨论区有更多职位,欢迎大家访问。

1、 高级前端开发工程师

易路软件,企业人力资源的 SaaS 服务,提供复杂薪酬计算的解决方案,刚拿到 C 轮投资。工作地点:上海闵行区。

本岗位参与公司前端产品研发和维护,包括不限于 PC 端、H5、小程序、Node 服务。要求3年以上的前端开发经验,熟悉 MVVM、组件化思想,精通 VUE / React 的一种。查看详细信息

简历投递 Email:luol@ersoft.io

2、前端技术专家Java 技术专家

阿里钉钉(DingTalk),中国领先的智能移动办公平台。工作地点:北京、杭州。

这里是钉钉文档中心的对外招聘,负责开发和维持钉钉的企业文档服务,点击查看招聘详情

联系方法:钉钉号/微信号 pizner,Email zhanxin.lin@alibaba-inc.com

3、滴滴出行

本团队致力于以 IM 为中心,打造一套安全高效的企业智能沟通协作平台,赋能企业信息化与组织管理,提高公司员工的工作效率,支撑业务增长。

招聘岗位:

工作地点:北京 / 深圳

简历投递: linyuan@didichuxing.com

回顾

去年的本周:《周刊第 15 期》

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月 2日

Web Components 入门实例教程

$
0
0

组件是前端的发展方向,现在流行的 React 和 Vue 都是组件框架。

谷歌公司由于掌握了 Chrome 浏览器,一直在推动浏览器的原生组件,即 Web Components API。相比第三方框架,原生组件简单直接,符合直觉,不用加载任何外部模块,代码量小。目前,它还在不断发展,但已经可用于生产环境。

Web Components API 内容很多,本文不是全面的教程,只是一个简单演示,让大家看一下怎么用它开发组件。

一、自定义元素

下图是一个用户卡片。

本文演示如何把这个卡片,写成 Web Components 组件,这里是最后的完整代码

网页只要插入下面的代码,就会显示用户卡片。


<user-card></user-card>

这种自定义的 HTML 标签,称为自定义元素(custom element)。根据规范,自定义元素的名称必须包含连词线,用与区别原生的 HTML 元素。所以,<user-card>不能写成<usercard>

二、customElements.define()

自定义元素需要使用 JavaScript 定义一个类,所有<user-card>都会是这个类的实例。


class UserCard extends HTMLElement {
  constructor() {
    super();
  }
}

上面代码中,UserCard就是自定义元素的类。注意,这个类的父类是HTMLElement,因此继承了 HTML 元素的特性。

接着,使用浏览器原生的customElements.define()方法,告诉浏览器<user-card>元素与这个类关联。


window.customElements.define('user-card', UserCard);

三、自定义元素的内容

自定义元素<user-card>目前还是空的,下面在类里面给出这个元素的内容。


class UserCard extends HTMLElement {
  constructor() {
    super();

    var image = document.createElement('img');
    image.src = 'https://semantic-ui.com/images/avatar2/large/kristy.png';
    image.classList.add('image');

    var container = document.createElement('div');
    container.classList.add('container');

    var name = document.createElement('p');
    name.classList.add('name');
    name.innerText = 'User Name';

    var email = document.createElement('p');
    email.classList.add('email');
    email.innerText = 'yourmail@some-email.com';

    var button = document.createElement('button');
    button.classList.add('button');
    button.innerText = 'Follow';

    container.append(name, email, button);
    this.append(image, container);
  }
}

上面代码最后一行,this.append()this表示自定义元素实例。

完成这一步以后,自定义元素内部的 DOM 结构就已经生成了。

四、<template>标签

使用 JavaScript 写上一节的 DOM 结构很麻烦,Web Components API 提供了<template>标签,可以在它里面使用 HTML 定义 DOM。


<template id="userCardTemplate">
  <img src="https://semantic-ui.com/images/avatar2/large/kristy.png" class="image">
  <div class="container">
    <p class="name">User Name</p>
    <p class="email">yourmail@some-email.com</p>
    <button class="button">Follow</button>
  </div>
</template>

然后,改写一下自定义元素的类,为自定义元素加载<template>


class UserCard extends HTMLElement {
  constructor() {
    super();

    var templateElem = document.getElementById('userCardTemplate');
    var content = templateElem.content.cloneNode(true);
    this.appendChild(content);
  }
}  

上面代码中,获取<template>节点以后,克隆了它的所有子元素,这是因为可能有多个自定义元素的实例,这个模板还要留给其他实例使用,所以不能直接移动它的子元素。

到这一步为止,完整的代码如下。


<body>
  <user-card></user-card>
  <template>...</template>

  <script>
    class UserCard extends HTMLElement {
      constructor() {
        super();

        var templateElem = document.getElementById('userCardTemplate');
        var content = templateElem.content.cloneNode(true);
        this.appendChild(content);
      }
    }
    window.customElements.define('user-card', UserCard);    
  </script>
</body>

五、添加样式

自定义元素还没有样式,可以给它指定全局样式,比如下面这样。


user-card {
  /* ... */
}

但是,组件的样式应该与代码封装在一起,只对自定义元素生效,不影响外部的全局样式。所以,可以把样式写在<template>里面。


<template id="userCardTemplate">
  <style>
   :host {
     display: flex;
     align-items: center;
     width: 450px;
     height: 180px;
     background-color: #d4d4d4;
     border: 1px solid #d5d5d5;
     box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.1);
     border-radius: 3px;
     overflow: hidden;
     padding: 10px;
     box-sizing: border-box;
     font-family: 'Poppins', sans-serif;
   }
   .image {
     flex: 0 0 auto;
     width: 160px;
     height: 160px;
     vertical-align: middle;
     border-radius: 5px;
   }
   .container {
     box-sizing: border-box;
     padding: 20px;
     height: 160px;
   }
   .container > .name {
     font-size: 20px;
     font-weight: 600;
     line-height: 1;
     margin: 0;
     margin-bottom: 5px;
   }
   .container > .email {
     font-size: 12px;
     opacity: 0.75;
     line-height: 1;
     margin: 0;
     margin-bottom: 15px;
   }
   .container > .button {
     padding: 10px 25px;
     font-size: 12px;
     border-radius: 5px;
     text-transform: uppercase;
   }
  </style>

  <img src="https://semantic-ui.com/images/avatar2/large/kristy.png" class="image">
  <div class="container">
    <p class="name">User Name</p>
    <p class="email">yourmail@some-email.com</p>
    <button class="button">Follow</button>
  </div>
</template>

上面代码中,<template>样式里面的:host伪类,指代自定义元素本身。

六、自定义元素的参数

<user-card>内容现在是在<template>里面设定的,为了方便使用,把它改成参数。


<user-card
  image="https://semantic-ui.com/images/avatar2/large/kristy.png"
  name="User Name"
  email="yourmail@some-email.com"
></user-card>

<template>代码也相应改造。


<template id="userCardTemplate">
  <style>...</style>

  <img class="image">
  <div class="container">
    <p class="name"></p>
    <p class="email"></p>
    <button class="button">Follow John</button>
  </div>
</template>

最后,改一下类的代码,把参数加到自定义元素里面。


class UserCard extends HTMLElement {
  constructor() {
    super();

    var templateElem = document.getElementById('userCardTemplate');
    var content = templateElem.content.cloneNode(true);
    content.querySelector('img').setAttribute('src', this.getAttribute('image'));
    content.querySelector('.container>.name').innerText = this.getAttribute('name');
    content.querySelector('.container>.email').innerText = this.getAttribute('email');
    this.appendChild(content);
  }
}
window.customElements.define('user-card', UserCard);    

七、Shadow DOM

我们不希望用户能够看到<user-card>的内部代码,Web Component 允许内部代码隐藏起来,这叫做 Shadow DOM,即这部分 DOM 默认是隐藏的,开发者工具里面看不到。

自定义元素的this.attachShadow()方法开启 Shadow DOM,详见下面的代码。


class UserCard extends HTMLElement {
  constructor() {
    super();
    var shadow = this.attachShadow( { mode: 'closed' } );

    var templateElem = document.getElementById('userCardTemplate');
    var content = templateElem.content.cloneNode(true);
    content.querySelector('img').setAttribute('src', this.getAttribute('image'));
    content.querySelector('.container>.name').innerText = this.getAttribute('name');
    content.querySelector('.container>.email').innerText = this.getAttribute('email');

    shadow.appendChild(content);
  }
}
window.customElements.define('user-card', UserCard);

上面代码中,this.attachShadow()方法的参数{ mode: 'closed' },表示 Shadow DOM 是封闭的,不允许外部访问。

至此,这个 Web Component 组件就完成了,完整代码可以访问这里。可以看到,整个过程还是很简单的,不像第三方框架那样有复杂的 API。

八、组件的扩展

在前面的基础上,可以对组件进行扩展。

(1)与用户互动

用户卡片是一个静态组件,如果要与用户互动,也很简单,就是在类里面监听各种事件。


this.$button = shadow.querySelector('button');
this.$button.addEventListener('click', () => {
  // do something
});

(2)组件的封装

上面的例子中,<template>与网页代码放在一起,其实可以用脚本把<template>注入网页。这样的话,JavaScript 脚本跟<template>就能封装成一个 JS 文件,成为独立的组件文件。网页只要加载这个脚本,就能使用<user-card>组件。

这里就不展开了,更多 Web Components 的高级用法,可以接着学习下面两篇文章。

九、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月 6日

xargs 命令教程

$
0
0

xargs是 Unix 系统的一个很有用的命令,但是常常被忽视,很多人不了解它的用法。

本文介绍如何使用这个命令。

一、标准输入与管道命令

Unix 命令都带有参数,有些命令可以接受"标准输入"(stdin)作为参数。


$ cat /etc/passwd | grep root

上面的代码使用了管道命令(|)。管道命令的作用,是将左侧命令(cat /etc/passwd)的标准输出转换为标准输入,提供给右侧命令(grep root)作为参数。

因为grep命令可以接受标准输入作为参数,所以上面的代码等同于下面的代码。


$ grep root /etc/passwd

但是,大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数。举例来说,echo命令就不接受管道传参。


$ echo "hello world" | echo

上面的代码不会有输出。因为管道右侧的echo不接受管道传来的标准输入作为参数。

二、xargs 命令的作用

xargs命令的作用,是将标准输入转为命令行参数。


$ echo "hello world" | xargs echo
hello world

上面的代码将管道左侧的标准输入,转为命令行参数hello world,传给第二个echo命令。

xargs命令的格式如下。


$ xargs [-options] [command]

真正执行的命令,紧跟在xargs后面,接受xargs传来的参数。

xargs的作用在于,大多数命令(比如rmmkdirls)与管道一起使用时,都需要xargs将标准输入转为命令行参数。


$ echo "one two three" | xargs mkdir

上面的代码等同于mkdir one two three。如果不加xargs就会报错,提示mkdir缺少操作参数。

三、xargs 的单独使用

xargs后面的命令默认是echo


$ xargs
# 等同于
$ xargs echo

大多数时候,xargs命令都是跟管道一起使用的。但是,它也可以单独使用。

输入xargs按下回车以后,命令行就会等待用户输入,作为标准输入。你可以输入任意内容,然后按下Ctrl d,表示输入结束,这时echo命令就会把前面的输入打印出来。


$ xargs
hello (Ctrl + d)
hello

再看一个例子。


$ xargs find -name
"*.txt"
./foo.txt
./hello.txt

上面的例子输入xargs find -name以后,命令行会等待用户输入所要搜索的文件。用户输入"*.txt",表示搜索当前目录下的所有 TXT 文件,然后按下Ctrl d,表示输入结束。这时就相当执行find -name *.txt

四、-d 参数与分隔符

默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。


$ echo "one two three" | xargs mkdir

上面代码中,mkdir会新建三个子目录,因为xargsone two three分解成三个命令行参数,执行mkdir one two three

-d参数可以更改分隔符。


$ echo -e "a\tb\tc" | xargs -d "\t" echo
a b c

上面的命令指定制表符\t作为分隔符,所以a\tb\tc就转换成了三个命令行参数。echo命令的-e参数表示解释转义字符。

五、-p 参数,-t 参数

使用xargs命令以后,由于存在转换参数过程,有时需要确认一下到底执行的是什么命令。

-p参数打印出要执行的命令,询问用户是否要执行。


$ echo 'one two three' | xargs -p touch
touch one two three ?...

上面的命令执行以后,会打印出最终要执行的命令,让用户确认。用户按下回车以后,才会真正执行。

-t参数则是打印出最终要执行的命令,然后直接执行,不需要用户确认。


$ echo 'one two three' | xargs -t rm
rm one two three

六、-0 参数与 find 命令

由于xargs默认将空格作为分隔符,所以不太适合处理文件名,因为文件名可能包含空格。

find命令有一个特别的参数-print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。


$ find /path -type f -print0 | xargs -0 rm

上面命令删除/path路径下的所有文件。由于分隔符是null,所以处理包含空格的文件名,也不会报错。

还有一个原因,使得xargs特别适合find命令。有些命令(比如rm)一旦参数过多会报错"参数列表过长",而无法执行,改用xargs就没有这个问题,因为它对每个参数执行一次命令。


$ find . -name "*.txt" | xargs grep "abc"

上面命令找出所有 TXT 文件以后,对每个文件搜索一次是否包含字符串abc

七、-L 参数

如果标准输入包含多行,-L参数指定多少行作为一个命令行参数。


$ xargs find -name
"*.txt"   
"*.md"
find: paths must precede expression: `*.md'

上面命令同时将"*.txt"*.md两行作为命令行参数,传给find命令导致报错。

使用-L参数,指定每行作为一个命令行参数,就不会报错。


$ xargs -L 1 find -name
"*.txt"
./foo.txt
./hello.txt
"*.md"
./README.md

上面命令指定了每一行(-L 1)作为命令行参数,分别运行一次命令(find -name)。

下面是另一个例子。


$ echo -e "a\nb\nc" | xargs -L 1 echo
a
b
c

上面代码指定每行运行一次echo命令,所以echo命令执行了三次,输出了三行。

八、-n 参数

-L参数虽然解决了多行的问题,但是有时用户会在同一行输入多项。


$ xargs find -name
"*.txt" "*.md"
find: paths must precede expression: `*.md'

上面的命令将同一行的两项作为命令行参数,导致报错。

-n参数指定每次将多少项,作为命令行参数。


$ xargs -n 1 find -name

上面命令指定将每一项(-n 1)标准输入作为命令行参数,分别执行一次命令(find -name)。

下面是另一个例子。


$ echo {0..9} | xargs -n 2 echo
0 1
2 3
4 5
6 7
8 9

上面命令指定,每两个参数运行一次echo命令。所以,10个阿拉伯数字运行了五次echo命令,输出了五行。

九、-I 参数

如果xargs要将命令行参数传给多个命令,可以使用-I参数。

-I指定每一项命令行参数的替代字符串。


$ cat foo.txt
one
two
three

$ cat foo.txt | xargs -I file sh -c 'echo file; mkdir file'
one 
two
three

$ ls 
one two three

上面代码中,foo.txt是一个三行的文本文件。我们希望对每一项命令行参数,执行两个命令(echomkdir),使用-I file表示file是命令行参数的替代字符串。执行命令时,具体的参数会替代掉echo file; mkdir file里面的两个file

十、--max-procs 参数

xargs默认只用一个进程执行命令。如果命令要执行多次,必须等上一次执行完,才能执行下一次。

--max-procs参数指定同时用多少个进程并行执行命令。--max-procs 2表示同时最多使用两个进程,--max-procs 0表示不限制进程数。


$ docker ps -q | xargs -n 1 --max-procs 0 docker kill

上面命令表示,同时关闭尽可能多的 Docker 容器,这样运行速度会快很多。

十一、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月 8日

科技爱好者周刊:第 68 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。

封面图片:松江方塔,上海,2018。

该塔高九层,始建于宋朝,清朝重修,沿袭了唐代砖塔风格。

刊首语

一个月之前,我在周刊讨论区发了一个帖子《谁在招人?》,欢迎企业免费张贴招聘/实习信息。现在已经有30多家公司的100多个岗位,找工作的朋友可以关注。

有的读者私下问我:"大部分公司没写报酬,工资会不会给得低?"我心想,你怎么会有这种担心!普通程序员的工资能有多大差别呢?

程序员是一个高度流动的行业。一家公司如果待遇偏低,肯定留不住人。普通程序员的待遇,公司与公司之间的差别不会特别大。

程序员分为两种:普通程序员需要找工作,高级程序员不需要找工作,企业争相邀请他加入。

对于大多数人来说,要操心的不是找一份工资高的工作,而是设法让自己尽快变成高级程序员,可以在这个行业里面为自己定价,而不是让别人给你定价。

Vue 源码解析视频

目前,Vue 和 React 已经成为前端工程师的基本技能。Vue 3.0 很快就会发布,但是有些 Web 前端工程师对 Vue 2.0 都没有做到熟练掌握。

如果你想深入学习 Vue,现在有一个很好的机会。国内领先的在线教育平台"开课吧"联系我,愿意给周刊读者提供了一个特别优惠。

定价1988元的视频课程《Vue 源码解析》,限时免费领取 ,适合所有想提升技术水平的前端学习者。

他们给了我400个名额,微信扫描下面的二维码领取。

另外,大家熟知的IT技术大牛 廖雪峰 已加盟开课吧,耗时半年研发了精品付费课程---- 《Web全栈架构师》 ,来帮助初级前端工程师实现全方位进阶。课程深度对标百度T6--T7,适合有1-4年开发经验的前端程序员们学习。

《Web全栈架构师》

  • 开课时间: 12月底
  • 讲课老师:盛鑫(专家),前百度和360前端架构师
  • 课程价格:7980元(前50名)

课程的其他问题,可以加上面微信了解。

资讯

1、新加坡进口澳大利亚太阳能

新加坡由于国土面积太小,无法发展太阳能。上图是世界最大港口之一的新加坡港,已经拥挤不堪,紧邻住宅区了。另一方面,澳大利亚地广人稀,内陆地区有着大片阳光普照的荒漠。

一家私人公司提出了一个计划,在澳大利亚建设一个大型太阳能电厂,然后通过太平洋的海底电缆,将电能输送到新加坡,两国政府都已经表示有兴趣。按照计划,该电厂可以满足新加坡20%的电力需求。如果可行,世界上的荒漠国家就多了一条发展道路。

2、淘汰纸制教科书

美国主要的教科书出版公司 Pearson 宣布,将逐步淘汰纸制教科书,向电子书转变。这家公司目前数字业务的收入,已经超过总收入的一半。

大家都知道,美国的大学教科书是非常贵的,很多学生买不起,只能选择购买二手书或者租用教科书。为了保证收入,书商不得不每三年推出教科书的新版,这是行业的通用做法。Pearson 公司认为,改成电子书以后,对收入更有利,因为可以持续不断地更新教科书,不再是三年一个版本,而是每个月都有新内容,能够推动学生付钱购买。

3、儿童的职业选择

阿波罗11号飞船登月50周年纪念日(7月20日)前夕,乐高公司委托一家民意调查公司,调查了中国、英国和美国的3,000名儿童,让他们选择最想从事的职业。

中国儿童的选择依次是:宇航员、教师、音乐家、体育明星、网络红人。

英美儿童的选择依次是:网络红人、教师、体育明星、音乐家、宇航员。

4、北极大火

根据卫星照片,北极圈内多个地点,从阿拉斯加、西伯利亚到格陵兰,目前都是烟雾缭绕,表明那些地方都正在发生森林大火。

今年6月,北极圈的气温是有史以来最高的,很多地方超过30度,异常闷热,干燥高温导致了这些森林火灾。更糟糕的是,火灾会释放大量二氧化碳,进而引起气温进一步升高,而更高的气温又引发了更多的火灾。那些地点都是人迹罕至,不太可能去扑救,只能听任大火燃烧。

5、FaceApp 受调查

最近,FaceApp 非常受欢迎,它使用人工智能,给出用户变成老年人的样子,正在病毒式传播。这是一家俄罗斯公司开发的 App,据估计,它至少已经有了1.5亿人的面孔数据。

美国一个前参议员认为,这已经构成了对国家安全的威胁,要求联邦调查局介入调查,美国公民的面孔和其他个人数据是否将被发送和存储到俄罗斯。

6、AI 绘制地图

人工绘制地图,通常很慢,标识道路、高速公路、桥梁等,需要大量的投入。Facebook 开发了一个人工智能系统,可以从卫星照片自动生成地图。上图中,白色线条是现有道路,粉红色线条是人工智能识别出来的道路。

这套系统可以识别出上图中的河边小道,因此对地理信息不全的农村地区尤其有用。该系统已经补全了泰国和印尼现有地图缺失的道路,将泰国地图的道路总里程,从28万英里增加到了60万英里。传统方法需要三到五年,它只用了18个月。

下图是用来训练的卫星照片,白色线条是需要发现的道路。

7、软件外包的风险

西门子公司的很多软件都是外包开发的。一个外包程序员在软件里面留下了一个逻辑炸弹,设置在指定日期后触发,会使得软件崩溃。

结果,2014年开始,软件就发生故障了。西门子只能打电话找那个外包程序员,付费让他修复。这种情况发生了多次,直到2016年5月,才有西门子员工发现这是故意留下的逻辑炸弹。目前,该外包程序员已经认罪,等待法庭判决,面临最高10年的监禁,罚款25万美元。

8、一句话消息

  • 哥斯达黎加是中美洲的岛国,500万人口,已经完全使用可再生能源运行了300天。目前,全国所有电力都来自水力、地热、风能和太阳能。

  • 世界第一个商用的核聚变反应堆,官方宣布已经取得重大进展,将于2025年12月正式运营。

  • 炸弹无人机的实物被贴到了推特,可以编程指定飞行轨迹,具有12分钟飞行时间,或20分钟滞空时间。难以想象,这种武器普及的后果。

文章

1、如何识别无头浏览器(英文)

命令行抓取网页,往往使用无头浏览器,比如 Puppeteer 这样的工具。怎样才能区分正常的访问与无头浏览器呢?本文提供了一个方法。

2、太空中如何大小便? (中文)

太空没有重力,所有东西都是漂浮的,大小便成了棘手的问题。本文介绍美国宇航局如何在零重力的太空环境,解决宇航员的大小便问题。

上图是国际空间站的马桶,这里的关键是屁股与马桶之间不能有空气泄漏,这样就可以用气压吸走排泄物。

3、如何识别 Chrome 浏览器的隐身模式(英文)

隐身模式用来防止网站追踪用户。有时,开发者可能希望识别,哪些用户正在使用隐身模式。本文介绍可用的方法。

4、华为基本法(中文)

华为公司1998年通过的一份公司纲领性文件,详细阐述了公司的原则和管理方法,长达1.7万字。第一条就明确写明,华为是一家信息设备供应商,永远不进入信息服务业。

5、什么是 CGI 脚本?(英文)

CGI 是"通用网关接口"的缩写,用来将任意脚本接入 Web 服务器,处理 HTTP 请求。它属于诞生于互联网早期的一种技术,如果网站访问量不大,现在依然可以使用。学习它有助于深入理解后端的 Web 实现。

6、什么是 CVE 漏洞?(英文)

软件漏洞经常有一个 CVE 编号,比如 CVE-2018-8589,这个编号是什么意思?它是怎么来的?请看这篇英语的简单介绍。

7、谷歌表格的27个诀窍(英文)

谷歌表格(Google Sheet)的功能非常强大,本文介绍27个很有用、但是你可能不知道的使用诀窍。

8、制造美少女卡通头像自动售货机(英文)

一个旧金山的动漫团队,在动漫展览会上搭建了一个美少女卡通头像的"自动售货机"(上图)。

用户付款后,可以选择一个头像,然后对头像进行发型和颜色的调整,最后打印出来,拿到头像证书。

9、运动平滑正在破坏电影(英文)

电影每秒是24帧,电视机的刷新率是 60Hz ~ 240Hz,这导致电视机播放电影时,有时会产生不连贯的现象。为了减轻这个问题,现在的电视机都默认开启了"运功平滑"功能,会在电影的每帧之间自动插入新的帧。很多电影工作者认为,这种功能对电影艺术的破坏,大于它带来的好处。

10、如何使用 JavaScript 写一个扫雷游戏(英文)

作者讲解如何用 JavaScript 写一个网页的扫雷游戏。

11、JetBrains IDE 基本快捷键(中文)

IntelliJ 的快捷键绝大部分同样适用于其他 JetBrains IDE,包括前端开发常用的 WebStorm 和 Android 开发常用的 Android Studio。掌握这些快捷键能使你成为一个更娴熟的软件开发者。(@Alice-sos 投稿)

工具

1、hub

GitHub 官方的命令行客户端。

2、Zen Flowchart

简单好用的在线流程图工具。

3、autosetup

一个 Bash 脚本,可以在 Debian 系的发行版上,让用户通过图形界面,一次性选择所要安装的应用程序,主要用于新系统的装机。

4、foliate

一个使用 GTK 图形框架的 Epub 桌面阅读器,只支持 Linux 系统。

5、pixelfed

照片分享服务 Instagram 的开源替代品,基于 ActivityPub 协议,可以与其他平台交换信息。

6、面包多

创造者出售数字作品的平台。你上传作品,设定价格,在这个平台出售。(@wdkwdkwdk 投稿)

7、哈利路亚英文输入法

这是 Mac 平台上一款智能英语输入法,可以提示单词拼写和中文解释。(@dongyuwei 投稿)

8、rc-leaflet

一个基于 Leaflet 地图引擎的 React 地图组件库。(@Coder-JJ 投稿)

9、SoloPi

支付宝推出的安卓应用自动化测试工具。公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。(@ifrontend-xyz 投稿)

10、那样记账

一个安卓的记账 App,有报表和图表功能,支持多个账户。(@Chloe-Y 投稿)

11、守望先锋 UI 组件库

一个《守望先锋》游戏风格的组件库,基于 Vue.js。(@Haixiang6123 投稿)

资源

1、favorite-link

笔记仓库,收集各种开发工具和资源的链接,每日更新。(@machunyugit 投稿)

2、腾讯云软件源

腾讯云提供的各种开源软件的下载镜像,更多类似的镜像请看这里。(@CmderQ 投稿)

3、植物画册

1865年,英国著名女插画家 Elizabeth Twining 出版了二卷本的《植物画册》,包含160幅全彩色的植物插图。该网站将这160幅画都上线,可以下载。打印出来,挂在墙上是很好的装饰品。

4、简单英语指南

美国政府的官方网页,有几百条单词建议,指导你怎么写出简单的文章,不要用复杂的单词。比如说,"a 和 b 可以同时使用,也可以单独使用",不要用a and/or b,而要用a or b or both

5、数字隐私档案

该仓库收集互联网上保护用户隐私的各种工具和方案。(@No-Github 投稿)

6、今日热榜

这是一个信息聚合服务,聚合各站热点,包括微信、今日头条、百度、知乎、V2EX、微博、贴吧、豆瓣、天涯、虎扑、Github、华尔街见闻等,有 Web 版和 App 下载。

图片

1、DOS 图形界面

下面是上个世纪90年代前期,Windows 3.1 发布之前,典型的 MS-DOS 图形界面。20多年前的大众软件就是长这个样子。

2、iOS 13 的全局变量

iOS 13 有一些非常冗长的全局变量,用于联系人标签,比如下图这个变量,长达82个字符,翻译成中文,意思是"表妹或堂妹"。

文摘

1、为什么北极融化不会导致海平面上升?

北极都是海冰,漂浮在水中。我们知道,冰山质量的90%都在水下。当冰融化变成水时,体积会缩小,所以不会导致海平面变化。

但是,南极完全不一样,冰山基本都在陆地上。当陆地冰川融化时,就会导致海平面上升。南极洲的冰量是世界上其他陆地冰川总和的50倍。

有研究称,过去2000年,海平面保持稳定。但是从1990年以来,海平面上升速度增加了一倍。据估计,到本世纪末,海平面预计将上升2英尺(61厘米)。

2、新能源的极限

目前,石油、天然气、煤等碳氢化合物,提供了全世界84%的能源。风能和太阳能提供了全世界2%的能源。

尽管如此,许多人还是主张尽快把所有碳氢化合物都替代掉,并称其为"新能源经济"。

但是,风能,太阳能和电池存储技术有其极限,全世界近期几乎不可能向"新能源经济"过渡。原因如下:

(1)碳氢化合物有低成本、高能量密度、稳定性、安全性和便携性等卓越的优点,科学家尚未发现跟它们一样优秀的替代物。

目前,在风力涡轮发电机或太阳能电池板上投入100万美元,每年产生约5000万度电,但是在页岩钻井平台上花费100万美元,生产的天然气可以产生2亿度电。

(2)硅光伏电池有物理极限,称为 Shockley-Queisser Limit,即最多只有 34%的光子可以转换为电子。今天最好的商业光伏技术,转化率已经超过26%。

(3)风力发电机的物理极限是 Betz Limit,即最多只能从移动的空气中捕获 60% 的动能。今天的商用风力涡轮机,转化率已经超过 40%。

(4)世界最大的电池工厂特斯拉的 Gigafactory,一年生产的电池只能支撑全美国的用电需求三分钟。连续生产1000年的电池,可以支撑美国两天的电力需求。与此同时,每生产一磅电池,需要开采、移动和加工50-100磅的各种材料。

言论

1、

美国癌症协会、FDA 和许多其他组织强烈反对食用鱼翅,或者食用鲨鱼肝油,认为效果跟吃自己的指甲差不多。

-- 《没有鲨鱼的世界会怎样?》

2、

多年使用 Vim 之后,我有一个顿悟:如果坚持使用默认配置,就可以在任何环境中毫无困难地使用 Vim。

-- HN 读者留言

3、

人生所有的事情之中,后悔是最可怕的。失败是一种答案,拒绝也是一种答案,但后悔却是永远得不到答案。"要是我当初......"、"如果我那样选了......"、"不知道如果走了那条路会怎样......",你永远、永远都不会知道答案,而且这些疑问会纠缠你一辈子。

-- [南非] 特雷弗·诺亚《天生有罪》

4、

只有落后者才说抓住机会,发达国家是创造机会,引导消费。

-- 任正非

5、

每节课的时间,对于老师来说太短,对于学生来说太长了。

-- 《如何创建一个有效的课程》

招聘信息

以下公司正在招聘,欢迎应聘。

本栏目为收费服务,每条价格 250 元人民币,用于资助周刊。如果你的公司正在招人,欢迎联系我(Email: yifeng.ruan@gmail.com)。

讨论区有更多职位,欢迎大家访问。

1、秘猿科技

区块链创业公司,为加密经济提供区块链基础设施和服务,主要产品有 Nervos、火币金融公链、CITA 等。工作地点:杭州 或者 remote。

诚意招聘以下岗位:

  • 高级区块链工程师:需要熟悉 Rust 语言。
  • 高级后端工程师:熟悉分布式系统开发。
  • 首席安全官:5年以上安全从业经验。
  • 高级测试经理:从事区块链底层的自动化测试。

详细招聘要求,欢迎点击这里

简历投递:zhouyun@cryptape.com (一天内回复)

回顾

去年的本周:《周刊第 16 期》

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月 9日

科技爱好者周刊:第 69 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

本杂志开源,访问 GitHub 的 ruanyf/weekly 仓库获取源文件。欢迎提交 issue 投稿或推荐你的项目。

封面图片:上海世博源,2019。

刊首语

一件事"做得好"比较好,还是"做得快"比较好?

鱼和熊掌不能得兼,你怎么选择:做得好,付出的代价可能是耗时长、成本高;做得快,意味着完成度低、不是精品。

我很赞同一篇文章的结论:做得快更好。

做得快不仅可以让你在单位时间内完成更多的工作,而且 因为你工作得很快,所以你会觉得成本低,从而倾向于做更多。

写一篇博客,你可能需要两天。这是很高的时间成本,你觉得太贵了,于是你很少写。但是,做好一件事的唯一方法,就是多做这件事。 做得越快,这件事的时间成本就越低,你会愿意做得更多。

人们总是倾向于,多消费时间成本低的东西。网站很快,就会多访问;搜索很快,就会多搜索;文章很容易读懂,就会多读几篇。做得快的核心,就是要让时间成本降下来,从而多做。

家庭保障规划

周刊第 60 期介绍了 孙明展老师 公众号。当时参与活动的朋友挺多的,现在活动搞第二期了,孙老师团队就联系我,想再发一次消息。

孙老师毕业于广州中山大学,现在还是金融系、统计系的(兼职)硕士导师。他曾经在一家世界500强保险公司担任精算师,设计各种产品。

他发现很多人不了解保险,容易上当,就开办了自己的公众号,专门揭露各种理财骗局和保险套路。目前,已经有500多篇原创文章,介绍理财知识、保险案例分析等等,值得一看。

他创立的谱蓝公司,主营业务就是财务咨询,普及保险理财知识,解决家庭保障需求。进一步的情况,可以搜索"谱蓝"。

这次的推广活动,免费向大家赠送 家庭保障定制化服务 。如果你被保险代理人坑过,心有余悸,或者对各种保单或险种感到很难懂,拿不定主意,再或者就是单纯想增加家庭财务保障,都可以参加这个活动。活动内容主要是,根据报名情况进行电话或网络沟通,了解家庭背景资料以后,回答保险理财咨询。

  1. 个人及家庭成员 保障责任综合评估
  2. 现有保险产品的 性价比分析比较
  3. 基于家庭状况和需求的 综合保障规划构建

微信扫描关注下面的公众号,然后输入 "阮一峰 + 你的手机号码" ,就可以参加这个活动了。参加者都可以获赠一份价值 800元 的免费保障规划。

资讯

1、变色纹身

德国科学家开发出一种特殊颜料,会随着人体内葡萄糖、白蛋白或 pH 值的变化而改变颜色。它们纹在身上以后,就可以让患者和医生通过颜色,实时监测糖尿病和肾脏疾病等慢性疾病。

你可以对着纹身拍照,然后让手机 App 解读颜色变化。不过,该颜料尚未在人体实验,纹身都是在猪身上进行的。

2、屏幕最多的汽车

本田公司最新的电动车"本田 e",驾驶台上安装了五块触摸屏。如果算上头顶的中央后视镜,一共有六块屏幕,是世界上屏幕最多的小汽车。

五块触摸屏之中,左右两侧是两块后视镜,驾驶盘前是仪表盘(8.8英寸),旁边则是两块娱乐用的触摸屏(12.3英寸),分别供司机和前排乘客使用。

3、新西兰计划清除食鸟害虫

新西兰由于地理的孤立性,保存了大量珍稀动物。但是,这些珍稀动物,尤其是鸟类以及鸟蛋,常常被其他动物捕食,使得新西兰大约80%的珍稀野生鸟类面临灭绝的危险。

因此,新西兰决定在野外消灭这些鸟类的天敌,主要是白鼬、老鼠和负鼠。目前,首都惠灵顿的郊外已经基本消灭了这些害虫。

4、Fortnite 世界杯

热门游戏 Fortnite 最近举行自己的世界杯比赛,共耗资3000万美元。美国16岁少年 Kyle 夺得冠军,奖金300万美元。

这个奖金已经超过了温布尔登网球赛的冠军,只比美国公开赛的冠军少80万美元。这就是说,电子竞技的奖金已经跟顶级的职业体育运动不相上下了。Fortnite 世界杯最后一天的决赛在 YouTube 直播,有近900万人观看。

5、更高效率的光伏电池

加州大学伯克利分校的研究人员宣布,他们研发出了更高效率的光伏电池,可以让超轻型无人飞机连续飞行数天。

目前,商用光伏电池的光能转化效率是23%,该团队将效率提高到29%,还声称不久的将来有望达到50%。

6、Megapack

特斯拉虽然是汽车公司,但是核心技术是电池。它在推出家庭电池包 Powerpack 以后,又推出了企业级电池包 Megapack,类似集装箱大小,一次可以储存3000度电。

300多个 Megapack 就可以组成一个电能储存厂,保存100万度电,能够满足旧金山6个小时的用电需求。这种电能储存厂的安装速度也很快,只要用卡车把 Megapower 拉到现场以后,可以快速建厂。

7、软体机器人

清华大学和加州大学伯克利分校的研究人员,研发了一种新型软体机器人。它就是上图左下角的那个金属片,长3厘米宽1.5厘米,看起来像一张弯曲的纸条,但每秒能够前进60厘米,而且被踩踏也没关系,可以说就是一只电子蟑螂。

这种机器人可以经受自身重量100万倍的踩踏,可以爬上15度的坡,还可以背负一颗花生米前进。

8、Tumblr 被甩卖

8月13日,博客平台 Tumblr 以 300万美元卖给了 WordPress 的母公司。2013年,雅虎收购 Tumblr 花了11亿美元,这意味着仅仅六年时间,Tumblr 变得一钱不值。

雅虎公司创造了一项记录,他家收购的所有优质产品都被毁掉:GeoCities、Delicious、Flickr、Tumblr 等等。当年,谷歌创始人找上门要求被收购,雅虎拒绝;微软提出高溢价收购雅虎,雅虎拒绝。该公司的最成功一件事,是把雅虎中国卖给阿里巴巴,换来后者39%的股份。

9、一句话消息

  • 软银集团的远景基金(Vision Fund)宣布筹集到第二期的1080亿美元资金。第一期已经有1000亿美元,这些天文数字的金钱都会投入高科技产业,主要是人工智能、芯片、机器人等方向。

  • 日本批准第一例人体细胞移植入小鼠胚胎,长大以后就是带有人类细胞的老鼠。实验目的是让人类细胞在老鼠身上发育,长出人体器官,最后再移植回人体。

  • 美国庆祝北美大陆横贯铁路建成150周年,世界最大的蒸汽火车头7月26日举行了纪念性行驶。该铁路从纽约到旧金山,1869年建成。

文章

1、面向对象编程:一万亿美元的错误(英文)

这篇长文详细解释了,面向对象编程的一些缺点。比如,OOP 引入了太多的层,大项目很快就会变得非常复杂,而且由于对象内部有状态,不能保证同样的输入得到同样的输出,因此很难测试。

2、我盖了一栋自己的房子(中文)

台湾网友的长篇帖子,海量图片,记录他在老家的土地上,请建筑师设计了一栋三层钢结构的民宅,然后再请施工队盖出来,完成各种内外装修,直到入住。

3、如何在 Bash 提示符显示动态信息(英文)

Zsh 的命令行提示符会显示当前目录的 Git 分支名(上图),这在 Bash 中如何做到?

4、如何使用 AWS S3 和 Cloudflare 托管免费网站(英文)

本文一步步介绍如何将静态网站托管在 AWS S3 上面,然后用 Cloudflare 建立 CDN,这都是免费的。

5、CSS 的 background-image 属性是反模式

作者提出,如果图像是内容一部分,就不应该设置成 CSS 的背景图像,而应该使用<picture>标签加上 CSS 的object-fit属性。

6、如何用 Puppeteer 破解滑块验证(英文)

很多网站现在都有滑块验证,识别用户是否为真人。但是,其实它们都可以用 Puppeteer 的自动化脚本破解,本文展示怎么做到这一点。

7、ping 的故事(英文)

ping是最常用的网络命令之一。这篇文章是ping的作者介绍他怎么写出这个工具。他以前的工作是研究声纳和雷达,声纳发出的声音脉冲就叫做ping

8、从图片优化说起(中文)

谈谈如何使用 Node.js 进行各种图片操作,优化 Web 图片体验。(@cj1128 投稿)

9、lerna 入门教程(英文)

对于大型项目,多个模块放在一个代码仓库里面会比较方便。lerna 是管理这种多模块复合仓库的流行工具,本文介绍 lerna 的最简单用法。

10、iOS 和 Android 共享代码的隐藏成本(英文)

Dropbox 一直使用C++编写手机代码,同时支持iOS和安卓,这样只写一次代码就够了。

现在它也放弃了,不得不改用Swift和Kotlin各写一次。主要原因之一是,招不到同时懂前端和C++的程序员。

工具

1、hostyoself

一个开源工具,可以架设服务,连接本地计算机,让其他人可以通过互联网访问本地的文件夹和文件。

2、listmonk

一个开源的新闻邮件和邮件列表发送服务,带有管理后台。

3、go-pry

Go 语言互动式的 REPL 环境,可以直接运行 Go 脚本。

4、Dato

MacOS 菜单栏系统时钟的替代品,显示月历和时区,免费软件。

5、osgood

一个专门运行 JavaScript 脚本的 HTTP 服务器。你可以把它想象成内置了 Express 框架的 JS 运行时。

6、BitMatrix

矩阵数据结构的 JavaScript 库,使用了底层的二进制接口,性能较好。(@cnwhy 投稿)

7、Vugu

一个使用 Go 语言写 HTML 前端页面的工具。完全不用 JavaScript,就能写出前端页面。未来的全栈将不再限于 JS,后端语言都可以写前端。

8、video-object-removal

这个工具使用机器学习算法,去除视频里面的运动物体。

9、TabNine

基于深度学习的代码补全工具,号称支持所有语言。(@ifrontend-xyz 投稿)

10、licia

这个库收集 Web 开发的各种 JavaScript 小工具,使得开发者只用加载它一个库即可,跟 lodash 的思路有点像。(@surunzi 投稿)

11、civitas

一个 JavaScript 写的网页策略模拟类游戏。

资源

1、《使用 Julia 语言学习统计学》(PDF,英文)

免费电子书,大学本科的统计学入门教材,其中的示例使用简单的 Julia 语言。

2、爱丽丝和鲍勃:密码学最著名的两个人

爱丽丝(Alice)和鲍勃(Bob)通常用来解释加密协议,指代用户 A 和用户 B。该网站收集密码学发展过程中,使用这两个人作为例子的各种历史资料。

3、astronaut.io

很多上传到 Youtube 的视频,从来没有人观看。该网站会随机选择那些很少人观看(接近零观看)的视频,播放给你看。

4、bootlin

快速查看和搜索 linux 内核源代码的网站。(@kele1997 投稿)

5、leetcode 多线程同步题

Leetcode 新增的多线程同步的题目。(@DoctorLai 投稿)

6、家庭关系称谓查询

根据对亲戚关系的描述,返回正确的称谓。(@DoctorLai 投稿)

图片

1、英国没有入侵的国家

英国历史上是"日不落帝国",殖民地遍布全球。历史学家统计以后发现,现在全球近200个国家和地区,只有22个从来没有被英国入侵过(上图白色的部分)。

2、孟菲斯集团的家具

上个世纪80年代,意大利米兰的孟菲斯集团招聘了很多年轻的设计师,他们设计了很多后现代主义风格的家具。

椅子。

桌子。

沙发。

架子。

柜子。

文摘

1、三氟化氯

我们知道,沙子可以灭火。有一位读者提问,是否存在某样东西会让沙子着火。

事实上,这种物质是存在的,它碰到沙子,沙子会烧起来。它就是三氟化氯。

三氟化氯是人类已知的最强氟化剂,比任何一种氧化剂的效果都更强烈。它与大多数无机和有机材料都会产生激烈的化学反应,可以在没有任何火源的情况下,让许多不易燃烧的材料发生燃烧,甚至爆炸。

由于它的氧化能力比氧更强,因此可以让已经烧到无法再烧的东西,继续燃烧下去,比如沙子、砖块和石棉瓦片,它都能让它们烧起来。它甚至还会点燃,已经在氧气中烧成灰烬的材料。一次工业事故中,900公斤的三氟化氯泄漏,使得30厘米的混凝土和90厘米的砾石层被烧穿。除了使用氮气和惰性气体外,没有已知的方法能够抑制该种物质的燃烧。

第二次世界大战期间,德国人曾经想把它用于火焰喷射器,后来发现太难控制,只能放弃。目前,它主要用于半导体工业,清除电路板表面的氧化物。

它能让玻璃烧起来,所以不能放在玻璃容器中,只能保存在钢、铜、铝等金属容器中,因为这些金属表面会形成一层金属氟化物薄膜,防止金属与它发生化学反应。一位化学家写道:"如果这种涂层熔化或被擦掉,操作者就会面临金属氟化物火灾的风险。这时,我推荐一双好的跑鞋。"

2、为什么飞机窗户都是圆角的?

如果你曾经坐过飞机的靠窗座位,可能已经注意到窗户是圆角的。你有没有想过这是为什么?

答案很简单:保证飞行安全。

要了解背后的原因,我们需要回到1954年。那时,飞机制造业开始制造专门的民用客机。

自从莱特兄弟发明飞机以来,几乎所有的飞机都使用螺旋桨,这已经被证明适用和可靠。但是,螺旋桨无法令飞机飞得更快,而且具有巨大的噪音和振动,使得飞机的行程极不舒适。对于战斗机,这不是一个问题,但是对于民用航空,乘客舒适性是一个优先事项。

人们把目光转向喷气发动机,由于喷气发动机包含在外壳里面,因此不用考虑空气阻力,可以推动飞机穿过声障。而且,喷气式飞机相对安静,对乘客没有打扰。

1949年,英国航空业先驱 de Havilland 开设了自己的飞机公司,制造了第一架民用的喷气式客机,称为彗星飞机(comet)。

彗星飞机的机翼内装有四个喷气发动机,比传统的螺旋桨飞机速度高出近50%。而且,它具有增压舱设计,可以在高空保持跟平地一样的气压,带给乘客平稳舒适的乘坐体验。但是,有一个地方,它的设计跟传统飞机一样:它的窗户是方形的。

这架飞机立即在世界各地取得了成功,各国纷纷订购。可是,意想不到的事情出现了。在服役的第一年,就发生了两起飞机坠毁事故。1953年3月3日,加拿大航空公司的一架飞机坠毁,机上11人全部遇难。1953年5月2日,另一架飞机在印度坠毁,造成43人死亡。最初的调查都认为,这是飞行员错误引起的,而不是彗星飞机本身的问题,可以照常飞行。

接下来的1954年,又发生了两起坠毁事故。1954年1月10日,一架从罗马飞往伦敦的飞机坠毁,35人遇难。1954年4月8日,一架南非的飞机坠毁,21人遇难。

经过四起坠机事故,英国政府终于决定对彗星飞机展开彻底调查。调查人员怀疑,事故原因与气压有关。高空没有足够的氧气供人们呼吸,因此飞机内部是加压的,这就要求飞机是密封的,防止氧气泄漏。如果在高空,飞机有裂缝,内部的空气就会冲出来,力量之大,有时甚至会引起机身撕裂。

调查人员经过了各种测试,甚至将整个机舱浸没在一个巨大的水箱中,然后反复地加压和减压。他们终于找到了原因,一切都跟那些方形窗户有关。

当飞机内部反复加压和减压,数月之后,飞机金属机身的强度就会逐渐减弱,这叫做金属疲劳。机身的方形窗口会带来尖角,就会有叫做应力集中的过程,那些尖角处会变得比其他地方更脆弱,最终裂缝开始在那些角落形成。其中一个裂缝变得足够宽时,机舱内的压缩空气就会冲出来,从而撕裂飞机。

以前有过加压舱的飞机,但由于它们是螺旋桨驱动的,只能在较低的高度飞行,机身应力不那么严重。直到喷气动力的彗星飞机出现,飞机才能飞到更高的高度,使得机身应力超过了断裂点。可以这样说,彗星飞机的悲剧从第一天试飞就注定了。

彗星公司立刻将所有窗户改成了圆角,并且采取了其他安全措施。但为时已晚,它的声誉受到了致命的打击,航空公司不再愿意购买它的飞机。彗星公司最终在1960年将自己卖掉了。美国的波音公司和洛克希德公司虽然进入喷气式客机市场较晚,但​​被认为更加安全,从而带来了属于美国的喷气机时代。

言论

1、

软件的运行速度快,说明这个软件是专注的。

-- 《快的软件,最好的软件》

2、

我们要把社会责任感强烈的人培养成领袖,还要把个人成就感强烈的人培养成英雄。

领导者的责任就是要使自己的部下成为英雄,而自己成为领袖。

-- 任正非,1998年

3、

面向对象编程的问题是,每个对象都有自己的状态,开发程序时,必须记住当前所有对象的状态。

为了让我们的生活更轻松,最好只有一小部分代码库处理状态,其他代码都是无状态和纯的。实际上,这就是前端的 Redux 库取得巨大成功的主要原因。

-- 《面向对象编程:一万亿美元的错误》

4、

20世纪50年代,建造月球基地是一项工程和技术挑战。 今天,它基本上是一个政治和经济挑战,难点是说服足够多的人,花时间和精力去做这件事是值得的。

-- HN 读者

招聘信息

周刊讨论区的程序员招聘帖,有大量工作/实习岗位,欢迎查看。

同时,欢迎企业免费张贴招聘信息。如果希望发在周刊上,可以联系我(Email: yifeng.ruan@gmail.com ),每条价格 250 元。

1、秘猿科技

区块链创业公司,为加密经济提供区块链基础设施和服务,主要产品有 Nervos、火币金融公链、CITA 等,全部开源。

工作地点:杭州 或者 remote。诚意招聘以下岗位:

  • 高级区块链工程师:需要熟悉 Rust 语言。
  • 高级后端工程师:熟悉分布式系统开发。
  • 首席安全官:5年以上安全从业经验。
  • 高级测试经理:从事区块链底层的自动化测试。

点击这里,查看详情。简历投递:zhouyun@cryptape.com (一天内回复)

回顾

去年的本周:《周刊第 17 期》

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月16日

科技爱好者周刊:第 70 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。

封面图:南浦大桥,上海,2019。

刊首语

本周有两条新闻,大家可能没注意。

第一条是丹麦发放全世界第一笔负利率贷款,利率是-0.5%。银行借你一万元,一年后你还9950元。

据说原因是,银行没有足够的贷款业务,为了减少存款,已经向企业存款收费了。既然存款可以收费,那么贷款负利率也能赚钱。

第二条是德国政府正在出售负利率的债券。你买一万元国债,若干年后,政府还你9000多元。还真的有人买,据说动机是,以后的负利率会更大,所以这种债券还有升值可能。

这两条新闻说明了什么?就是一点,欧洲的钱非常多,但是投资机会很少,钱没有去处。所以,移民到欧洲好不好?生活环境是很好,但可能也很苦闷,因为看不到发展机会。

目前,全世界都是资本过剩。国内的利率已经在下跌,肯定还会不断下跌,投资机会也会越来越稀缺。

这告诉我们两点启示。一是钱存在银行,长期肯定不会增值;二是融资将会越来越容易,创业项目根本不担心融不到钱。

Vue 源码解析

随着小程序和移动端的混合开发框架(比如 Weex 和 React native)的兴起,传统的 Web 网页开发重新焕发生机。

与之相适应,Web 开发正在走向技术深水区。每个前端开发者必须不断更新自身的知识结构,否则就会被淘汰。

国内领先的在线教育平台"开课吧",邀请廖雪峰和阿里前端架构师,制作了一份脑图 《Web 全栈架构师所需技术栈》 ,高清大图免费赠送给大家。

最新录制的 《Vue 源码解析》 视频课程(定价799元),也是免费赠送。

微信扫描上方二维码,添加好友,即可领取,本期的免费名额一共是300位。

开课吧:致力于打造互联网从业者职业成长平台。

现在面向前端程序员,专门打磨了进阶课程 《Web全栈架构师》 ,帮助大家打破技术瓶颈,提高自身竞争力,实现职业的可持续成长。

资讯

1、太阳帆

一个全球性的民间组织"行星协会",为了验证太阳帆的可行性,于2019年6月25日发射了一个小型飞行器,日前已经打开了太阳帆。

所谓太阳帆,就是一块巨大的薄膜,以太阳的辐射压做为飞行器的推进动力,不再需要燃料。辐射压虽然很小,但是只要太阳继续照耀着,太阳帆就能继续飞行。目前,飞行器的远地点增加了2公里,科学家认为这就是太阳帆导致的,因此实验已经成功。

2、3D 打印皮肤和骨骼

德国德累斯顿大学的科学家正在研发,3D 打印人体皮肤和骨骼。皮肤使用人体血浆细胞打印,骨骼使用磷酸钙加上人体干细胞打印(上图)。

这个项目是为了火星旅行,以及其他行星旅行项目研发的。因为飞行过程非常漫长,火星的单程旅程就需要半年,在这期间如果宇航员受伤,只能就地治疗。这时,3D 生物打印就可以挽救他们的生命,烧伤就可以移植 3D 打印的皮肤。

3、飞越英吉利海峡

8月4日,40岁的法国发明家弗兰基·萨帕塔(Franky Zapata)依靠一个背负式喷气式飞行器,飞越了英吉利海峡,耗时22分钟(35.4公里),最高速度170公里/小时。

该飞行器采用装满煤油的背包提供动力。法国军方赞助了这个项目,希望未来用于军事用途。

4、新能源样本房

特斯拉公司在澳大利亚展示新能源样本房。这是一套五个居室的乡间别墅,屋顶安装了33块太阳能板,电能储存在车库的两个 Powerwall 电池组里面。不过,太阳能只能满足一半的用电需求,每天用电几个小时之后,还是需要当地电网供电。

5、太阳能道路试验失败

2016年,法国宣布了一个大胆计划,将用光伏电池板铺设1000公里道路,完成后可以为500万个家庭供电。第一阶段一公里的道路已经完成,计划为5,000个家庭供电,但是看上去这条道路已经失败了。

主要原因是光伏板在高速公路上的磨损,远远超过预期。2800平方米的光伏池板已经剥落,其中100米路段破损严重而无法修复。另外,这条道路每年仅产生15万度电,效率远低于普通的倾斜式太阳能电池板。

6、印尼的屋顶村庄

西方媒体最近发现,印尼首都雅加达的一座购物中心10楼的楼顶,居然有一个78座两层别墅构成的居民小区。小区里面有道路、绿地、网球场和游泳池,汽车可以一直从地面开到楼顶。

雅加达有1000万人口,十分拥挤,交通堵塞,严重污染。而且由于地势低,经常被水淹。这个居民小区反映了这种现实。

7、去除海洋微塑料的新方法

16岁的爱尔兰少年 Fionn Ferreira 发明了一种从海洋中去除微塑料的新方法,获得了2019年谷歌科学节(Google Science Fair)的大奖。

Ferreira 的方法是将磁铁碎屑液化倒入水中,可以吸附微塑料,然后将磁铁放入水中,把带有微塑料的磁铁碎屑吸走。据报道,这种方法可以从水样中去除了约88%的微塑料。

微塑料是长度小于5毫米的塑料颗粒,由于非常小,因此逃脱了水过滤系统,进入了河流和海洋,各种的海洋动物都会摄入它们,并且最终进入人体。

8、一句话消息

  • IBM 公司过去十年解雇了十万人,2018年底该公司全球员工人数为35万人。

  • 一位加拿大摄影师在出海时,拍到了鲸鱼捕食海狮的一瞬间。

  • 俄罗斯一架空中巴士8月14日在莫斯科起飞后,撞到一群海鸥,导致发动机故障,迫降在玉米田,233名乘客无一死亡。在俄罗斯坐飞机,真是需要勇气。

  • 一个波兰团队发现,银河系的形状不是一个平的圆盘,而是像一个两端翘起的黑胶唱片,一端向上翘,另一端向下翘。

  • NEC 公司展示新研制的飞行汽车。日本政府计划2023年通过飞行汽车运送货物,2030年之前开始城市的载人飞行。

文章

1、为什么一天有两次潮汐(中文)

潮汐是月球引力引起的,这样的话,应该最靠近月球的时候,才会发生涨潮。但是事实上,地球上大多数地方,一天有两次涨潮,某个地点最远离月球的时候也会涨潮,这是为什么?

2、我用 50MB 度过一天(英文)

以前,有人尝试100元钱生活一周,现在的挑战是 50MB 流量过一天。这实在是很艰巨的任务,因为即使是谷歌那样简洁的首页也有 402KB。这篇文章介绍作者采取的各种节省带宽的方法,以及网站应该如何减少网页的体积。

3、如何杀死一个进程和所有子进程

各种类 Unix 系统里面杀死进程,要比想象的难。一个主要的问题是,杀死父进程,子进程并没有一起杀死,会变成孤儿进程。如何才能做到这一点?

4、海盗党的版权改革主张(英文)

这篇文章是瑞典盗版党的版权改革主张:非商业用途应该免费,商业用途只能保护作品发布后的五年,允许衍生作品不支付版权费,废除数字版权机制 DRM。

5、Flutter 带给我的挫败感(英文)

一个安卓开发者谈他对 Flutter 初次尝试的印象。

6、Syslog 日志指南(英文)

Syslog 是一种日志协议,Linux 系统普遍使用这种日志,其他系统也可以使用。本文介绍这种日志的基本知识。

7、为什么你应该使用 pathlib(英文)

本文介绍 Python 新的路径库pathlib比原来的os.path好在哪里。(@nosarthur 投稿)

8、22岁奥地利 PHP 程序员专访(英文)

22岁的皮特完全通过自学,掌握 PHP 编程。他介绍自己如何通过互联网接项目,找到远程工作,目前的收入每月税前可以达到15K欧元。

9、狗狗克劳斯的历史(英文)

狗狗克劳斯(Clarus the dogcow)曾经是苹果公司技术的吉祥物,现在已经不用了。本文回顾它的历史。

10、产品经理与项目经理的区别(英文)

简单说,产品经理负责向客户提交的最终结果,项目经理负责一项涉及后续活动的计划。

工具

1、exa

目录查看命令ls的替代品。

2、wtf-cli

一个查询字母缩写含义的命令行工具,比如缩写 OS 代表 Operation System,数据来自abbreviations.com。(@Haixiang6123 投稿)

3、sandman2

一个 Python 语言的数据库适配库,可以为各种数据库自动生成 RESTful 接口。

4、Formcake

该网站提供线上服务,接收表单数据。可以为静态网站提供跟用户互动的手段。

5、Lite 编程语言

国产的静态编程语言,追求简单可读,目前支持转码为 C#/Go/TypeScript。(@kulics 投稿)

6、SuperTinyIcons

一个 SVG 图标库,提供100多个常用的 Logo 图标。

7、Ananas Analytics

数据可视化的桌面工具,可以连接各种数据源,进行图形可视化操作。

8、sostupidsearch

一个搜索命令 grep 的替代品,使用 Rust 语言编写,有更好的速度和输出界面。

9、Firefox puppeteer

谷歌团队推出的无头浏览器 Puppeteer 的 Firefox 版本,与 Chrome 版本有同样的接口,可以用于 Firefox 浏览器自动化。

10、Fastify

一个比 Node.js 原生的 HTTP 处理更快的 Web 框架。

11、Gissue

GitHub issues 备份工具,只要填入仓库地址就可以下载压缩文件包,一次性下载所有 issue。(@tangkaichuan 投稿)

12、Zdog

一个 JavaScript 的 3D 设计和动画制作库。(@ifrontend-xyz 投稿)

资源

1、DistroTest

浏览器体验 Linux 和 Unix 操作系统,可以在线试用 200 多种 Linux 和 Unix 发行版,无需本地安装。只要打开网站,选择 Linux/Unix 发行版,然后开始试用!(@ron159 投稿)

2、RutHub

一个分享知识的小型中文网站,可以分享某个知识点或主题相关的书籍、课程、视频、网页等,或每周、每月的读书所得。(@danloh 投稿)

3、the-super-tiny-compiler

编译器原理的教学示例项目,使用 JavaScript 语言,只有200多行代码,并配有详细的注释,帮助你理解编译器原理。

4、美国的废弃建筑

该网站专门探访美国废弃的建筑,有民宅,也有工厂和商店,然后拍摄照片,撰写游记,放到网上。

5、互动式元素周期表

点击查看各种元素的介绍,以及其他一些互动功能。

6、33个免费图标网站

该文收集了33个免费的图标资源网站。

图片

1、哈尔格林姆教堂

哈尔格林姆教堂(Hallgrímskirkja)是冰岛首都雷克雅未克最大的教堂,高74.5米,也是冰岛最高的建筑之一。该教堂从1937年开始设计,1945年开工,于1986年完工。

教堂外观借鉴了冰岛常见的景观:玄武岩山脉和冰川。

2、Watchman

Sony 公司生产的便携式音乐播放器 Walkman,开创了一个时代,影响了几代人。其实,Sony 公司同时还推出了便携式电视机 Watchman,用来收看电视。

第一代 Watchman 于1982年推出,后来陆续又推出了其他机型,前后共有65种。由于它只能接收模拟信号,随着数字电视的兴起,最终在2000年 Watchman 停产。

文摘

1、鲍莫尔成本病

20世纪60年代,美国经济学家威廉·鲍莫尔发现了一个奇怪的经济现象。有的部门劳动生产率根本没有上升,甚至出现了下降,但是该部门的工资却在上涨。这是传统经济学理论无法解释的,根据后者,如果生产率下降,工资应该随着下降。

鲍莫尔的解释是,这跟其他部门的工资上涨有关。

如果有两个部门,一个是进步部门,另一个是停滞部门。进步部门的生产率快速增长,导致该部门工人的工资上升。停滞部门的工人,尤其是那些高级工人,就会要求涨工资,如果不涨的话就会跳槽到进步部门。

比如,制造业的生产率增长通常高于服务业,因此制造业的工资较高。服务业的生产率并没有提高,但是那些服务业的经理看到制造业工资上涨,也要求涨工资,否则就要跳槽。

2、街角的一尊佛像

Dan Stevenson 与妻子住在加州奥克兰的东湖区,已经40年。不知何时开始,东湖区治安越来越差,有贩毒的、卖淫的,偶尔还有进户抢劫的。

最让 Dan 感到愤怒的,是第11大道和东19街的交叉口,有一小块车道分流的三角绿地。那里本来应该是绿化,却堆满了废弃床垫、沙发、衣服、随手扔弃的垃圾、甚至使用过的保险套和针筒。更糟的是,Dan 还看过有私人垃圾车开过来把一车的垃圾跟废弃家具倾倒完,就跑了。

从 Dan 的窗户看出去,就看见这一大坨堆积如山的垃圾。Dan 与太太每天都要不断打电话给市政府,但都没什么用,清掉一次,这里马上又会堆满垃圾。

Dan 与妻子为这个事想了很久,到底该怎么改善这坨垃圾山的问题,他们想了很多方法。有一天,他们浮现一个主意:佛像!

他们决定去买一尊佛像摆在那块小树丛。Dan与妻子并不是佛教徒,为什么会想到佛像呢?

Dan 说,因为佛教在西方是很温和中立的一种信仰。假如放一尊耶稣神像,可能就会有争议,但佛像不一样,似乎不太有人会对佛陀有什么不满。

Dan 开始到处找合适的佛像,有天他看到一尊大约60公分高的黑色石雕佛像,很喜欢。但他担心如果佛像放在那块地上被偷走,所以给佛像做了底座,让她坚实地固定在草地上。

就这样,Dan 每天早上起床喝咖啡的时候,就可以看到佛像是否还安好。这算是在公有土地上做私有的事,Dan可不管,他觉得有些事就是先做再说,别管什么行政程序了。

佛像就静静地坐在那块草地上,一开始,垃圾少了,然后大约四个月后的某天一早,他发现有人坐在草地上给佛陀上漆。那人非常小心翼翼,他把佛像漆成了白色的。而且那人还留了一颗橘子在佛陀前。

隔了一天,一颗橘子变成了一对橘子。在那之后,佛陀每天都有新的贡品,有时是花束、有时是水果,有时甚至还有钱币。

有天 Dan 下班回家,发现佛陀神像旁多了两尊神像。Dan 不知道这是怎么回事,但他后来理解,应该是有人觉得佛陀需要被保护。

慢慢地,这尊石雕佛像,摇身一变成了一座神坛。而且佛陀也升级了,她不再是白色的,而是金色的,而且还有人给她做了衣服(袈裟),Dan 觉得她现在的样子酷极了。

这尊佛雕除了外型变了,还有人为她盖了一栋房子,若你个子娇小,还可以钻进去跟佛陀一起睡一晚的那种小房子。

每天早上七点,就会有人来膜拜诵经,他们会敲着木鱼念唱一段时间。有时候,神坛前会出现一排桌子摆满食物与祭品,然后这些虔诚的信徒们会先进行祭拜仪式,接着他们就在树下闲聊,过一会再把祭品收拾干净,或者坐在草地上分享祭品一起吃掉。

这些信徒都是从别处来的,不是这个社区的,他们英文不好,有的甚至不会说英文。现在一天大概会有70-80个人特别来这里祭拜佛陀,甚至还有从明尼苏达来的。

这几年时间,先是垃圾没了,然后不知从何时开始,毒贩一个个搬走了,然后卖淫的也纷纷离开了。一篇当地报导写道,Oakland 东湖区从2012年有神秘佛坛与固定祭祀活动开始,这区的犯罪率在一年内下降了80%。

言论

1、

写一本书需要坚强的意志、忍耐力、厚脸皮(敢于说出自己的观点)和非金钱动机。

-- 《我写了一本 C++ 教材》

2、

改革开放40年,中国社会发生了翻天覆地的变化,除了总的制度没变,能够改变的几乎都变了。

--《纽约时报》

3、

我认为,美国无法禁止比特币或其他加密货币。它们实际上是一种开源软件,存在于互联网上。任何人都可以实现它,可以运行在互联网运行的任何地方。

-- 一位美国国会议员

4、

我在美国时,在和IBM、 CISCO、LUCENT等几个大公司领导讨论问题时谈到,IT是什么?他们说,IT就是裁员、裁员、再裁员。以电子流来替代人工的操作,以降低运作成本,增强企业竞争力。

-- 任正非《华为的冬天》,2001年

5、

尼日利亚人平均60%的收入用于食品,这意味着,你卖给普通尼日利亚人的任何东西都与食物竞争。

在尼日利亚东北部,121%的收入用于食品。这意味着,花光所有收入,也只能吃八成饱。

由于人口增长快于 GDP,尼日利亚是全球唯一一个人均国内生产总值在过去20年中稳步下降的国家。

-- 《尼日利亚市场规模之谜》

招聘信息

周刊讨论区的程序员招聘帖,有大量工作/实习岗位,欢迎查看。

如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 250 元。

1、厦门铃盛软件

职位:前端软件工程师,工作地点:福建省厦门市

RingCentral(NYSE: RNG)是纽约交易所上市公司,总部在美国硅谷,是全球领先的企业云通信协作解决方案提供商。

要求应聘者掌握 WEB 前端开发技术,具有良好的代码风格、设计意识和产品意识,详细要求请点击这里查看。有意者请发送简历至邮箱:hiring.xiamen@ringcentral.com 。

2、秘猿科技

秘猿科技是区块链创业公司,为加密经济提供区块链基础设施和服务。以下职位的工作地点为杭州,也可以 remote。

  • 高级区块链工程师:需要熟悉 Rust 语言。
  • 高级后端工程师:熟悉分布式系统开发。
  • 首席安全官:5年以上安全从业经验。
  • 高级测试经理:从事区块链底层的自动化测试。

点击这里,查看详情。简历投递:zhouyun@cryptape.com

回顾

去年的本周:第 18 期

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月23日

任正非管理思想

$
0
0

前一段日子,网上出现了一个仓库,收集了华为公司创始人任正非的讲话稿,从1994年直到2018年,一共400多篇。

我把这些讲话稿做成 epub 文件(下载),每天睡觉前读一点。足足两个月,总算全部读完了,一百多万字。下面就是我的读后感。

我推荐大家也读一下,眼界会不一样。你会了解,年收入千亿美元的公司怎么运作,最高层怎么思考问题,如何在全世界开展业务,十几万员工又怎么管理,奖金怎么分配。

如果你还不知道任正非的个人历史,建议先滚动到本文结尾,读一下附录《答法国记者问》,这是他谈自己最多的一次谈话。

一、任正非的作用

任正非说过一段话,解释他在华为的作用。

我刚来深圳,还准备从事技术工作,或者搞点科研的,如果我选择这条路,早已被时代抛在垃圾堆里了。我后来明白,一个人不管如何努力,永远也赶不上时代的步伐,更何况知识爆炸的时代。只有组织起数十人、数百人、数千人一同奋斗,你站在这上面,才摸得到时代的脚。

我转而去创建华为时,不再是自己去做专家,而是做组织者。

在时代前面,我越来越不懂技术、越来越不懂财务、半懂不懂管理,如果不能民主的善待团体,充分发挥各路英雄的作用,我将一事无成。从事组织建设成了我后来的追求。

《为轮值 CEO 鸣锣开道》(2011年12月25日)

后来,任正非说得更直接:

"我什么都不懂,我就懂一桶浆糊,将这种浆糊倒在华为人身上,将十几万人黏在一起,朝着一个大的方向拼死命的努力。"

他做的就是制度设计和组织建设,将所有员工团结起来,集中力量,在公司的战略方向上发起主攻。

所以,他的讲话内容大部分都跟企业管理有关,许多是非常细节的问题(如何建设驻外机构的员工食堂,就谈了好多次),行业趋势和未来方向他谈得不多。这一点跟马云正好相反。

二、生存危机感

任正非最大的特点,我认为,就是他有极强的生存危机感。

任正非始终担心,华为会生存不下去。这一方面因为他充满磨难的个人经历,另一方面也跟科技行业的激烈竞争有关。虽然很多创业者都是小心谨慎,但是像这样怀有浓厚的危机感,彷佛灾难随时就会发生的企业家却不多见。

1997年,他说:

成功不是走向未来的可靠向导,我们需要将危机意识更广、更深地传播到每一个华为人身上。

谁能把我们打败?不是别人,正是我们自己。古往今来,一时成功者众多,持久的赢家很少。失败的基因往往在成功时滋生,我们只有时刻保持危机感,在内部形成主动革新、适应未来的动力,才可能永立潮头。

我们要让公司始终充满危机意识,在做实中不断优化自己。

1998年,他说:

我们的幼稚还体现在复杂的产品做得十分好,而应用在简单地方就如此之差,远远不是科学的商人,这种不成熟性,处处都展示着公司的危机。

我们本来预测公司的危机可能在三年以后出现,而实际上,比这个估计更提前。既要发展,又要避开危机,唯有的办法就是要大力加速改变现状。

1999年,他说:

我们华为公司是一个随时都会崩塌的危险的公司。危机是什么?危机就是我们还不知道危机在什么地方,或者我们感觉不到危机。如果知道危机是什么,华为就没有危机了,就稳操胜券了。

2001年,他发表了长文《华为的冬天》。

我们正处在危机中,还有一项例证。就是处在危机并不认识危机,前方浴血奋战,后方歌舞升平。

在华为公司,我们的冬天意识是否那么强烈?是否传递到基层?是否人人行动起来了?

公司所有员工是否考虑过,如果有一天,公司销售额下滑、利润下滑甚至会破产,我们怎么办?我们公司的太平时间太长了,在和平时期升的官太多了,这也许就是我们的灾难。泰坦尼克号也是在一片欢呼声中出的海。而且我相信,这一天一定会到来。面对这样的未来,我们怎样来处理,我们是不是思考过。我们好多员工盲目自豪,盲目乐观,如果想过的人太少,也许就快来临了。居安思危,不是危言耸听。

如果华为公司真的危机到来了,是不是员工工资减一半,大家靠一点白菜、南瓜过日子,就能行?或者我们裁掉一半人是否就能救公司。如果是这样就行的话,危险就不危险了。

十年来我天天思考的都是失败,对成功视而不见,也没有什么荣誉感、自豪感,而是危机感。也许是这样才存活了十年。我们大家要一起来想,怎样才能活下去,也许才能存活得久一些。

失败这一天是一定会到来,大家要准备迎接,这是我从不动摇的看法,这是历史规律。 目前情况下,我认为我们公司从上到下,还没有真正认识到危机,那么当危机来临的时刻,我们可能是措手不及的。我们是不是已经麻木,是不是头脑里已经没有危机这根弦了,是不是已经没有自我批判能力或者已经很少了。

今年我们要广泛展开对危机的讨论,讨论华为有什么危机,你的部门有什么危机,你的科室有什么危机,你的流程的哪一点有什么危机。还能改进吗?还能改进吗?还能提高人均效益吗?如果讨论清楚了,那我们可能就不死,

危机并不遥远,死亡却是永恒的,这一天一定会到来,你一定要相信。从哲学上,从任何自然规律上来说,我们都不能抗拒,只是如果我们能够清醒认识到我们存在的问题,我们就能延缓这个时候的到来。

在世界大潮中,我们只要把危机与压力传递到每一个人,每一道流程,每一个角落,把效率不断提升,成本不断下降,我们就有希望存活下来。

任正非自己也知道,他对危机看得比较重,但是认为这样没什么不好。

全体员工要有悲剧感,也许只有强烈的悲剧感才能防止悲剧的真实上演。

三、坚持主业

正是由于强烈的危机感,他始终强调华为不能偏离主业,必须集中力量主攻战略重点,牢牢占领市场。这样才可能建立竞争优势,不被对手轻易击败。

虽然地处深圳,华为从来没有去碰房地产和股票,不碰那些可以快速赚钱的行业,而是集中精力做强主业。

1997年制定的《华为基本法》,第一条就是华为永不进入信息服务业,只做信息设备供应商。任正非这样解释:

华为决心永不进入信息服务业,把自己的目标定位成一个设备供应商。

这在讨论中争论很大的,最后被肯定下来,是因为只有这样一种方式,才能完成无依赖的压力传递,使队伍永远处在激活状态。

进入信息服务业有什么坏处呢?自己的网络、卖自己产品时内部就没有压力,对优良服务是企业的生命理解也会淡化,有问题也会推诿,这样企业是必死无疑了。

在国外我们经常碰到参与电信私营化这样的机会,我们均没有参加。当然我们不参加,以后卖设备会比现在还困难得多,这迫使企业必须把产品的性能做到最好,质量最高,成本最低,服务最优,否则就很难销售。

破釜沉舟,把危机意识和压力传递到每一个员工。通过无依赖的市场压力传递,使内部机制永远处于激活状态。这是欲生先置于死地,也许会把我们逼成一流的设备供应商。

《华为的红旗到底能打多久(1998)》

任正非对华为的定位就是"做信息管道",不碰信息内容,唯一的目标是让信息通过华为的管道流动。

我们不可能建信息渠道,我们没有那个能力。软件业务我认为主要建立一个支持电信网络宽带化的构架,开放中间件平台,让别人的业务产品可以载在我们的平台上。这个平台支持扩大公司网络产品的流量使用价值,至于管道内部的介质,由互联网去做,我们不行。

我认为华为的未来,要聚焦在网络制造上,做一个好的管道制造公司,产品做到水龙头为止。任随风云变换,业务产品不断兴亡,土地与平台只会越来越丰富。目的是支持网络的竞争力。

我每次批示,问你们是不是在做管道产品,不是做管道产品我认为就要切掉。将来一定会崛起一个伟大的管道公司,当然不一定是我们,但软件不能分散公司的竞争实力。华为的软件是为了推动管道的有效利用,未来宽带的有线网和无线网的宽带化,就是管道。所以我的批示是说:我们只做到水龙头为止,水龙头以外的东西我们暂时不要投资,否则的话,我们怎样度过这场金融危机?这是我的看法,软件怎么考核法?就和全公司所有部门一样,正的现金流、正的利润流、正的效益增长。

《与IFS项目组及财经体系员工座谈纪要(2009年2月6日)》

四、极度重视利润

公司如何才能生存下去?任正非认为,利润是第一位的。没有利润,公司就活不下去,而且利润必须丰厚,否则无法抵抗风险。公司所有的活动都必须以利润为目标。军人以胜败论英雄,华为以利润论英雄。

创业的早期,任正非特别强调,科研必须面向公司的利润,不能去搞短时间内无法见效的基础研究。

科研必须面向公司。如果人类给你发奖金,你就面对人类去做吧。因为待遇是我们公司给你发的,所以你要面对公司的核心竞争力提升,才能给你评价!

有人可能不太接受我的观点,说我在做着完全的创造发明,和梵高的画是一样的,也可能死了多少年之后,一张纸可以卖到2000多万美金,如果你留下遗嘱的话,我们会忠实地将这笔钱转给你的受益人。

华为长期还会处于技术实用性研发阶段,我们的创新是有局限性的,就是提高华为的核心竞争力。有些人很不理解,我做出的东西,明明是最新的爆出冷门的东西,他做出来的大众化的东西,却给他要评出一个创新奖。我认为你做出的东西没有商业价值,就由人类来给你发奖吧。

(在"创业与创新"反思总结交流会上的讲话,1999年。)

有一年,由于科研人员不了解市场需求,做出来的产品市场滞销,仓库里堆积如山。任正非提出,发年终奖的时候,将这些卖不出去的产品打包,科研人员一人发一包拿回家,看看自己做出了什么东西。

任正非曾经说过,华为是技术商人,不是科研机构。

华为做的是技术商人,不是科学家,科学家可以什么都不管,一辈子只研究蜘蛛腿的一根毛。对科学家来说,这是可以的。但是对我们呢?我们只研究蜘蛛腿,谁给我饭吃?因此,不能光研究蜘蛛腿,要研究客户需求......

《在变革战略预备队誓师及颁奖典礼上的座谈纪要(2015年5月8日)》

等到后来站稳脚跟,华为逐渐成为行业领头公司时,任正非这时才开始允许公司对基础研究投资,资助知名教授。

为了保证利润,在早期,华为是不做品牌的。因为做品牌要投入大量广告费,对利润影响太大。

我们要坚持放弃品牌的路线不能动摇,我们不能昨天放弃了品牌,今天转过来也要做品牌。今天终端赚的钱,赚的就是广告费,赚的就是渠道费。其实我们就是把广告费砍掉了,把渠道费砍掉了,然后我们就有点利润。不能因为我们今天在委内瑞拉有了成功,就盲目的起来去做终端的品牌,这一点我是不同意的。因为我们要做品牌,每年的付出的钱是巨大的,做品牌不是很简单的。

《在委内瑞拉与员工座谈纪要(2007年7月3日)》

五、尽可能降低成本

只要降低成本和费用,就能产生利润。任正非非常喜欢举越南的铁塔作为例子。

我在越南提出一个问题,百年一遇的台风,把爱立信的铁塔吹倒了,诺基亚的铁塔也吹倒了,就我们的铁塔没有倒,我请问你这个财务人员,如何评价?

这说明对成本管理并没有做好,这说明项目存在过度交付的问题。就像飞利浦的灯泡,只有两年寿命,用了两年刚好坏掉,这就是最好的产品。如果客户只付了两年灯泡的钱,但是我们保证10年的寿命,只能说明我们不懂经营。

但是我们当年考市场人员和财务人员的时候,每个人都充满了自豪感,你看,诺基亚和爱立信的铁塔都倒了,就我们没倒,华为的水平多高啊!华为公司的铁塔只有一个标准,在永远不会有台风的沙漠里,装的也是这种铁塔。我们僵化地制定了太高的标准,为此我们每年多浪费了10万到20万吨钢铁。所以,我们今天必须加强项目财务的有效管理,我想三五年后我们一定会看到有结果。

《与罗马尼亚账务共享中心座谈会纪要(2011年06月14日)》

为了降低成本,必须减少非生产人员。有些岗位不需要高学历,以前招硕士生,现在改成招大专生,也能把成本降下来。

永远要合理地减少非生产性人员,增加专业与业务人员,才有可能提高人均效益。各级干部一定要把自己部门内部效率低、不出贡献的人淘汰出去。不能因为也在做工作,与周边关系、上下级关系不错,就一直迁就,如果一个干部不懂得通过主动置换,去创建一个更有效的组织,这个干部是不合适做一把手的。

我们要进一步对岗位责任制进行合理设计,不必处处要求高学历。不合理的使用高学历,就是高成本。我们的管理已经逐步变得规范,操作已经明晰,在相当多的岗位上,可以开放专科生上岗。一定要把成本降下来。

我们的出路只有二个选择,一条是降低工资,一条是多做一些工作,如果大家不愿意降工资,那就要更加努力工作,舍此难道还有更高明的办法吗?

《干部工作会议上的讲话》,2004年

机关就是非生产人员,所以要精简机关,让办公成本降下来。而且机关不是管理部门,是服务部门,时刻支援前线。

公司主要的资源要用在找目标、找机会,并将机会转化成结果上。我们后方配备的先进设备、优质资源,应该在前线一发现目标和机会时就能及时发挥作用,提供有效的支持,而不是拥有资源的人来指挥战争、拥兵自重。谁来呼唤炮火,应该让听得见炮声的人来决策。而现在我们恰好是反过来的。机关不了解前线,但拥有太多的权力与资源。

就是把决策权根据授权规则授给一线团队,后方起保障作用。这样我们的流程优化的方法就和过去不同了,流程梳理和优化要倒过来做,就是以需求确定目的,以目的驱使保证,一切为前线着想,就会共同努力地控制有效流程点的设置。从而精简不必要的流程,精简不必要的人员,提高运行效率,为生存下去打好基础。

当然炮火也是有成本的,谁呼唤了炮火,谁就要承担呼唤的责任和炮火的成本。后方变成系统支持力量,必须及时、有效地提供支持与服务,以及分析监控。公司机关不要轻言总部,机关不代表总部,更不代表公司,机关是后方,必须对前方支持与服务,不能颐气颇指。

后方平台(包括设在前线的非直接作战部队)要及时、准确满足前线的需求。我们机构设置的目的,就是为作战,作战的目的,是为了取得利润。平台的客户就是前方作战部队,作战部队不需要的,就是多余的。后方平台是以支持前方为中心,按需要多少支持,来设立相应的组织,而且要提高后方业务的综合度,减少平台部门设置,减少内部协调,及时准确地服务前方。

《销服体系奋斗颁奖大会上的讲话(2009年1月16日)》

六、裁员,再裁员

如何保证华为始终具有竞争力,持续获得利润?任正非认为,裁员是必不可少的。这样可以淘汰不适任的员工,激活团队,空出位置补充新人,避免公司出现惰怠。

我在美国时,和 IBM、 CISCO、LUCENT 等几个大公司领导讨论问题时谈到,IT 是什么?他们说,IT 就是裁员、裁员、再裁员。以电子流来替代人工的操作,以降低运作成本,增强企业竞争力。

《华为的冬天》,2001年

大家一定要有一个心理准备。我们可能会不断地扩张,也会产生不断的裁员。 因为整个环境是在大变化的,随时随地你们都可能会被裁掉,包括我自己在内。

裁员的过程中,每个骨干可以向有关部门申诉,"我是什么样的骨干,我做过什么贡献,为未来能承担什么责任"。不要赌气,你愿意留在华为工作的话,你可以申诉,大家加强沟通,但是裁员是永远不可避免的。自动降薪也是一样,我们的薪水如果只能升不能降的话,这个公司也是一个悲剧。

裁员时我们要友好,请人家吃顿饭,欢送欢送,送点礼品。我们不是有劝退指标吗?劝退最高可以送12个月的工资,我们有这些东西都是一种友好的表现,各级部门要善于理解公司这种友好的态度。以后还会裁员,这是毫无疑问的,这一点我们决不会向员工做太平的承诺,我们永远不会太平,是因为市场竞争太激烈,我们又不是强手。世界上没有一个上帝能保证我们是常胜将军,我们怎么保证员工终身能在公司工作呢?我们没有这个承诺保证。

所以我建议从现在开始, 员工们都少一些主人翁意识,多一些打工心态,我到这个公司是打工来的,我要好好干,不好好干就会被裁掉。我说的是少一点,而不是没有,这也是针对一部分员工说的,他们的主人翁精神太强,进入公司后事事关心,但自己的本职工作做得不好,突然被主管调整,心里想不通,我这么爱公司,关心公司,这么主人。需知每个人在公司的工作地位是以本职工作做好来确定的。

《与员工的对话(2000年)》

华为对于效益不好的部门,政策就是七个字:"减人,增产,涨工资"。整个部门发一个总额固定的薪酬包,你们想要涨工资,就要减人,把减掉的人的工资分给其他人。

华为对于基层员工实行绝对指标考核,只要绩效超过考核线,就算合格;对于高级干部实行末位淘汰制,如果排名靠后,就要撤换。这也是为了保证团队始终具有奋斗精神。

最近中国航母选人的方式对我启发很大。中国航母选的人都是"疯子",不是"疯子"不要,选的就是那些终生热爱航母、具有献身精神的人员。不然干十年,你要转业,烧这么多油培养的经验全没用了。

西点军校的末位淘汰制设计出来的,是为了选拔将军。它的原理是不管整个队伍如何优秀,都要将排在后面的分子末位淘汰掉,形成挤压,逼先进更先进,从而产生更多地将军。我们一般岗位的员工,经验是主要的,他们的生产技能,资历也是重要的。用不着A、B、C的挤压,挤压可能使基层员工不团结(他没有这么高的理解力),而且耗费了大量的人力资源,他们实行绝对考核更适用;这些员工天天面面相见,不用写考核日记,减轻他们的负担,把精力好好用在工作上;基层员工也不用走之字形成长的路,还是干一行,爱一行,专一行,在最佳角色上做出贡献。更不能频繁考试,让他们的精力不用在生产上。我们绝大多数员工应该快乐的度过平凡的一生。他们不想当将军,不想跳"芭蕾",就不必受那个磨难。只要贡献大于成本就可以了。但他们也不要羡慕那些更努力的人。我们把人力资源管理的精力,聚焦牵引优秀员工的进步上,促进他们更优质的成长。这也符合战略竞争力量不应过多消耗在非战略目标上的原则。

《任正非谈话纪录(2015年3月10日)》

七、如何提高管理效率

为了实现利润,每个部门一定要有指标考核。指标必须数量化,这样才可以比较。内部部门也要对服务定价,这样可以进行内部结算,从费用中心转变为利润中心。

追求管理的效率可能就是要坚定不移地实行定编、定员,确立有效的考核模式,一定要加强预算管理、业绩考核管理,在未来2~3年内,主要部门要从现在的费用中心转变成利润中心。

我们要坚持责任结果导向的考核机制,各级干部要实行任期制、目标责任制,述职报告通不过的,有一部分干部要免职、降职。

要坚持员工聘用合同制,一部分员工已经不太适合这些岗位了,我们应该有新陈代谢。我们考核的文化,要走向高绩效文化。

我们必须合理减少管理层级,扩大基层团队的管理控制量,缩小团队的数目。尽可能地压缩行政管理干部的数量,降低非生产劳动力的比例。我们的出路一是增加销售额,二是降低成本。

《干部管理培训班上的讲话》, 2003年。

干部都有聘期。聘期结束后,薪酬和岗位都要重新评定,没有达到目标,就要降职降薪。

一个人说,我很努力,工作也做得不错,思想品德也好,为什么我不能继续任职?因为标准是与时俱进的,已经有许多比你进步快的人,为了公司的生存发展,你不一定能保持职务。长江一浪推一浪,没有新陈代谢就没有生命,必要的淘汰是需要的。任期制就是一种温和的方式。

我们坚持责任结果导向的考评制度,对达不到任职目标的,要实行降职、免职,以及辞退的处分。公司决定,对完不成任务的部门,一把手要降职、免职处分,同时决不能在本部门将副职补充提成正职,不然,以后就会出现正、副职的不合作。2005年以后要同时冻结这个部门全体成员下一年度的调薪,不管他是否调出去。将来从后进部门调往先进部门工作的人,要适当地降职使用。除非因公司决策错误而撤销的项目人员。

对于机关这类难以确定目标来考核的部门,我们实行今年的人均工作量与去年的人均工作量相比,进步不大的部门,正职就应受降职处分。

八、人均效益增长是核心指标

考核的核心指标是人均效益。

一个企业最重要、最核心的,就是追求长远地、持续地实现人均效益增长。

不仅仅是当前财务指标的人均贡献率,而且也包含了人均潜力的增长。

人均效益就是看劳动的投入产出比。

一定要看劳动投入产出比,要有绩效目标。部门一把手要勇于挑指标下去,而不是为部门来和公司讨价还价,那公司会崩溃的,这样的干部是不能培养的。

部门述职抓核心指标,把今年的指标和去年的指标比,指标不好你就要往下走。和同行比会掩盖他自己的问题,自己与自己比他就会急。

工资要计入成本,以后我不看人均销售收入,转到考核劳动投入产出比。

人均效益每年应该增长15%以上,才算合格。

我们怎样才能活下来。同志们,你们要想一想,如果每一年你们的人均产量增加百分之十五,你可能仅仅保持住工资不变或者还可能略略下降。电子产品价格下降幅度一年还不止百分之十五吧。我们卖的越来越多,而利润却越来越少,如果我们不多干一点,我们可能保不住今天,更别说涨工资。

我们的干部述职报告所有指标都是人均效益指标。人均效益指标降低了,我们就坚定不移地降工资。如果你连降工资都不能接受,我认为你就没有必要再留在华为公司奋斗了。 一个部门领导没有犯过什么错误,但人均效益没有增长,他应下台了。

另一个部门的领导犯过一些错误,当然不是品德错误,是大胆工作,大胆承担责任,缺经验而产生的错误,而人均效益增长,他应受到重视。若他犯的错误,是集体讨论过的,错了以后又及时改正了,他应受到提拔。各级干部部门,要防止明哲保身的干部被晋升。在一个系统中,人均效益的指标连续不增长,那么主要部门领导与干部部门的人,应全部集体辞职。因为,人是他们选的,您选了些什么人。

《华为的冬天》,2001年。

九、绩效考核

绩效越突出,奖励就越多。华为的利润都是分给员工的。

我们希望一般骨干员工的薪酬高于社会可比岗位20%-30%,但是优秀骨干员工可以高出几倍。你看我这二十多年讲话,一贯主张多发钱,发给谁?优秀人员!

考核的时候只看结果,不看过程。

我们当年也走了弯路,强调关键事件过程行为考核,强调过程,而不是结果。很多人一步就把事情做完了,没有过程,只有结果,却得不到积极的评价,非逼着人家制造一点复杂才行。我们今后不要讲过程了,就讲责任结果。

工龄不作为待遇标准,而且,职级工资要封顶,每年的收入主要由该年的绩效决定。

我们从来不强调按工龄拿待遇。经常看到调薪的时候有人说"这个人好几年没涨了,要涨一点工资。"为什么?这几年他的劳动质量是否进步了?他的贡献是不是真大了?如果没有,为什么要涨工资?我们有的岗位的职级为什么不封顶呢?要封顶。有的岗位的贡献没有变化,员工的报酬不能随工龄而上升。我们强调按贡献拿待遇,只要你贡献没有增大了,就不应该多拿。我们公司把股票分给了员工,大家不仅获得了自己劳动的报酬,甚至还获得了资本增值的报酬,这种报酬比较多,对公司的影响就比较大。有人就因此惰怠。要防止在奋斗者这个层面也产生惰怠者。

《华为关于如何与奋斗者分享利益的座谈会纪要(2011年04月14日)》

十、员工必须是奋斗者

任正非认为,华为的主体员工必须是奋斗者。"只有奋斗才会有未来,我们奋斗可能会不成功,但不奋斗肯定是不成功的。"

所谓奋斗者就是"一些怀抱着理想、有伟大抱负、愿意为这个事业献出这一生的人,因为你热爱,就无怨无悔。"为了事业,全力拼搏,完全投入到工作中去,一定要达到目标。奋斗者的一个标准就是主动放弃所有带薪休假,为公司创造出利润以后,可以享受回报。

在任正非看来,选择职业是"爱一行,干一行;干一行,专一行"。你选择华为,是因为你喜欢这个行业;既然你喜欢,进了公司没有理由不好好做。

当然,只求做好本职工作,希望按时下班,不当奋斗者,也是允许的。但是那样就只能拿固定的低薪,不能享受奖金。

不奋斗的干部、专家,不是公司的宝贵财富。

人的天性就是要多休息,追求舒服,这样的话,企业如何发展。华为的理念"以奋斗者为本,长期艰苦奋斗",就是针对这种人性的惰怠产生的。

员工都可以到食堂用餐。......(也)可以选择放弃(食堂)用餐,但是不能形成一堆人下班买菜做饭的氛围。精力要用在作战上。

《在行政流程责任制试点进展汇报会上的讲话(2014年11月4日)》

为了保证员工始终有奋斗精神,任正非要求不得使用"员工满意度"作为考核指标。

怎么行政系统出来一个莫名其妙的员工满意度,谁发明的。员工他要不满意,你怎么办呢?现在满意,过两年标准又提高了,又不满意了,你又怎么办?

不要随便使用员工满意度这个词来作为考核的鞭子。员工满意度是与成本有关的。欧洲曾经是一个幸福社会,现在大罢工风起云涌。原因是没有足够的钱去满足人民日益增长的物质要求,适当的降低也不为人民答应。实质上人民的要求是无法充分满足的,只能在适当条件下,达到适当的水平。我们要理解舒舒服服是不可能长久的,唯有艰苦奋斗才能创造好的生活。

我们提以客户为中心,不断提高客户满意度,是因为只有客户不断地给我们合同,我们才能产生生存必须的利润。客户满意就是要我们吃些苦才能实现。因此,我们在生活上仅给员工提供基本的生活保障,标准的生活服务。员工想生活再好一些,就像工作服与时装一样,时装是个性化的,好看,但钱较贵。员工希望自己的生活再好一些,就如穿时装一样,自己应从工资、奖金、补助中支付一部分才可能自己去改善。个人的自由个人来承担。

《在全球行政人员年度表彰暨经验交流大会座谈纪要(2010年03月04日)》

(正文完)

附录:答法国记者问(节选)

2013年11月25日

记者:您是个低调的人,我们希望了解您是什么样的人,您的童年是怎样的,您来自哪里?

任:我小时候生长在贵州的一个少数民族边缘小镇(镇宁县),在小镇读了小学和中学,随父亲工作变动,到了很小一个城市(都匀市)读中学,然后考上大学。我父母都是中、小学教师,虽然他们没有给我们宽松的物质生活条件,但在我们的教育上付出非常大。

记者:希望您接着向下说。

任:我考上大学后,学的是建筑,在重庆建筑工程学院。电子方面是自学的,是改行了的。

记者:后来我们知道您从军了一段时间,有人说您那段时间做的是工程方面的工作,也有人说是密码方面的工作,有人说是军官,也有人说不是军官。

任:大学毕业后我是当兵了,当的是建筑兵。当然是军官,不是士兵,在中国"当兵"这个说法是指行业,而不是职位。我当兵的第一个工程就是你们法国公司的工程。那时法国德布尼斯·斯贝西姆公司向中国出售了一个化纤成套设备,在中国的东北辽阳市。我在那里从这个工程开始一直到建完生产,然后才离开。

我跟法国很有缘分,第一个工程就是法国的。我是从事石油裂解开始的油头8个装置的自动控制工作。当时有400或600多个法国专家在现场指导工作,他们教了我化工自动控制。

因为当时中国比较贫穷,国家的理想就是每一个老百姓都能穿上化纤的衣服。中国人那时认为化纤的衣服很挺,不打皱,很漂亮。那个化纤厂建好以后中国就改革开放了,改革开放后中国人认为棉布比化纤好。

化纤有个缺点,不透气,一旦着火以后沾在身上烧很危险。这个厂没有实现给每个中国人提供化纤服装的梦想,后来转变为做包装袋材料,而不是做衣服了。(记者:丝绸更好。)丝绸很贵啊,那就更不可能了。那时候中国人总体生活水平还是很低的。

所以为什么那个时期以化纤为中心,就是为了解决中国人的温饱问题。像现在法国奢侈品对中国的出口,在那时候连印象都没有,因为30年前中国的基本问题是温饱问题。

记者:当时您已经想到要创业吗?因为创建一个像华为这样的企业,不是什么人都能想到的。

任:没有。因为中国改革开放后,邓小平要裁减军队,要裁减非战斗部队,比如铁道兵和基建工程兵,我们就脱下军装了。

记者:你创建华为时,政府是否鼓励你们创业?

任:我们脱下军装以后就要走向生活。其实那时我们很缺乏生活能力的,因为不熟悉市场经济。中国当时正面临着社会转型,我们这种人在社会上,既不懂技术,又不懂商业交易,生存很困难,很边缘化的。我转业在南海石油深圳开发服务公司工作,这个公司主要是盖房子。(记者:哪年)1982到1983年,这时已经是市场经济时代了。

南海石油深圳开发服务公司,它不属于石油系统,隶属深圳市政府。深圳想给南海石油多盖些房子,赚它的钱。我因为不适应市场经济和管理方法,没有干好,人家也不要我了,我只好辞职找工作。

记者:为什么走上电信这一行?

任:如果我去卖水果,你也会问我为什么去卖水果。但是如果我聪明的话,不走上电信,也许对我的人生意义会更大。如果我去养猪的话,这时可能是中国的养猪大王了。猪很听话,猪的进步很慢,电信的进步速度太快,我实在累得跑不动了。

不努力往前跑就是破产,我们没有什么退路,只有坚持到现在。我根本跟不上电信发展的速度。那个时候就是错误地以为电信产业大,好干,就糊里糊涂地进入电信了。进去后才知道电信最难干,它的产品太标准了,对小公司是一种残酷。

但是我们退不出来了,因为一开业一点钱都没有了。退出来我们什么钱都没有了,生活怎么过,小孩怎么养活。退出来,再去"养猪"的话,没钱买小猪,没钱买猪饲料。因此也不可能改行了,只好硬着头皮在电信行业前行。

记者:您是指开始很不顺利?后面才好些?

任:应该是无知,我以为电信市场那么大,我做一点点养活我就行了。进来才知道电信不是小公司能干的,标准太高了,进步太快了。要活下来只有硬着头皮干到底,不然就干不下来了。那时应该说和我们同样傻走上电信行业的公司有几千家、上万家,也许他们早认识到他们的傻,所以转到别的行业成功了。

记者:当时中国政府是否有鼓励计划,鼓励人们在电信领域投资?

任:我们那时是因为傻继续走下来了,越往前走公司越少,越走越孤单。当时中国最大的问题是上千万"知识青年"从农村返回城市,无法就业,政府那时鼓励大家去卖大碗茶、卖馒头等做生活。这些人那时叫个体户,做得很成功的就叫万元户。万元户的概念就是一年能挣1000欧元,在那个时候可能是大明星了,政府渴望解决知识青年回城就业问题。我也就是一个成功的个体户。

有些成功的个体户就开始雇工,成为雇主,那时有法律规定雇工不得超过8个。中国的市场化,私有化就是从这样的情况磕磕碰碰开端的。不可想象今天可以十几万的雇工。

中国那时还没有想到在高科技产业产生突破,高科技在那个时候的中国还认为是高不可攀的事。中国那时想解决的是文革的后遗症,使国家尽快稳定下来。在那个变化的时代,我们这个年龄段是很容易被时代抛弃的。转型的时代,中国从封闭的落后时代,转化到现代化电脑化的时代,我们这个年纪是最没有价值的。电脑不懂,英文不好。

那时最代表中国潮流的是大面积的出国留学,吸收外国的经验,这对中国后来的经济发展起到很大推动作用。我们那个时代没有条件出国留学,只能看看书,从书中了解外国的经验是什么。

记者:那您当时为什么没条件出国呢?

任:第一,我有老婆小孩,他们要吃饭、上学,总不能留学两年不管他们吧!第二,我本人英文不好,我自学英文要花很长时间。又要挣钱又要补习英文对我来说是很困难的。因此我目光短浅一点,没有出国。

记者:华为公司的名字是您建立初就起的,还是后来起的?华为是中国繁荣的意思?

任:我们当初注册公司时,起不出名字来,看着墙上"中华有为"标语响亮就拿来起名字了,有极大的随意性。华为这个名字应该是起得不好。因为"华为"的发音是闭口音,不响亮。所以十几年来我们内部一直在争议要不要改掉华为这个名字,大家认为后面这个字应该是开口音,叫得响亮。最近我们确定华为这个名字不改了。我们要教一下外国人怎么发音这个名字,不要老发成"夏威夷"。

记者:中国在继续变革,您拥有华为1.4%的股份,您想怎样把您的股份传给子女?    任:我在开放改革的整个历史过程中仅仅是个过客,我没想过身后什么事,我太太的观念是把儿女培养成有能力的人。她说前面十几年辛苦,后面一辈子都不苦。如果前十几前没有努力教育好孩子,孩子没有教育好,后面几十年都是痛苦的。我赞同她的观点。

我太太为了教育孩子,一生就是做了家庭妇女。(有几个孩子?)三个孩子,因为我孩子总体教育是成功的,所以我从来没有考虑过财产怎么分配的问题。

记者:为什么你只有1.4%的股份,而不是更多,以便更好地把握企业的经营?

任:为什么要持有更多的股份?能不能解释一下?难道我要一辈子承担企业的经营责任吗?迟早一天我会得老年痴呆的。总有后面的人比我们优秀,就让他们去管好了。后面人也会更辛苦,他们钱比我还少。

记者:您在董事会里掌握的表决权是否比股份份量更重?

任:我们是一人一票制,而不是根据股权重量。在董事会上我说得对大家听取,我说的不对,大家反对,我们从来都是民主讨论。

记者:您一生为人低调,媒体见得不多,为什么今天您这样做了?而且选择在法国?

任:我一贯不是一个低调的人,否则不可能鼓动十几万华为人。在家我平时都和小孩一起疯。家里读书的小孩经常和我聊天,我很乐意夸夸其谈。我并不是像外面媒体描述的低调的人。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月26日

科技爱好者周刊:第 71 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。

封面图:伊朗的住宅小区,距离德黑兰50公里。

刊首语

我家附近有一所重点中学,校门口拉起了大红条幅:"热烈祝贺我校三名同学考入北大清华"。

这不禁让我想到,很多科技公司的创始人都不是一流名校毕业。马云是杭州师范学院,马化腾是深圳大学,任正非是重庆建筑工程学院,丁磊是成都电子科大,周鸿祎是西安交大。

当然,名校毕业的也不少。李彦宏是北京大学,张朝阳是清华大学,王兴是清华大学,张一鸣是南开大学,陈天桥是复旦大学。但是,其中不少是留学回国后创业,有政策扶植的。

总的来说,我认为,来自一般学校的创业者更常见,反倒是高管大部分都是名校毕业。

理由是好学校毕业以后,出路比较好,通常都会进入不错的单位,离职创业的机会成本比较大。如果是一般学校毕业,就业又是很普通的单位,看不到前途,反而容易创业,而且因为没有退路,只能破釜沉舟,放手一博。

从这个角度看,高考不理想的同学,应该早早就有思想准备,将来可能走创业这条路。

资讯

1、澳大利亚企鹅岛

澳大利亚墨尔本以南的菲利普岛,是企鹅的繁殖地之一。以前,岛上有不少居民,企鹅上岸的海滩分布着大量民宅(下图),加上纷至沓来的观光客,企鹅数量开始锐减。

从1985年开始,澳大利亚政府决定收购岛上所有私人地产,将整个岛彻底变为企鹅岛。经过多年的努力,企鹅的数量从12,000只增加到了31,000只。

上个月,耗资5,800万美元的游客中心(下图)完工,将游客限制在指定区域,游客只能坐在看台上,不能随便乱走,等着企鹅经过。

2、美国海军更换触摸屏

2017年8月21日,美国麦凯恩号航空母舰在新加坡与一艘油轮相撞,造成油轮的10名船员死亡,麦凯恩号48人受伤。美国军方最近公布了调查报告,事故原因之一是航母操作人员对计算机系统不熟悉,有人将操作系统置于手动模式,但是其他人没有发现。

问卷调查中,大部分人表示,更喜欢机械控制,而不是触摸屏操作。因为机械装置"提供了即时的触觉反馈"。报告指出,如果存在机械控制,舵手可能会提前发现问题。军方因此决定,2020年开始在驱逐舰上,用机械装置取代触摸屏,控制油门和舵。

3、闲置的波音 737

半年之前,由于两起空难,波音 737 Max 全球停飞,一共几百架。这些飞机长期不飞,但必须一直保养,维护成本巨大。燃油系统和发动机部件必须每天启动,防止腐蚀;计算机系统和辅助动力装置也必须每周检查;还要防止鸟类和动物在飞机里面筑巢。

根据波音公司的737维修手册,飞机休眠超过两个月时,机身间隙必须用乙烯基胶带密封。目前,波音 737 Max 年底能不能恢复飞行,依然有很大疑问。已经有航空公司表示,如果停飞持续下去,将把最值钱的发动机和主要部件拆卸保存,机身只能不要了。

4、世界最快超级计算机

超级计算机制造商 Cray 公司与美国政府签署了一份价值6亿美元的合同,建造世界第一台每秒100亿亿次(10的18次方)浮点运算的超级计算机,名为 El Capitan。它预计将在2023年末投入使用。

目前,世界最快的超级计算机是美国的 Summit,每秒运算20亿亿次,占地面积相当于两个网球场,耗资2亿美元。

5、老年人更喜欢手机

美国一项调查发现,65岁以上的美国人每天花费近10个小时在屏幕前(包括电视、电脑和智能手机)。跟2015年的调查相比,看电视的时间没有变,但是玩手机的时间增加了七倍,每天平均是2个小时。

我自己的观察是,老年人比年轻人更喜欢手机,因为他们的生活中缺乏其他消遣。所以,尽量给长辈使用配置高的手机,而不是让他们用老年机。

6、反人体识别的服装

现在越来越多的监控系统有人体识别功能,时装设计师凯特·罗斯(Kate Rose)在拉斯维加斯 DefCon 安全大会上,展示了反识别服装。穿上这种衣服,监控系统就识别不出这是一个人。

它的原理是衣服上提供足够的噪音(比如下面的图案),就能使得模式识别失效。当然,这种方法只适合于人体识别,对于人脸识别无效。

7、空间站机器人

俄罗斯在8月22日向国际空间站发送一个人形机器人,将在那里停留两周,然后于9月7日返回地球。

该机器人可以自主执行某些任务,但本次主要是为了测试,准备将来将其发送到月球上。它还可以与人对话,可能有助于缓解宇航员的孤独。

8、比特币发明人

一名49岁的澳大利亚男子Craig Wright,一直声称他就是比特币发明人中本聪。

结果,一个美国人起诉他,声称跟他一起发明了比特币,但是没有拿到报酬。现在美国法院判决,Craig Wright 必须将持有一半的比特币分给那个美国人,价值约为50亿美元。Craig Wright 则称,他已经遗失了密钥,无法取出比特币。

9、一句话消息

  • 美国莱斯大学宣布,开发出一种将热量(红外辐射)转化为光的方法,从而可将太阳能发电的效率从22%提高到80%。

  • 联合国气候委员会发布报告,认为由于气候变化,未来大量土地将会荒漠化,农业生产也变得不稳定。农业改革刻不容缓,人们应该少吃肉,不再发展畜牧业。

  • 可口可乐公司将它的瓶装水产品改成铝罐包装,因为塑料对环境影响太大,各国都开始限制使用塑料。

  • 特斯拉公司开始在加州交付太阳能屋顶,原有的屋顶瓦片都被换成可以发电的太阳能瓦片。

  • npm 模块都是免费使用,有人现在想出怎么通过它赚钱了。你安装 StandardJS 的最新版本 npm install standard,命令行会输出一个广告。

文章

1、即将到来的宣传自动化(英文)

作者认为,由于自动生成文本、图片、视频的技术都已经逐渐成熟,将来脸部识别认出你是谁以后,就可以针对你推送内容。软件不断生成新内容,从而实现宣传自动化。

2、如何查询 StackOverflow 和 GitHub 的最新趋势(英文)

StackOverflow 和 GitHub 每天都有大量动态,只要加以统计,就能看出最新的技术趋势。这两家公司的数据查询都是公开的,本文展示如何自己写查询,得到趋势统计。

3、我的日本码农就职总结(中文)

本文较为详尽的记录了计算机专业应届生在日本校招求职整个过程,包括抉择、事前准备、面试经历及感想。如果你想去日本工作,可以参考。(@vinci7 投稿)

4、FACEBOOK 伦敦终面经历(中文)

五月份的时候,在 LINKEDIN 上看到 FACEBOOK 伦敦的招聘广告,于是就投了,当时不抱希望的。投了简历很快就接到 FB 猎头的联系。(@DoctorLai 投稿)

5、随机数函数的图像(英文)

作者写了一个工具,可以生成随机数函数的图像,从而判断随机数生成是否有规律。上图中,明显randomC函数比较理想。

6、风险是可控的,只是需要高度自律(中文)

纪录片《徒手攀岩》中,Alex 徒手没有任何保护,爬上了酋长岩。即使是在专业的攀岩运动员看来,这也是一个不可能完成的任务。说白了,就等于送死。

他说了一句话,非常地奇怪,他说:"风险和后果是两回事。徒手攀岩的风险很低,只是后果很严重。"

7、文本压缩算法比赛(英文)

一个澳大利亚计算机教授,在2000年发起一个比赛。谁将100MB 的维基百科文本文件,压缩得最小,可以得到5万欧元奖金。

经过20年,领先者的记录从18MB 降低到16MB 以下。目前还在等待,谁第一个压缩到 15MB 以下,就是冠军,拿到5万欧元。

8、DevOps 干什么?(英文)

DevOps 作为一个新近诞生的职位,它的职责范围是什么?作者以一个 DevOps 工程师的身份,谈了自己的主要工作职责。

9、机器学习算法的最低数学要求(英文)

机器学习对数学要求比较高。本文总结了需要掌握的最低限度的数学模型。

10、Chrome 隐身模式依然可以检测(英文)

Chrome 76 堵上了隐身模式的漏洞,使用内存模拟 FileSystem API,导致隐身模式的检测脚本失效。本文提出,隐身模式依然有办法检测到。一种令人惊艳的思路是,内存比文件系统快得多,因此可以从访问速度判断是否为隐身模式。

工具

1、 Writeathon

Writeathon 是一款在线写作工具,基于极简理念,提供简洁、高效、专注的写作体验。(@Hcs66 投稿)

2、ish

iOS 的 Linux 虚拟机,实际运行的是 alpine linux,提供命令行 shell,可以访问网络,安装各种软件包,类似安卓平台的 Termux。

由于 iOS 平台的限制,iSH不能从应用市场直接安装,需要使用TestFlight安装beta版本。(@argan 投稿)

3、blogger-cli

命令行工具,可以将 jupyter notebook、markdown 文件转成静态网站。

4、fork

桌面的 Git 客户端。

5、Anbox

Linux 系统的安卓模拟器。

6、jokenpo

一个网页游戏,使用机器学习算法,让玩家与计算机进行"剪刀石头布"游戏。

7、Lockdown

一个手机的防火墙 App,暂时只有 iPhone 版本。

8、WPS Office for Linux

金山 WPS 的 Linux 版本。

9、node-jvm

一个用 Node.js 实现的 JVM,实现的非常简洁清晰,方便学习。(@douchuan 投稿)

10、sftpgo

一个 Go 写的 sftp 服务器,可以架设加密的 FTP 服务。

11、iPic

Mac 系统的桌面图片上传工具,用于将本地图片上传到图床,功能强大。(@atjason 投稿)

资源

1、BBC 的音效库

英国广播公司 BBC 的音效库,包含16000多种可以下载的音效,比如停车的声音、机床的声音、鸟叫的声音等等。

2、where is Sci-Hub

Sci-Hub 提供免费的科学论文下载,由于版权问题,它必须经常更换域名。该网站告诉你,现在可以通过哪个域名访问到 Sci-Hub。

3、trackerslist

该仓库收集 BitTorrent 下载所需要的公共的 tracker 服务器网址。

4、git-flight-rules

Git 操作往往会遇到各种问题,比如,如何把未暂存的内容移动到一个新分支,或者删除的分支如何恢复。这个仓库就收集这类问题的操作方法,有中文翻译。(@ifrontend-xyz 投稿)

5、redditix

Reddit 是美国最大的在线论坛,有许多子板块。这个第三方网站是 Reddit 的在线浏览器,自动抓取并显示某个版的所有最新图片。

6、皎然影音乐

一个中文网站,收集电影音乐资源。由于刚刚开站,资源还不多。(@jiaoran198916 投稿)

图片

1、鲸鱼没有牙齿

鲸鱼没有牙齿,口腔里面就是空的。它们进食的时候,就是直接吞下食物,从不咀嚼。

2、最初的 Youtube

2005年4月23日,Youtube 上线,最初是一个约会网站,用户可以上传一段视频介绍自己。

五天过去了,没有一个人上传视频。Youtube 于是宣布,改成通用视频网站,用户可以上传各种视频。

文摘

1、电动车是 Spotify 出现之前的 MP3

未来,没有人会关心汽车使用什么技术,重要的是从 A 地到 B 地的便利性。那时,有人可能很高兴拥有一辆精致的电动汽车,但大多数人都不会在意。

这就好比 Spotify 到底使用的是 MP3 还是其他格式,没有人关心,重要的是音乐。虽然 Hifi 爱好者依然存在,他们喜欢黑胶唱片,但那是极少数人。

90年代,我第一次看到 MP3 时,就被迷住了,陆续把我的 CD 都翻录成了 MP3,拥有了巨大的 MP3 收藏。今天,音乐是我从 Apple,亚马逊或 Spotify 获得的商品。人们不关心底层的技术,也不想拥有音乐,随时从互联网获取音乐可以让你以更低的价格消费,更方便更快速地升级。

电动车是一样的。未来的汽车将是分享的,你用 App 招呼汽车,汽车的自动驾驶系统会找到你,停下来,让你进入汽车,并自动带你到目的地。汽车公司将不再通过出售汽车获利,而是通过提供运输服务获利。

对许多人来说,汽车是一项巨大的投资,但它们的利用率很低。如果你每天使用汽车两小时,那么一天92%的时间它都是闲置的,但你必须支付百分之百的保养成本。总之,租用自动驾驶汽车,将比购买自己的汽车便宜得多。

共享经济将流行,汽车会成为像电力或计算力之类的商品。私人的汽车所有权将停止,许多汽车公司将死亡。我们正生活在汽车的高峰期。从现在开始,私人拥有的汽车数量下降。戴姆勒和宝马正在建造世界上最大的汽车共享公司,通用汽车正在关闭工厂,并将开始一项机动车出租车服务,大众汽车开始在柏林投入高达1500辆共享汽车。

2、黑匣子的故事

1934年10月19日,一架从塔斯马尼亚岛飞往澳大利亚的小型飞机不幸坠海,机上12人全部遇难,其中有一位33岁的英国传教士休伯特·沃伦牧师。

他的儿子大卫·沃伦那时只有八岁,父亲留给他的最后一件礼物是一个晶体管收音机,但是坏掉了。这激发了大卫对科学的兴趣,后来他通过自学,设法修好了收音机。

1920年代,大卫·沃伦在悉尼大学读完本科,然后在伦敦帝国理工学院获得化学博士学位。毕业后,他去了航空研究实验室(简称 ARL),作为一名研究员。那是澳大利亚国防部的一个下属单位,专门研究飞机。

1953年,ARL 接到了一个任务:协助调查最新的英国喷气式客机----彗星飞机接连坠毁的原因。

由于资料很少,很难分析出什么原因导致飞机坠毁。大卫·沃伦不禁想到,如果有一个记录器,能够保存飞行过程的所有参数,以及飞行员的录音,并且还能在事故里幸存下来,那该多好。

他把这个想法告诉他的上司,结果却被泼了冷水。上司告诉他:"你是一名化学家,专业是化学和燃料。这种事情就交给仪器组,你不需要插手。"

没有官方的支持,大卫个人不可能实现这个发明。所幸这位上司后来调走了,新上司对大卫的想法很感兴趣,愿意让大卫投入研究。但是,因为这不是政府批准的项目,也不是可以用于战争的新武器,所以只能偷偷研究。

大卫受到鼓舞,在一份题为《协助调查航空器事故的装置》的报告中写下了自己的想法,并将其发送给整个行业。飞行员工会立刻表示反对,不愿意在飞行过程中被录音。澳大利亚民航局则表示,这种装置"没有实际意义"。

这种情况下,大卫决定在自己的车库里,组装出一个原型装置。这将是有史以来第一个飞行记录仪,又称"黑匣子"。

(图片:大卫·沃伦一家)

大卫把这个装置赠送给了英国人。由于本国彗星飞机的接连失事,英国对这个装置的接受程度比较高。一家飞机公司愿意生产它。

这个装置的正式名称是"飞行记录单元"。当时,一个记者在报道中称其为"黑匣子"(black box,黑箱),这个术语来自电工学,后来成为它的通用名称,尽管它并不是黑色。为了在事故后更容易发现,该装置做成了橙色,今天依然如此。

1960年,澳大利亚成为世界第一个强制飞机驾驶舱必须录音的国家。

今天,黑匣子安装在了每一个商业航班上面,能够防火、防海水,外层是坚固的钢铁。

大卫·沃伦在 ARL 工作直到1983年退休,成为其首席科学家。他于2010年7月19日去世,享年85岁。他从来没有从黑匣子的发明里面,得到一分钱的特许使用费。

他的棺材上写着"飞行记录器发明者:不要打开"。

言论

1、

90%的 Web 应用是数据库前端。

-- HN 读者留言

2、

领导者的三种模式。

模式一:"这就是我想要的,你按照我说的做。"

模式二:"这就是我想要的,你自己想如何去做。"

模式三:"让我们一起弄清楚我们能做些什么。"

-- 《领导模式》

3、

人们的经验是,对于10行代码的脚本,Perl 语言是完美的。但如果你有500行脚本代码和几千行的库,那么需要大量的纪律才能使 Perl 代码可维护。

而在 Python 语言中,即使没有那么多的纪律,代码仍然具有相当的可读性和可维护性。

-- Guido van Rossum,Python 语言创始人

4、

SQLite 测试代码的行数,是软件本身的662倍。

-- 《如何测试 SQLite》

招聘信息

周刊讨论区的程序员招聘帖,有大量工作/实习岗位,欢迎查看。

如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 250 元。

1、秘猿科技

秘猿科技是区块链创业公司,为加密经济提供区块链基础设施和服务。以下职位的工作地点为杭州,也可以 remote。

  • 高级区块链工程师:需要熟悉 Rust 语言。
  • 高级后端工程师:熟悉分布式系统开发。
  • 首席安全官:5年以上安全从业经验。
  • 高级测试经理:从事区块链底层的自动化测试。

点击这里,查看详情。简历投递:zhouyun@cryptape.com

回顾

去年的本周:《周刊第 19 期

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年8月30日

React Hooks 入门教程

$
0
0

React 是主流的前端框架,v16.8 版本引入了全新的 API,叫做 React Hooks,颠覆了以前的用法。

这个 API 是 React 的未来,有必要深入理解。本文谈谈我的理解,简单介绍它的用法,帮助大家快速上手。

阅读本文需要有 React 基础。如果你还没学会 React,可以先看一下它的教程

一、组件类的缺点

React 的核心是组件。v16.8 版本之前,组件的标准写法是类(class)。下面是一个简单的组件类。


import React, { Component } from "react";

export default class Button extends Component {
  constructor() {
    super();
    this.state = { buttonText: "Click me, please" };
    this.handleClick = this.handleClick.bind(this);
  }
  handleClick() {
    this.setState(() => {
      return { buttonText: "Thanks, been clicked!" };
    });
  }
  render() {
    const { buttonText } = this.state;
    return <button onClick={this.handleClick}>{buttonText}</button>;
  }
}

(点击查看运行结果

这个组件类仅仅是一个按钮,但可以看到,它的代码已经很"重"了。真实的 React App 由多个类按照层级,一层层构成,复杂度成倍增长。再加入 Redux,就变得更复杂。

Redux 的作者 Dan Abramov 总结了组件类的几个缺点。

  • 大型组件很难拆分和重构,也很难测试。
  • 业务逻辑分散在组件的各个方法之中,导致重复逻辑或关联逻辑。
  • 组件类引入了复杂的编程模式,比如 render props 和高阶组件。

二、函数组件

React 团队希望,组件不要变成复杂的容器,最好只是数据流的管道。开发者根据需要,组合管道即可。 组件的最佳写法应该是函数,而不是类。

React 早就支持函数组件,下面就是一个例子。


function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

但是,这种写法有重大限制,必须是纯函数,不能包含状态,也不支持生命周期方法,因此无法取代类。

React Hooks 的设计目的,就是加强版函数组件,完全不使用"类",就能写出一个全功能的组件。

三、Hook 的含义

Hook 这个单词的意思是"钩子"。

React Hooks 的意思是,组件尽量写成纯函数,如果需要外部功能和副作用,就用钩子把外部代码"钩"进来。 React Hooks 就是那些钩子。

你需要什么功能,就使用什么钩子。React 默认提供了一些常用钩子,你也可以封装自己的钩子。

所有的钩子都是为函数引入外部功能,所以 React 约定,钩子一律使用use前缀命名,便于识别。你要使用 xxx 功能,钩子就命名为 usexxx。

下面介绍 React 默认提供的四个最常用的钩子。

  • useState()
  • useContext()
  • useReducer()
  • useEffect()

四、useState():状态钩子

useState()用于为函数组件引入状态(state)。纯函数不能有状态,所以把状态放在钩子里面。

本文前面那个组件类,用户点击按钮,会导致按钮的文字改变,文字取决于用户是否点击,这就是状态。使用useState()重写如下。


import React, { useState } from "react";

export default function  Button()  {
  const  [buttonText, setButtonText] =  useState("Click me,   please");

  function handleClick()  {
    return setButtonText("Thanks, been clicked!");
  }

  return  <button  onClick={handleClick}>{buttonText}</button>;
}

(点击查看运行结果

上面代码中,Button 组件是一个函数,内部使用useState()钩子引入状态。

useState()这个函数接受状态的初始值,作为参数,上例的初始值为按钮的文字。该函数返回一个数组,数组的第一个成员是一个变量(上例是buttonText),指向状态的当前值。第二个成员是一个函数,用来更新状态,约定是set前缀加上状态的变量名(上例是setButtonText)。

五、useContext():共享状态钩子

如果需要在组件之间共享状态,可以使用useContext()

现在有两个组件 Navbar 和 Messages,我们希望它们之间共享状态。


<div className="App">
  <Navbar/>
  <Messages/>
</div>

第一步就是使用 React Context API,在组件外部建立一个 Context。


const AppContext = React.createContext({});

组件封装代码如下。


<AppContext.Provider value={{
  username: 'superawesome'
}}>
  <div className="App">
    <Navbar/>
    <Messages/>
  </div>
</AppContext.Provider>

上面代码中,AppContext.Provider提供了一个 Context 对象,这个对象可以被子组件共享。

Navbar 组件的代码如下。


const Navbar = () => {
  const { username } = useContext(AppContext);
  return (
    <div className="navbar">
      <p>AwesomeSite</p>
      <p>{username}</p>
    </div>
  );
}

上面代码中,useContext()钩子函数用来引入 Context 对象,从中获取username属性。

Message 组件的代码也类似。


const Messages = () => {
  const { username } = useContext(AppContext)

  return (
    <div className="messages">
      <h1>Messages</h1>
      <p>1 message for {username}</p>
      <p className="message">useContext is awesome!</p>
    </div>
  )
}

(点击查看运行结果

六、useReducer():action 钩子

React 本身不提供状态管理功能,通常需要使用外部库。这方面最常用的库是 Redux。

Redux 的核心概念是,组件发出 action 与状态管理器通信。状态管理器收到 action 以后,使用 Reducer 函数算出新的状态,Reducer 函数的形式是(state, action) => newState

useReducers()钩子用来引入 Reducer 功能。


const [state, dispatch] = useReducer(reducer, initialState);

上面是useReducer()的基本用法,它接受 Reducer 函数和状态的初始值作为参数,返回一个数组。数组的第一个成员是状态的当前值,第二个成员是发送 action 的dispatch函数。

下面是一个计数器的例子。用于计算状态的 Reducer 函数如下。


const myReducer = (state, action) => {
  switch(action.type)  {
    case('countUp'):
      return  {
        ...state,
        count: state.count + 1
      }
    default:
      return  state;
  }
}

组件代码如下。


function App() {
  const [state, dispatch] = useReducer(myReducer, { count:   0 });
  return  (
    <div className="App">
      <button onClick={() => dispatch({ type: 'countUp' })}>
        +1
      </button>
      <p>Count: {state.count}</p>
    </div>
  );
}

(点击查看运行结果

由于 Hooks 可以提供共享状态和 Reducer 函数,所以它在这些方面可以取代 Redux。但是,它没法提供中间件(middleware)和时间旅行(time travel),如果你需要这两个功能,还是要用 Redux。

七、useEffect():副作用钩子

useEffect()用来引入具有副作用的操作,最常见的就是向服务器请求数据。以前,放在componentDidMount里面的代码,现在可以放在useEffect()

useEffect()的用法如下。


useEffect(()  =>  {
  // Async Action
}, [dependencies])

上面用法中,useEffect()接受两个参数。第一个参数是一个函数,异步操作的代码放在里面。第二个参数是一个数组,用于给出 Effect 的依赖项,只要这个数组发生变化,useEffect()就会执行。第二个参数可以省略,这时每次组件渲染时,就会执行useEffect()

下面看一个例子。


const Person = ({ personId }) => {
  const [loading, setLoading] = useState(true);
  const [person, setPerson] = useState({});

  useEffect(() => {
    setLoading(true); 
    fetch(`https://swapi.co/api/people/${personId}/`)
      .then(response => response.json())
      .then(data => {
        setPerson(data);
        setLoading(false);
      });
  }, [personId])

  if (loading === true) {
    return <p>Loading ...</p>
  }

  return <div>
    <p>You're viewing: {person.name}</p>
    <p>Height: {person.height}</p>
    <p>Mass: {person.mass}</p>
  </div>
}

上面代码中,每当组件参数personId发生变化,useEffect()就会执行。组件第一次渲染时,useEffect()也会执行。

(点击查看运行结果

八、创建自己的 Hooks

上例的 Hooks 代码还可以封装起来,变成一个自定义的 Hook,便于共享。


const usePerson = (personId) => {
  const [loading, setLoading] = useState(true);
  const [person, setPerson] = useState({});
  useEffect(() => {
    setLoading(true);
    fetch(`https://swapi.co/api/people/${personId}/`)
      .then(response => response.json())
      .then(data => {
        setPerson(data);
        setLoading(false);
      });
  }, [personId]);  
  return [loading, person];
};

上面代码中,usePerson()就是一个自定义的 Hook。

Person 组件就改用这个新的钩子,引入封装的逻辑。


const Person = ({ personId }) => {
  const [loading, person] = usePerson(personId);

  if (loading === true) {
    return <p>Loading ...</p>;
  }

  return (
    <div>
      <p>You're viewing: {person.name}</p>
      <p>Height: {person.height}</p>
      <p>Mass: {person.mass}</p>
    </div>
  );
};

(点击查看运行结果

九、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年9月 1日

curl 的用法指南

$
0
0

简介

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。

本文介绍它的主要命令行参数,作为日常的参考,方便查阅。内容主要翻译自《curl cookbook》。为了节约篇幅,下面的例子不包括运行时的输出,初学者可以先看我以前写的《curl 初学者教程》

不带有任何参数时,curl 就是发出 GET 请求。


$ curl https://www.example.com

上面命令向www.example.com发出 GET 请求,服务器返回的内容会在命令行输出。

-A

-A参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version]


$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com

上面命令将User-Agent改成 Chrome 浏览器。


$ curl -A '' https://google.com

上面命令会移除User-Agent标头。

也可以通过-H参数直接指定标头,更改User-Agent


$ curl -H 'User-Agent: php/1.0' https://google.com

-b

-b参数用来向服务器发送 Cookie。


$ curl -b 'foo=bar' https://google.com

上面命令会生成一个标头Cookie: foo=bar,向服务器发送一个名为foo、值为bar的 Cookie。


$ curl -b 'foo1=bar' -b 'foo2=baz' https://google.com

上面命令发送两个 Cookie。


$ curl -b cookies.txt https://www.google.com

上面命令读取本地文件cookies.txt,里面是服务器设置的 Cookie(参见-c参数),将其发送到服务器。

-c

-c参数将服务器设置的 Cookie 写入一个文件。


$ curl -c cookies.txt https://www.google.com

上面命令将服务器的 HTTP 回应所设置 Cookie 写入文本文件cookies.txt

-d

-d参数用于发送 POST 请求的数据体。


$ curl -d'login=emma&password=123'-X POST https://google.com/login
# 或者
$ curl -d 'login=emma' -d 'password=123' -X POST  https://google.com/login

使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST

-d参数可以读取本地文本文件的数据,向服务器发送。


$ curl -d '@data.txt' https://google.com/login

上面命令读取data.txt文件的内容,作为数据体向服务器发送。

--data-urlencode

--data-urlencode参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。


$ curl --data-urlencode 'comment=hello world' https://google.com/login

上面代码中,发送的数据hello world之间有一个空格,需要进行 URL 编码。

-e

-e参数用来设置 HTTP 的标头Referer,表示请求的来源。


curl -e 'https://google.com?q=example' https://www.example.com

上面命令将Referer标头设为https://google.com?q=example

-H参数可以通过直接添加标头Referer,达到同样效果。


curl -H 'Referer: https://google.com?q=example' https://www.example.com

-F

-F参数用来向服务器上传二进制文件。


$ curl -F 'file=@photo.png' https://google.com/profile

上面命令会给 HTTP 请求加上标头Content-Type: multipart/form-data,然后将文件photo.png作为file字段上传。

-F参数可以指定 MIME 类型。


$ curl -F 'file=@photo.png;type=image/png' https://google.com/profile

上面命令指定 MIME 类型为image/png,否则 curl 会把 MIME 类型设为application/octet-stream

-F参数也可以指定文件名。


$ curl -F 'file=@photo.png;filename=me.png' https://google.com/profile

上面命令中,原始文件名为photo.png,但是服务器接收到的文件名为me.png

-G

-G参数用来构造 URL 的查询字符串。


$ curl -G -d 'q=kitties' -d 'count=20' https://google.com/search

上面命令会发出一个 GET 请求,实际请求的 URL 为https://google.com/search?q=kitties&count=20。如果省略--G,会发出一个 POST 请求。

如果数据需要 URL 编码,可以结合--data--urlencode参数。


$ curl -G --data-urlencode 'comment=hello world' https://www.example.com

-H

-H参数添加 HTTP 请求的标头。


$ curl -H 'Accept-Language: en-US' https://google.com

上面命令添加 HTTP 标头Accept-Language: en-US


$ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com

上面命令添加两个 HTTP 标头。


$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login

上面命令添加 HTTP 请求的标头是Content-Type: application/json,然后用-d参数发送 JSON 数据。

-i

-i参数打印出服务器回应的 HTTP 标头。


$ curl -i https://www.example.com

上面命令收到服务器回应后,先输出服务器回应的标头,然后空一行,再输出网页的源码。

-I

-I参数向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来。


$ curl -I https://www.example.com

上面命令输出服务器对 HEAD 请求的回应。

--head参数等同于-I


$ curl -head https://www.example.com

-k

-k参数指定跳过 SSL 检测。


$ curl -k https://www.example.com

上面命令不会检查服务器的 SSL 证书是否正确。

-L

-L参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。


$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet

--limit-rate

--limit-rate用来限制 HTTP 请求和回应的带宽,模拟慢网速的环境。


$ curl --limit-rate 200k https://google.com

上面命令将带宽限制在每秒 200K 字节。

-o

-o参数将服务器的回应保存成文件,等同于wget命令。


$ curl -o example.html https://www.example.com

上面命令将www.example.com保存成example.html

-O

-O参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名。


$ curl -O https://www.example.com/foo/bar.html

上面命令将服务器回应保存成文件,文件名为bar.html

-s

-s参数将不输出错误和进度信息。


$ curl -s https://www.example.com

上面命令一旦发生错误,不会显示错误信息。不发生错误的话,会正常显示运行结果。

如果想让 curl 不产生任何输出,可以使用下面的命令。


$ curl -s -o /dev/null https://google.com

-S

-S参数指定只输出错误信息,通常与-s一起使用。


$ curl -s -o /dev/null https://google.com

上面命令没有任何输出,除非发生错误。

-u

-u参数用来设置服务器认证的用户名和密码。


$ curl -u 'bob:12345' https://google.com/login

上面命令设置用户名为bob,密码为12345,然后将其转为 HTTP 标头Authorization: Basic Ym9iOjEyMzQ1

curl 能够识别 URL 里面的用户名和密码。


$ curl https://bob:12345@google.com/login

上面命令能够识别 URL 里面的用户名和密码,将其转为上个例子里面的 HTTP 标头。


$ curl -u 'bob' https://google.com/login

上面命令只设置了用户名,执行后,curl 会提示用户输入密码。

-v

-v参数输出通信的整个过程,用于调试。


$ curl -v https://www.example.com

--trace参数也可以用于调试,还会输出原始的二进制数据。


$ curl --trace - https://www.example.com

-x

-x参数指定 HTTP 请求的代理。


$ curl -x socks5://james:cats@myproxy.com:8080 https://www.example.com

上面命令指定 HTTP 请求通过myproxy.com:8080的 socks5 代理发出。

如果没有指定代理协议,默认为 HTTP。


$ curl -x james:cats@myproxy.com:8080 https://www.example.com

上面命令中,请求的代理使用 HTTP 协议。

-X

-X参数指定 HTTP 请求的方法。


$ curl -X POST https://www.example.com

上面命令对https://www.example.com发出 POST 请求。

参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年9月 5日

科技爱好者周刊:第 72 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。

封面照片:昆山火车站,2018

刊首语

最近,美国一家图书馆整理仓库时,发现一本旧书里面夹了一张珍贵的古代哲学家手稿。

这条新闻让我想到,这种事情不可能出现在当代人身上,因为当代人根本没有手稿。

以前,人们写一篇文章,甚至便条和收据,都可能保留下来。以后不会了,因为人们不在纸上写东西了。你的文字都是以数字格式存在,更不要提照片和影音了,都是二进制数据,大部分保存在数据库。

过了一两百年,这些字节会被后人发现吗?不会的。大多数时候,硬盘已经扔掉了。就算数据还在,那时会有人一条条查询吗?不太可能的。

别说那么久,十年前,你在网上写的东西,现在还能找到吗?

这意味着,每个人的信息,随着他的去世就消失了,甚至还没去世就消失了。即使后人想要了解你,可能也找不到资料(数字记忆)。有些墓地提供服务,允许你将自己的资料刻录成光盘或 U 盘,跟墓碑一起保存,也算是一种解决方案吧。

Web 全栈架构师课程

前端工程师的就业行情,一直非常好。但是,这个行业的技术更新太快,对工程师的压力很大。一方面要求你有扎实的基础知识,另一方面要求你不断更新知识。

开课吧联合 廖雪峰 倾力打造了一款适合前端工程师发展路线的 《web全栈架构师》 课程。这门课很合适以下的人群:

  • 从事 IT 开发相关岗位,缺少项目实操经验也没作品的前端小白;
  • 准备跳槽、面试,但对 web 的了解不深,构不成体系,急需补课的朋友;
  • 熟悉 HTML + CSS 等基础的前端语言,想往 WEB 前端高级工程岗位转行的朋友。

该课程有助于夯实基础,帮助你面试不慌,平时工作更有底气。课程注重实操:100+ 课程案例,300+配套测试题,6大实战项目,精确掌握每个知识点;更有BAT P6+级专家的就业指导,从入门到求职,手把手指导,明显提升跳槽成功的概率。

课程时间四个月,学员最终开发出基于 Vue 和 React 的工程级项目,作为结课标准。下面是学员的一些优秀作品。

扫描下方二维码两次,即可成功添加小助理。大家关心的开课时间、具体知识点、讲师资历、线下交流等信息都可以去咨询。现在报名有减 1000元 的优惠,前200名添加微信的读者还能领取2019独家前端面试资料一份。

资讯

1、矮种马上飞机

美国交通部通过法规,三种服务性动物可以带上客机,分别是猫、狗和矮种马。

矮种马的高度在85厘米以下,可以当作导盲马。它比导盲犬的优点是,狗只能活十几年,马可以活35~40年。

2、机器人飞行员

2019年8月9日,美国空军在犹他州试验场,测试了机器人飞行员。那是一个可以代替人,操作各种飞机开关的传动装置,用来为现有的飞机提供一个便宜的无人驾驶方案。

这个装置使用摄像头读取仪表盘,使用机械臂操作方向舵、制动器、油门和开关,就像人类飞行员一样。测试飞机是一架1968年生产的小型飞机,实验完全成功,飞机在空中飞行了两个小时。

3、特斯拉跑车绕太阳一周

2018年2月,SpaceX 公司发射了第一枚猎鹰重型火箭。这是一次试验飞行,需要发射一个"假装置",放在整流罩里面以展示其能力。CEO 马斯克就决定把一辆特斯拉跑车,放在火箭。为了逼真,驾驶座上还配了一个穿太空服的假人,命名为"Starman"。

这辆跑车就这样进入了太空,被太阳引力吸引,围绕太阳以每秒11.9公里的速度高速行驶。现在,已经完成围绕太阳运行一圈。这辆汽车创造了多个记录,比如第一辆进入太空的汽车、距离地球最遥远的汽车、行驶里程最多的汽车等等。

4、互联网法院

2019年8月17日,北京互联网法院成立一周年之际,展示了移动微法院、屏幕共享、智能审判应用、天平链等多项互联网技术的实际司法应用。

一位80多岁的老人在手机端立案成功,然后在线进行庭审,整个诉讼过程全部在手机上完成,可以不离开家就打完官司。

另一起案件中,原告不在国内,被告代理人在外出差,案件承办法官外出培训。法官与双方当事人约定晚上6时同时登录移动微法院,并顺利在手机端完成调解笔录的签字和调解书的送达。

5、北斗卫星多于 GPS

2018年,中国发射了18颗北斗导航卫星。目前,一共有35颗北斗卫星在运行,而美国的 GPS 卫星只有31颗,欧盟的伽利略系统22颗,俄罗斯的 GLONASS 系统24颗。另外,日本(4颗)和印度(6颗)的系统只限于本国可用。

全世界195个国家和地区中的130个(多是一带一路沿线国家),接收到的北斗卫星要多于 GPS 卫星。这使得在这些国家,使用北斗定位会信号更强,定位更快速。上图中,深蓝的区域是北斗占优,红色的区域是 GPS 占优。下图是主要国家的北斗和 GPS 的对比。

6、迪斯尼+ 视频服务

迪斯尼公司定于11月12日,推出自己的视频订阅服务,近日披露了该服务的用户界面。里面收录了它旗下电影和电视公司的节目,每月收费6.99美元。另外,还有一个每月的12.00美元的订阅包,可以额外收看 ESPN + Hulu 的节目。

目前,该服务已知支持以下客户端:iOS、Apple TV、Android、Xbox One、PlayStation 4 和 Roku 机顶盒。

7、克隆警犬

8月22日,中国首只克隆警犬"昆勋",在昆明编入现役。"昆勋"2018年12月在北京出生,是从另一只名为"化煌马"警犬的体细胞克隆而来。经鉴定,克隆犬"昆勋"的 DNA 与体细胞供体犬"化煌马"有99.9%以上的相似度。

8、一句话消息

  • Chrome 82 将不再支持 FTP,原因是该协议不加密,很不安全。

  • 美国国家海洋和大气管理局宣布,2019年7月是有史以来最热的一个月,全球平均气温16.7摄氏度(包含南半球),比20世纪的平均值高1.7度。此前的最高记录是2016年7月。

  • 美国学者比较了华为和思科。思科公司过去20年,花了1000亿美元回购自己的股票,而不是用来投资或并购。他认为这是思科发展不如华为的原因。

  • 日本庆应大学正在开发机器人尾巴,模仿了猎豹和猴子的尾巴,用于在跑步和攀爬时保持机器人或真人的平衡。

  • 巴西最大城市圣保罗2019年8月20日下午三点的情景。由于亚马逊雨林大火,整个城市烟雾笼罩,白昼彷佛黑夜。

文章

1、如何缩小 SVG 文件的大小(英文)

SVG 是文本文件,有很多冗余的标签。本文介绍怎么压缩它的体积。

2、钍发电(中文)

传统的核电站都使用铀和钚作为燃料,但是科学家提出可以改用钍。钍的蕴藏量较多、产生较少核废料、不易制成武器,而且钍裂变发电较有效率。

3、生产1千克材料需要多少能量(英文)

生产一公斤木材需要1度电左右,一公斤生铁6度电,一公斤电解铝70度电,一公斤芯片硅2000度电。

4、apt 与 apt-get 的区别(英文)

基于 Debian 的 Linux 发行版,一般都有aptapt-get两个命令行的包管理工具,本文介绍它们的差异。另外,这里还有一篇《apt-get 命令详解》也可以参考。

5、图片 CDN 简介(英文)

图片 CDN 是专用于图片文件的内容分布网络,有很多针对图片的优化。本文介绍它的基本知识,以及可用的方案。

6、计算机语言的保留字数量(英文)

一门语言的保留字数量,反映了语法的复杂度。有人统计了流行的计算机语言,发现保留字最少的是Elixir(15个),最多的是C#(77个)。出乎意料的是,Go的保留字少于C,JS少于Python,Python又少于 Ruby。

7、函数式编程的术语解释(英文)

函数式编程有许多独有的术语,本文给出简单的解释,以及 Rust 语言的示例。

8、Switch 游戏机安装安卓系统(英文)

任天堂公司的 Switch 游戏机,本质上是一个手机零件组成的游戏机,而且配置很低。CPU 是四核 Nvidia Tegra X1 ARM,4GB 内存,720p 触摸屏和 4310mAh 电池。本文介绍如何在它上面安装安卓系统。

9、如何自己写一个静态站点生成器(中文)

一直很想自己写一个静态博客,但总是觉得比较麻烦。直到看到 Writing a small static site generator ,才发现原来写一个静态博客竟如此简单。(@muxueqz 投稿)

10、美国数据科学家挣多少钱(英文)

薪资中位数为120,000美元。这个中位数只是基本工资,不包括现金奖励,股权和福利。(@nosarthur 投稿)

工具

1、milkman

一个类似 Postman 的 HTTP 请求/回应的调试工具,区别是它不是基于 Electron,而是基于 JavaFX。

2、TagUI-Python

一个 Python 的自动化模块,可以自己编写脚本,完成浏览器自动化、键盘自动化、鼠标自动化等操作。(@kensoh 投稿)

3、wewe

微信群聊同步到 Web 的开源工具。(@timqian 投稿)

4、Gogh

一个终端窗口颜色主题的安装工具,目前有170多种配色方案可选择,支持 Linux 和 Mac。

5、QSpace

一个国产软件,MacOS 系统的多视图文件管理器,支持很多特色功能。让你摆脱多窗口来回切换的繁琐,和拖拽时找不准目标的尴尬。(@vitacoding 投稿)

6、Pictool

一个较为轻巧的前端 JS 库,用来处理图像效果。(@chenshenhai 投稿)

7、bild

一个图像处理的命令行工具,Go 语言编写。可以通过命令行参数,调节亮度、饱和度、模糊、锐化等。

8、DSVPN

一个非常简单的 VPN 实现。

9、lefthook

Git 钩子管理器,可以用在各种项目之中。特点是功能强大,允许并行执行多个任务。

10、plyr

一个前端 HTML5 的视频/音频播放器,特点是简单易用,定制性好。

11、color

一个 JavaScript 的颜色操作库,可以使用各种方法对颜色进行操作。

12、Oh My RSS

一个中文 IT 网站的 RSS 聚合服务,代码开源。(@richshaw2015 投稿)

资源

1、Standard Ebooks

一个对版权过期的英文小说进行精心排版,提供电子书下载的网站。

2、Ruby on Rails Tutorial

Ruby on Rails 在线英文教程。

3、基于 JAMstack 的 Web 开发

Netlify 公司的免费电子书。

4、普通人的微积分教程

一个通俗微积分教程,带有大量可视化图形。

5、CS Rankings

该网站提供计算机科学各领域研究机构的排名,可以查看全球排名,也可以查看每个大洲的排名。上图是亚洲人工智能研究机构的排名。

图片

1、电子游戏的总收入

十年前开始,电子游戏的总收入已经超过电影业和音乐业的总和,现在更是远远不止。

想要加入电影业或音乐业的人,真的应该改方向,比如,写电视或电影的剧本,不如写游戏剧本。

2、第一个手机

1973年4月3日,摩托罗拉副总裁 John F. Mitchell 在纽约向新闻界展示该公司的最新产品:DynaTAC。这是世界上第一款手持无线手机。这个产品直到10年后,才会正式上市。它的特征就是像一块砖头。

文摘

1、为什么大多数野生动物没有被驯化?

以下摘自杰瑞德·戴蒙德(Jared Diamond)的《枪炮、病菌与钢铁》。

20世纪之前,只有14种哺乳动物被驯化。其中9种是区域性的(比如骆驼、印度野牛、牦牛),只有5种是全球性的,而且对人类很重要:牛、绵羊 、山羊、猪和马。

历史上,全世界一共有148种人类尝试过驯化的大型动物,为什么只有14种驯化成功?

无论是几千年前的牧人,还是现在的遗传学家,都一直未能成功使得那14种以外的大型哺乳动物,成为有用的驯化动物。这有以下六个原因。

(1)饮食。 要驯化成功,一个物种必须易于喂养。挑食的动物会使得饲养者变穷。不挑剔的杂食动物是最佳候选人。

(2)增长率。动物必须快速增长才能在经济上可行。例如,农民饲养大象,可能需要等待12年使大象成年。

(3)圈养繁殖。该物种必须在圈养中繁殖良好。具有交配仪式的物种无法在农场的环境中繁殖,这使得驯化的候选人变少。那些动物可能需要隐私环境,或者长期的交配追逐。

(4)性格。有些物种脾气暴躁,不适合驯化。农民每次接近这些动物,都有生命或受伤的风险。斑马特别值得注意,很多人想驯化它,但事实证明不可能驯服。

(5)恐慌倾向。物种会以不同的方式对危险作出反应。立即逃跑的物种是驯化的不良候选者。在危险面前呆住或混入种群的物种是一个很好的候选者。事实证明,北美的鹿几乎不可能驯化,也很难在圈养中繁殖。相比之下,马匹在十六世纪被引入北美后,马上就兴旺发达。

(6)社会结构。孤独、独立的动物是不良候选人。具有强大、明确的社会等级的物种更有可能被驯化。如果这个物种能服从人类,那就是最好的。不同群体也必须相互容忍。

2、一次难产事故

以下摘自《绝对笑喷之弃业医生日志》([英]亚当·凯 著,北京时代华文书局,2019)。

这个中译书名实在糟糕,其实这本书并不好笑,正确的译法应该是《让人不舒服的妇产科医生日记》。

妇产科晚班时,紧急警报响了----这次是肩难产。

孩子体型太大了,从卡在母亲会阴处的脖子就能看出,他的体型大概是普通小孩的4倍。负责接生的助产士很有经验,看到她着急的样子我也有点儿慌了,因为我知道她肯定已经尝试过一切方法了。还好病人非常配合,一直保持镇定,耐心配合着我们的所有要求。

我用导尿管抽空了膀胱,把病人双腿摆成麦克罗伯茨姿势,同时给她的耻骨弓施加压力。这跟我之前遇到的所有肩难产情况都不一样,无论怎么尝试,胎儿都一动不动。我让助产士主管去看看,此刻楼里还有没有产科主任没下班,在等待的同时又尝试了木螺钉旋转法,还是没用。我试着想抓住胎儿手腕后侧,依然不行。我让病人四肢着地趴在病床上,再试了一遍之前的所有方法。此时已经过去了5分钟,在肩难产的情况下,假如胎儿还想活命,就必须要紧急采取措施了。

当时我还有三招没使:一是胎头回纳法----把胎儿的头从后侧推回子宫内,随即进行紧急剖腹产。我从来没看人做过这个手术,但觉得自己能胜任。但我同时也很确认,等我们在手术室完成接生,孩子肯定早就死了。

第二个选择是故意折断胎儿锁骨,以便能把孩子接生出来。我也从没看人这样做过,也不知道具体该怎么操作----只知道这是项很难的手艺活儿,比我技术高超的医生都不一定能做好。

第三个选择是耻骨联合切开术,意思是要切断母亲的耻骨,让出口变大。再一次,我从没看人这样做过,但我觉得自己能做好,况且这是把孩子弄出来的最快方法了。我通过电话告知了主任情况和我将要采取的治疗措施,她询问了一遍我之前尝试过的方法,还核实了一下我是否了解这项手术该怎么操作,之后终于点头同意了。她正从家开车往医院赶,但我俩都知道,等她到了的时候,一切也都结束了,要么万事顺利,要么家破人亡。

当医生这么多年,我还从来没这么紧张过:我正准备切断病人的骨盆,但并不知道她的孩子是不是已经没救了。动刀之前我再最后试了一次,没想到之前各种乱七八糟的体位动作终于有了效果,孩子的手腕出来了,随即到来的是一个浑身瘫软的宝宝,助产士赶快抱给儿科医生处理了。我们焦急地等待着,不知道孩子还能不能发出第一声啼哭,这时候我突然想起曾经在课本里读到过关于肩难产的文章,作者当时写道,一次成功的肩难产接生,要求你"肌肉极其有力,而且能和魔鬼玩花招",现在我终于明白这是什么意思了。孩子哭了,哈利路亚。助产士眼泪都掉了下来,不过我们还得等一会儿才能知道孩子有没有臂丛神经伤。儿科医生偷偷对我耳语,说孩子的两只胳膊看起来都很正常。

接生过程中母亲遭受了三级撕裂,虽然情况不理想,但和整件事比起来已经算是微不足道的代价了。我让助产士把她推到手术室,这样我就能歇20分钟,填一下接生报告,再喝杯咖啡。这时候住院医生推门进来了----问我能不能快速到隔壁再帮他做一台接生。

言论

1、

2011年,旧金山创业公司的种子轮风投平均为50万美元;2018年,种子轮平均达到了210万美元。

-- Medium 文章

2、

大气中,氧气占20.95%,浓度为 209500 ppm。相比之下,二氧化碳浓度为 405 ppm。1990年以来,人类活动导致氧气浓度下降约0.005%,可以忽略不计,但是二氧化碳浓度上升了37ppm,即10%。

--《亚马逊提供20%的氧气吗?》

3、

学习编程很酷的一点是,你会同时获得两个专长。一个专长是计算机科学和编程,另一个是需要你来编程的那个专门领域。除非你是编译器作者,否则你总是会有自己的专门领域。

-- Rich Hickey,Clojure 语言的发明者

4、

我觉得程序员,尤其是年轻程序员,投入太多脑力在编程。他们去学习编程语言的各种奇怪特性,学习类型系统的古怪设定,学习巨型 JavaScript UI 库的各种细节,反而没有投入很多时间在他们要解决问题的专门领域。

-- 同上

5、

早期,开发者就是网页设计师。后来,信息越来越多,网页设计师就从开发者中分离出来,确保页面有良好的设计。

接着,出现了智能手机和触摸屏,交互变得复杂,交互设计师就出现了。

现在,我们进入了超越单个屏幕或流程的体验,又出现了用户体验设计师(UX Designer)。

这个行业已经将形式和功能完全分开。

-- 《糟糕的设计师是否躲在 UX 这个词后面?》

招聘信息

周刊讨论区的程序员招聘帖,有大量工作/实习岗位,欢迎查看。

如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 250 元。

1、秘猿科技

秘猿科技是区块链创业公司,为加密经济提供区块链基础设施和服务。以下职位的工作地点为杭州,也可以 remote。

  • 高级区块链工程师:需要熟悉 Rust 语言。
  • 高级后端工程师:熟悉分布式系统开发。
  • 首席安全官:5年以上安全从业经验。
  • 高级测试经理:从事区块链底层的自动化测试。

点击这里,查看详情。简历投递:zhouyun@cryptape.com

回顾

去年的本周:《周刊第 20 期

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年9月 6日

Cookie 的 SameSite 属性

$
0
0

Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。

一、CSRF 攻击是什么?

Cookie 往往用来存储用户的身份信息,恶意网站可以设法伪造带有正确 Cookie 的 HTTP 请求,这就是 CSRF 攻击。

举例来说,用户登陆了银行网站your-bank.com,银行服务器发来了一个 Cookie。


Set-Cookie:id=a3fWa;

用户后来又访问了恶意网站malicious.com,上面有一个表单。


<form action="your-bank.com/transfer" method="POST">
  ...
</form>

用户一旦被诱骗发送这个表单,银行网站就会收到带有正确 Cookie 的请求。为了防止这种攻击,表单一般都带有一个随机 token,告诉服务器这是真实请求。


<form action="your-bank.com/transfer" method="POST">
  <input type="hidden" name="token" value="dad3weg34">
  ...
</form>

这种第三方网站引导发出的 Cookie,就称为第三方 Cookie。它除了用于 CSRF 攻击,还可以用于用户追踪。

比如,Facebook 在第三方网站插入一张看不见的图片。


<img src="facebook.com" style="visibility:hidden;">

浏览器加载上面代码时,就会向 Facebook 发出带有 Cookie 的请求,从而 Facebook 就会知道你是谁,访问了什么网站。

二、SameSite 属性

Cookie 的SameSite属性用来限制第三方 Cookie,从而减少安全风险。

它可以设置三个值。

  • Strict
  • Lax
  • None

2.1 Strict

Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。


Set-Cookie: CookieName=CookieValue; SameSite=Strict;

这个规则过于严格,可能造成非常不好的用户体验。比如,当前网页有一个 GitHub 链接,用户点击跳转就不会带有 GitHub 的 Cookie,跳转过去总是未登陆状态。

2.2 Lax

Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。


Set-Cookie: CookieName=CookieValue; SameSite=Lax;

导航到目标网址的 GET 请求,只包括三种情况:链接,预加载请求,GET 表单。详见下表。

请求类型 示例 正常情况 Lax
链接 <a href="..."></a> 发送 Cookie 发送 Cookie
预加载 <link rel="prerender" href="..."/> 发送 Cookie 发送 Cookie
GET 表单 <form method="GET" action="..."> 发送 Cookie 发送 Cookie
POST 表单 <form method="POST" action="..."> 发送 Cookie 不发送
iframe <iframe src="..."></iframe> 发送 Cookie 不发送
AJAX $.get("...") 发送 Cookie 不发送
Image <img src="..."> 发送 Cookie 不发送

设置了StrictLax以后,基本就杜绝了 CSRF 攻击。当然,前提是用户浏览器支持 SameSite 属性。

2.3 None

Chrome 计划将Lax变为默认设置。这时,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。

下面的设置无效。


Set-Cookie: widget_session=abc123; SameSite=None

下面的设置有效。


Set-Cookie: widget_session=abc123; SameSite=None; Secure

三、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年9月 9日

GitHub Actions 入门教程

$
0
0

GitHub Actions 是 GitHub 的持续集成服务,于2018年10月推出

这些天,我一直在试用,觉得它非常强大,有创意,比 Travis CI 玩法更多。

本文是一个简单教程,演示如何使用 GitHub Actions 自动发布一个 React 应用到 GitHub Pages

一、GitHub Actions 是什么?

大家知道,持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。GitHub 把这些操作就称为 actions。

很多操作在不同项目里面是类似的,完全可以共享。GitHub 注意到了这一点,想出了一个很妙的点子,允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用。

如果你需要某个 action,不必自己写复杂的脚本,直接引用他人写好的 action 即可,整个持续集成过程,就变成了一个 actions 的组合。这就是 GitHub Actions 最特别的地方。

GitHub 做了一个官方市场,可以搜索到他人提交的 actions。另外,还有一个 awesome actions 的仓库,也可以找到不少 action。

上面说了,每个 action 就是一个独立脚本,因此可以做成代码仓库,使用userName/repoName的语法引用 action。比如,actions/setup-node就表示github.com/actions/setup-node这个仓库,它代表一个 action,作用是安装 Node.js。事实上,GitHub 官方的 actions 都放在 github.com/actions 里面。

既然 actions 是代码仓库,当然就有版本的概念,用户可以引用某个具体版本的 action。下面都是合法的 action 引用,用的就是 Git 的指针概念,详见官方文档


actions/setup-node@74bc508 # 指向一个 commit
actions/setup-node@v1.0    # 指向一个标签
actions/setup-node@master  # 指向一个分支

二、基本概念

GitHub Actions 有一些自己的术语。

(1)workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。

(2)job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。

(3)step(步骤):每个 job 由多个 step 构成,一步步完成。

(4)action (动作):每个 step 可以依次执行一个或多个命令(action)。

三、workflow 文件

GitHub Actions 的配置文件叫做 workflow 文件,存放在代码仓库的.github/workflows目录。

workflow 文件采用 YAML 格式,文件名可以任意取,但是后缀名统一为.yml,比如foo.yml。一个库可以有多个 workflow 文件。GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行该文件。

workflow 文件的配置字段非常多,详见官方文档。下面是一些基本字段。

(1)name

name字段是 workflow 的名称。如果省略该字段,默认为当前 workflow 的文件名。


name: GitHub Actions Demo

(2)on

on字段指定触发 workflow 的条件,通常是某些事件。


on: push

上面代码指定,push事件触发 workflow。

on字段也可以是事件的数组。


on: [push, pull_request]

上面代码指定,push事件或pull_request事件都可以触发 workflow。

完整的事件列表,请查看官方文档。除了代码库事件,GitHub Actions 也支持外部事件触发,或者定时运行。

(3)on.<push|pull_request>.<tags|branches>

指定触发事件时,可以限定分支或标签。


on:
  push:
    branches:    
      - master

上面代码指定,只有master分支发生push事件时,才会触发 workflow。

(4)jobs.<job_id>.name

workflow 文件的主体是jobs字段,表示要执行的一项或多项任务。

jobs字段里面,需要写出每一项任务的job_id,具体名称自定义。job_id里面的name字段是任务的说明。


jobs:
  my_first_job:
    name: My first job
  my_second_job:
    name: My second job

上面代码的jobs字段包含两项任务,job_id分别是my_first_jobmy_second_job

(5)jobs.<job_id>.needs

needs字段指定当前任务的依赖关系,即运行顺序。


jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]

上面代码中,job1必须先于job2完成,而job3等待job1job2的完成才能运行。因此,这个 workflow 的运行顺序依次为:job1job2job3

(6)jobs.<job_id>.runs-on

runs-on字段指定运行所需要的虚拟机环境。它是必填字段。目前可用的虚拟机如下。

  • ubuntu-latestubuntu-18.04ubuntu-16.04
  • windows-latestwindows-2019windows-2016
  • macOS-latestmacOS-10.14

下面代码指定虚拟机环境为ubuntu-18.04


runs-on: ubuntu-18.04

(7)jobs.<job_id>.steps

steps字段指定每个 Job 的运行步骤,可以包含一个或多个步骤。每个步骤都可以指定以下三个字段。

  • jobs.<job_id>.steps.name:步骤名称。
  • jobs.<job_id>.steps.run:该步骤运行的命令或者 action。
  • jobs.<job_id>.steps.env:该步骤所需的环境变量。

下面是一个完整的 workflow 文件的范例。


name: Greeting from Mona
on: push

jobs:
  my-job:
    name: My Job
    runs-on: ubuntu-latest
    steps:
    - name: Print a greeting
      env:
        MY_VAR: Hi there! My name is
        FIRST_NAME: Mona
        MIDDLE_NAME: The
        LAST_NAME: Octocat
      run: |
        echo $MY_VAR $FIRST_NAME $MIDDLE_NAME $LAST_NAME.

上面代码中,steps字段只包括一个步骤。该步骤先注入四个环境变量,然后执行一条 Bash 命令。

四、实例:React 项目发布到 GitHub Pages

下面是一个实例,通过 GitHub Actions 构建一个 React 项目,并发布到 GitHub Pages。最终代码都在这个仓库里面,发布后的参考网址为ruanyf.github.io/github-actions-demo

第一步,GitHub Actions 目前还处在测试阶段,需要到这个网址申请测试资格。申请以后,可能需要几天才能通过。据说,2019年11月就会放开。

获得资格后,仓库顶部的菜单会出现Actions一项。

第二步,这个示例需要将构建成果发到 GitHub 仓库,因此需要 GitHub 密钥。按照官方文档,生成一个密钥。然后,将这个密钥储存到当前仓库的Settings/Secrets里面。

上图是储存秘密的环境变量的地方。环境变量的名字可以随便起,这里用的是ACCESS_TOKEN。如果你不用这个名字,后面脚本里的变量名也要跟着改。

第三步,本地计算机使用create-react-app,生成一个标准的 React 应用。


$ npx create-react-app github-actions-demo
$ cd github-actions-demo

第四步,在这个仓库的.github/workflows目录,生成一个 workflow 文件,名字可以随便取,这个示例是ci.yml

我们选用一个别人已经写好的 action:JamesIves/github-pages-deploy-action,它提供了 workflow 的范例文件,直接拷贝过来就行了(查看源码)。


name: GitHub Actions Build and Deploy Demo
on:
  push:
    branches:
      - master
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@master

    - name: Build and Deploy
      uses: JamesIves/github-pages-deploy-action@master
      env:
        ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
        BRANCH: gh-pages
        FOLDER: build
        BUILD_SCRIPT: npm install && npm run build

上面这个 workflow 文件的要点如下。

  1. 整个流程在master分支发生push事件时触发。
  2. 只有一个job,运行在虚拟机环境ubuntu-latest
  3. 第一步是获取源码,使用的 action 是actions/checkout
  4. 第二步是构建和部署,使用的 action 是JamesIves/github-pages-deploy-action
  5. 第二步需要四个环境变量,分别为 GitHub 密钥、发布分支、构建成果所在目录、构建脚本。其中,只有 GitHub 密钥是秘密变量,需要写在双括号里面,其他三个都可以直接写在文件里。

第五步,保存上面的文件后,将整个仓库推送到 GitHub。

GitHub 发现了 workflow 文件以后,就会自动运行。你可以在网站上实时查看运行日志,日志默认保存30天。

等到 workflow 运行结束,访问 GitHub Page,会看到构建成果已经发上网了。

以后,每次修改后推送源码,GitHub Actions 都会自动运行,将构建产物发布到网页。

五、参考链接

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年9月12日

科技爱好者周刊:第 73 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。

封面图:上海,2019。

刊首语

很多人家里买了跑步机,练了一阵子,就渐渐不用了,放在角落积灰。我家就是这样。

跑步 App 诞生的时候,也面临这个问题。如何让三分钟热度的用户坚持下来,不要放弃?

它想了很多办法, 我认为最有用的一招,就是数据记录。 昨天跑了几公里,今天跑了几公里,每天都记录下来。你可以看到自己的进步,产生一种不断挑战自己、超越自己的愿望。

为了强化这种愿望,App 还推出连续打卡获得勋章的活动,并且建立跑步圈,看看朋友里面谁领先、谁落后。有了这样的措施,很多人就真的坚持下来了,跑步从健身活动,变成带有心灵修炼和社交活动的色彩。

这就是数据的威力,仅仅把数据记录下来,哪怕是最简单的连续编号,就很可能改变一个人的行为。我听过有人说:"我曾经希望连续跑100天,哪知道最后竟然坚持了800天。"

类似的例子是,GitHub 个人页有一个日历栏目,只要当天有代码提交,那一天的小方格就会变成绿色。如果这一年,你每天编码,日历就全是绿的,否则就会有白色的小方块。所有人都可以看到这个"编码日历"。

很多人为了让绿色小方格子不要中断,就会尽量每天提交代码。时间一长,真的多做了不少项目。

这件事的启示就是,不管做什么事,都应该进行数据记录和数据分析。对个人来说,可以从一个业余爱好者变成专业人士;对产品来说,可以从一个普通产品变成数据产品。

资讯

1、冰川的墓碑

8月18日,冰岛为该国第一座消失的冰川,举行了葬礼。冰岛总理亲自出席。Okjokull 火山顶曾经被冰川覆盖,足足有16平方公里。但在2014年冰川已经接近完全消失(上图)。卫星照片可以清楚看到1986年大片白色的冰雪,到了今年只剩下火山口附近一小片(下图)。

200多个活动参与者在火山顶立下了一块墓碑。碑文警告,若是放任气候变迁继续恶化下去,未来两百年,这个岛国的四百座冰川,都将步上同样的后尘。

2、太空犯罪

安妮·麦克莱恩(Anne Charlotte McClain)是美国宇航员,2018年12月3日进入国际空间站,2019年6月24日返回地球。在这期间,她在空间站上偷偷访问已经分手的配偶的银行账户。

现在,配偶对她的这个行为提起诉讼,起诉她侵犯他人财产。这是有史以来第一起因为发生在太空的行为,而导致的法律诉讼。(@starshipsea 投稿)

3、猴子税

美国生物医学界很担心美国对中国商品提高关税,因为美国所有进口的非人类灵长类动物(主要是猴子),约有80%来自中国。这些猴子用来试验各种治疗艾滋病、埃博拉和帕金森病等的药物。

根据美国国立卫生研究院,实验室猴子的需求持续上升,但是科研经费并没有上升,如果由于关税使得猴子的成本增加5%至25%,一些研究人员将被迫缩减项目规模,或者索性把研究转移到中国。据说在中国,灵长类动物的实验只要1,500美元,而在美国需要6,000美元。

4、浮动的核电站

俄罗斯启用了世界第一个浮动核电站,那是一艘带有两座核反应堆的浮动平台,长144米,宽30米。它没有发动机,需要靠拖船拉动。它将驶往西伯利亚城市 Pewek。

反对者认为这是一项危险的技术,对北极环境带来巨大的危险。当地已有一座建立在永久冻土层上的核电站,现在已经陈旧不堪,而且由于气候变化,本来坚固的永久冻土层的地基开始融化,所以计划很快就会关闭,使用浮动核电站取代。

5、无人船横渡大西洋

英国一家创业公司建造的无人船 Maxlimer,长11米,正在准备横渡大西洋。由于这船不载人,所以可以多放很多货物。在港口拥挤的水域,它由人类通过无线电远程操作;在大洋上,则它自动跟随 GPS 信号航行。

该船于2017年发布,此前曾经内部测试了很长时间。发布后,已经成功在英国和比利时之间运输货物。接下来,将在英国与挪威之间航行,然后预定在2020年上半年横渡大西洋。如果这种船只成功,将会改变世界航运市场。

6、Facebook 推出约会功能

Facebook 正式推出约会功能。开启这个功能的人,会有一个单独的约会主页,展示自己的照片和视频。其他人浏览这个主页,如果愿意与对方约会,可以按赞。最后,你在所有按赞的人里面,选出约会对象。

有意思的地方是,Facebook 会智能选出哪些人可以看到你的约会主页,其中包括陌生人,也包括你的好友。

7、世界最古老的在线摄像头

位于旧金山的 FogCam,是目前最古老的网络直播摄影头,从1994年开始上线,至今已经直播了25个年头。它于8月30日正式关闭。

这个摄影头放置在旧金山州立大学,当时两个学生搭建了网站,摄像头自动每隔一分钟拍摄一张照片,上传到网站上。之所以称为「FogCam」,是因为旧金山的风景以雾闻名。

他们表示关闭摄像头,主要是因为学校里再也找不到地方放置摄像头了。另外,根据维基百科记载,FogCam 网站也是成立最久,而且一直到现在还在运行的网站之一。

8、零售业百强

2018年度中国零售百强名单发布,前四名全部是电商。七家企业销售规模过千亿元,依次为天猫、京东、拼多多、苏宁易购、大商集团、国美电器、华润万家。

2018年,阿里巴巴实现了900多亿元净利润,一家顶百家,其净利润比所有非电商类零售上市公司所实现的净利润总额还高出四成多。

9、一句话消息

  • 一家美国半导体公司推出有史以来最大的半导体芯片,包含1.2万亿个晶体管。相比之下,1971年的4004处理器只有2300个晶体管,最新的 AMD 家用处理器则有320亿个晶体管。

  • 推特关闭了短消息发推的功能,因为 CEO 杰克·多尔西的账户就是这样被黑的。有人冒名注册了他的 SIM 卡,然后通过短消息在他的账户上发推。

  • Firefox 宣布试点,只要使用它家的浏览器,美国境内所有流量默认都走 HTTPS 代理,防止暴露用户信息。

  • 9月5日,发生了一笔10亿美元的比特币交易。这就是比特币的一个特点,所有人都可以看见这笔交易,但是不知道是谁交易。整笔交易的手续费是600美元,这个费用是传统银行不可想象的。

  • 印度月球车首次登陆月球,结果距离月球表面2公里时失去联系,控制中心都傻了,就这样全国直播出去了。今年4月份,以色列月球车登陆也失败,看来这件事很不容易。

  • 丹麦启用世界最大的电动渡轮,可以搭载30辆车和200名乘客,采用一个巨型电池系统供电。

  • 苹果发布 Apple Music 的 Web 版了,成为会员后可以收听数百万首歌曲,跟 Spotify 竞争。看来 iTunes 是真的要废掉了。

文章

1、中国贫穷地区的发展(中文)

Quora 上有人再次针对中国提出尖锐问题:如果中国有那么多钱投资其他国家,为什么不用这些钱发展本国的贫困地区呢?有一个答案内容详实,获赞最高,让围观小伙伴们赞不绝口。

2、历史上哪两件事听起来不在同一个年代,实际上却同时发生的?(中文)

知乎的一个帖子。按赞最多的回答是:"爱因斯坦发表相对论的那一年,中国废除科举。"

3、如何开始机器学习?(英文)

初学者应该怎么学习机器学习?这篇短文概述了需要掌握的几个方面,以及可用的学习资料。

4、TypeScript 与 React 一起使用(英文)

本文是写给初学者的 TypeScript 介绍,以及它如何与 React 一起使用。

5、如何使用 Firefox 的免费代理?(中文)

Firefox 推出了浏览器全局的默认代理,本文介绍如何安装试用。(@erossszh 投稿)

6、如何安全运行他人的 JavaScript 代码?(英文)

Figma 是一个网页应用程序,有很多第三方开发者写的插件。如何才能在网页安全运行第三方代码,这是 Figma 团队面临的重大问题。本文记录了他们的探索过程,最后使用的是新提出的 Realm API。

8、黄金分割的数据可视化(中文)

本文通过可视化图形解释,为什么植物花盘都符合黄金分割。黄金分割这个无理数的比率,在图形上到底是什么含义。(@jwenjian 投稿)

9、各种编程语言的 0.3

我们知道,浮点数计算是不精确的,0.1 + 0.2 不精确等于 0.3。这个网站列出了各种编程语言的 0.1 + 0.2 的结果。(@NeoTse 投稿)

10、Chrome 浏览器的工作原理(英文)

谷歌官方的系列文章,一共有四篇。采用多幅图片,一层层从计算机底层一直到浏览器渲染引擎,介绍 Chrome 浏览器渲染网页的工作原理。(@NeoTse 投稿)

工具

1、formik

React 的表单组件,目标是提供一个最小的 API,方便用户扩展。

2、Detoxify.app

一个很有意思的应用,帮助用户戒掉某个 App。手机访问它的网站,可以为任意 App 生成一个假的图标。每次在桌面点击假图标,就会跳到一个内置的网页,提示你放弃使用。

3、蚂蚁搬家工具

小程序跨平台开发工具。一键实现微信小程序项目到支付宝小程序的迁徙,不再为重复开发而烦恼。(@xiaofuzi 投稿)

4、Research

一个中文搜索的聚合网站,显示同一个关键字在不同网站的搜索结果。(@ifrontend-xyz 投稿)

5、oktools

该网站收集了程序员需要的10多个在线小工具,包含JSON 格式化、Base64 编解码、颜色值转换、图片压缩、正则测试、时间戳转换、HASH 计算等。(@wangyiwy 投稿)

6、Tone.js

一个使用 Web Audio API 在浏览器创建交互式音乐的框架。(@zhang14725804 投稿)

7、Web 通知请求阻止器

很多网站都会跳出一个对话框,要求允许它们发送 Web 通知,非常讨厌。这个 Chrome 浏览器插件可以彻底关闭这个功能。

8、npmview

该网站让你查看 npm 模块里面包含了什么文件。

9、CS50 IDE

一个在线 IDE,背后是基于云的 Ubuntu 环境,支持代码高亮和单词自动完成,以及代码调试。

10、在线哈希计算器

用户输入一个字符串,在线显示各种哈希算法的运算结果。(@DoctorLai 投稿)

11、logForShell

Bash 的日志工具,出错时打印调用堆栈,方便快速定位问题和源文件。(@7ippo 投稿)

12、996.Blockchain

一个区块链项目,专门用于保存加班记录,用户可以把自己的加班记录存到区块链。(@996BC 投稿)

资源

1、让产品经理全面理解深度学习(PDF)

65 页的中文电子书,汇总了深度学习相关的重要知识点,通过长图和 PDF 的方式呈现给大家。(@easyaitech 投稿)

2、Golangbot 的 Go 语言初级教程(中译)

Golangbot 是国外开发者写的 Go 的初级教程,对小白和基础比较薄弱的开发者比较适用。作者没有讲很高深的理论,而是用很多简单的例子和代码进行讲解。(@hznuksco 投稿)

3、世界火力发电厂地图

这个网站通过网友提交数据,生成全世界火力发电厂的在线地图。

4、HelloDjango - Django 博客教程

Django 框架的中文入门教程,免费带你学 django 全栈。(@521xueweihan 投稿)

5、Linux Journey

Linux 系统的免费教程网站,针对初学者。(@zhjp0 投稿)

6、技术面试手册(英文)

开源电子书,帮你准备下一次的技术面试。

图片

1、黑白照片的彩色网格线

第一眼你会觉得,上面的图片是彩色照片,其实它是黑白照片,加上了彩色的网格线。彩色网格线会欺骗大脑,因为对人类的视觉来说,亮度比色度更重要。

2、酋长岩

酋长岩(El Capitan)是美国约塞米蒂国家公园的一块巨型岩石,高达914米,近乎完全垂直。它是全世界攀岩爱好者的一个流行的目标。

最近国内上映的2018年奥斯卡最佳纪录片《Free solo》,就是拍摄 Alex Honnold 在2017年6月3日的一次完全没有保护的徒手攀岩,他用了3小时56分钟到达顶峰。

正常情况下,攀岩爱好者需要4到5天才能爬上顶峰。下面照片上东一点西一点的亮光,就是一个个攀岩者在峭壁上过夜,他们睡在岩钉固定的吊床上。

文摘

1、Youtube 推荐算法的问题

五年前,我上传了第一个 Youtube 视频。此后,我一直在发布内容。我觉得,自己的内容很有趣,肯定很受欢迎。

但是,没人看我的视频!每个视频平均只有20次观看。Youtube 从来不把它们推荐给任何人,因为我是一个小频道。也许有些视频质量不高,但我确实发布了一些自己感到自豪的作品。

后来,我开始使用抖音 TikTok。出于无聊,我选了一首歌,拍了一段模仿视频,有50次观看。我逐渐又发布了一些视频,合计得到了4万个喜欢和1200个关注者,视频总观看次数是15万。注意,我的第一个视频是在今年2月份拍的,6月份才拍了第二个。

YouTube 不鼓励小创作者、非知名人士和没钱做广告的人,而抖音让任何有才华的人都变得至少相对受欢迎。

抖音的算法是,你发布视频时,抖音会将其显示给一定数量的人。如果有足够的人看到它并按下"喜欢",抖音就会让更多的人看到这个视频,这个过程不断重复,直到应用程序里面的每个人都看到它。这很简单,直接,透明。

YouTube 的算法是什么,根本没人知道。我觉得很好笑,一个中国公司的算法更加透明。YouTube 不了解它的使用者,它是一个垄断公司,已经停滞不前。我的遭遇是众多类似故事中的一个。

2、饿死的狮子王

我们参观南非的克鲁格国家公园(Kruger National Park),看到一只巨大的雄狮蹲在河岸边。

他瘦得皮包骨头,几乎站不起来。

他慢慢地离开河边,摇摇晃晃地好像喝醉了一样。每走几步,他就会停下来喘口气,低着头,直到他有足够的力量再走几步。走到一半的时候,他突然倒在路上。很明显,他已经在生命的最后阶段了。

一只大象靠近他,他努力站起来,试图逃跑。

当天晚些时候,我们发现他躺在草地上,筋疲力尽无法动弹。我离他不到五英尺,看着他的眼睛。我只是想让他知道,他不会独自死去。

他的胸部一上一下,不停地抽搐,一个小时之后,他死了。

多年来,作为一名摄影记者,我拍摄过失去一切的人、受伤的人、正在死去的人,但从来没有拍过像这只雄伟的动物那样悲伤的东西。他是真正的野兽之王,但是老了以后,可怜地饿死了。

后来我们才知道,这只高贵狮子的名字是Skybed Scar,他在克鲁格国家公园以其漫游和统治多年而闻名。他自由地生活,自由地死去。

言论和数字

1、

青木原(Aokigahara forest)的日语意思是树木之海。1993年出版的 Waturu Tsurumi 的《自杀完全手册》宣布它是日本最佳的死亡地点。因为它的树木长得很紧密,所以它们阻挡了风,而且由于动物和鸟类很少,森林异常安静。树木之海面积很大,十四平方英里,所以尸体可以被掩盖几个月未被发现。

-- 《一个僧人遭遇日本的自杀文化

2、

写书为时已晚,创业为时已晚,学习新语言为时已晚,这称为时间焦虑。

-- 《时间焦虑》

3、

有史以来第一次,我觉得观看 Apple 产品发布会是浪费时间。

-- HN 读者 评论 iPhone 11 发布会

4、

今天美国大城市的平均单程通勤时间约为26分钟。

--《历史上的城市通勤》

5、

海洛因和月薪同样危险。吸食海洛因会上瘾,每月领薪水也会上瘾。

-- Nassim Nicholas Taleb,《黑天鹅》的作者

招聘信息

周刊讨论区的《谁在招人?》,有大量工作/实习岗位,欢迎查看。

如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 300 元。

1、全栈高级工程师/技术主管

杭州初创公司正在组建初创团队,开发面向年轻人的社交类产品。工作地点:杭州滨江区。

应聘者主导公司产品研发迭代,有独立开发前后端的能力。必备技术栈关键字: Vue/React, Node, NoSQL, DevOps, 微信开发。详细要求见这里。简历投递 haodong@hanhan.tech

2、秘猿科技

秘猿科技是区块链创业公司,为加密经济提供区块链基础设施和服务。工作地点:杭州或 remote。

本公司招聘区块链工程师、高级后端工程师、安全和测试工程师。点击这里,查看详情。简历投递:zhouyun@cryptape.com

回顾

去年的本周:《周刊第 21 期

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年9月13日

科技爱好者周刊:第 74 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。

封面图:篮球世界杯,上海东方体育中心,2019

刊首语

大家有没有感觉,互联网上免费的东西越来越少了。

打开很多网站或 App,都要求你付费:听歌要钱,视频要钱,下载要钱,读一篇文章也要钱。这当然无可厚非,但是我总觉得,纯粹的信息收费不是一个好的商业模式,除非有增值服务。 这有两个原因。

第一个原因是,信息与实体商品不同。实体商品具有排他性,我吃了这只苹果,别人就吃不到,但是信息可以无数次消费。

而且,信息有一个奇怪的特征:消费的人越多,它的价值越高。一篇文章只有二三十人看,很快就会被忘记;但有一百万人看,就是全国的热点。 收费会阻止信息的这种零成本的自我增值。

第二个原因是,信息收费很难扩展。80%的用户都是看一眼就走了, 收费会阻止这些轻度使用的用户。 比如,《纽约时报》网站是收费的,但是我一个月就看几篇文章,不太可能为这几篇文章成为付费用户。信息收费的前提是,用户会深入地、长期地使用这个服务,这种深度用户很难找,因此收费很难扩展。

所以,我认为, 信息的商业模式,不应该是收费,而是应该鼓励更多的人消费它。 越多人消费,信息的价值越高,这时就可以开发增值服务,从服务赚钱。

开源软件就是很好的例子。Linux 原来是一个大学生的作品,可以免费用,结果成了行业标准。基于 Linux 的 Red Hat 公司,所有产品都是开源的,只对服务收费,最终被 IBM 以 340亿美元的价格收购。

就像上图的那句话:"Open is smart. Smart is open" 。我们不要做 closed 的产品,而要做 open 的产品。Open 一定会带来更大的价值。

60天攻克数据结构与算法

算法和数据结构是编程的内功,对于编程能力的提高和职场道路的进阶至关重要,能让学习编程语言和框架事半功倍。而且,它们也是互联网公司面试的必考知识点。

很多人自学算法,往往不成体系、不得要领,缺乏结果反馈,难以评估效果;刷题缓慢,难以坚持;做过的题目总是忘记,面对面试题不知从何入手。

极客时间与前 Facebook 工程师覃超联合推出了"算法训练营" ,用 60 天高强度训练营,带你攻克数据结构与算法,目前已经开设第 4 期。

课程采用视频、直播方式教学,结合线下社交讨论,并由班主任和教研组倾力提供全方位线上学习服务,包括助教答疑、作业、期中总结、考试、毕业等环节。

内容从低到高,由浅入深,从链表数组讲到动态规划、并查集、字典树、红黑树和 AVL 树、位运算、布隆过滤器和 LRU Cache,适合不同基础的软件工程师精进算法能力、构建知识体系。下面是详细的课程大纲:

  • 预习周:数据结构和算法总览
  • 第一周:数组与链表、栈与队列
  • 第二周:哈希表、映射、集合
  • 第二周:树、二叉数和图
  • 第三周:递归、分治和回溯
  • 第四周:深度、广度优先搜索与剪枝
  • 第四周:贪心算法与二分查找
  • 第五周:动态规划
  • 第六周:并查集、字典树、红黑树和 AVL 树
  • 第七周:位运算、布隆过滤器和 LRU Cache
  • 第七周:排序、字符串操作串讲
  • 毕业周:整体知识总结

原价 ¥2499,优惠价 ¥1499,使用口令:RUANYFENG,还可以再省100元。微信扫描下方二维码,可以查看训练营详情并报名。

资讯

1、北极河流干涸

今年夏天,北极异常的高温,导致俄罗斯西伯利亚北极圈内的主要河流 Lena 河,水位下降了2.5米,近乎干涸。船只已经无法通航,导致了严重的问题,因为河流沿线有一些居民点,不通公路,都靠水运补给。

2、最快的四轮车女性

Jessica Combs 是美国女子职业赛车手。8月27日,她在美国俄勒冈州的沙漠企图挑战世界最快的四轮车速度纪录时,驾驶的赛车不幸撞毁,她因此身亡,享年39岁。

2013年,她创下女子四轮车速度记录,平均速度632公里/小时,最高速度为709公里/小时。2016年,她将最高速度提升到768.61公里/小时。她驾驶的都是叫做"北美之鹰"的喷气引擎汽车,这次撞毁的也是这辆车。

3、最黑的黑色汽车

宝马发布了 Vantablack 版本的 X6 轿车。Vantablack 是世界最黑的黑色颜料,可以吸收99%以上的光线。这使得宝马 VBX6 是目前世界上最黑的黑色汽车,几乎完全消除了所有反光。理论上,如果一个物体不反射任何光线,本身又不发光,那么视觉上就是一个黑洞。

4、竹子学校十周年

印尼巴厘岛的绿色学校庆祝十周年,该学校完全用竹子建造,具有国际知名度。竹子通常用于廉价的棚屋、摊位、围栏、脚手架等,极易受到火灾的影响,而且因为含有水和淀粉,会被昆虫和真菌吞噬。建筑师对竹子做了特殊处理,才使之可以用于持久性的大型建筑。

研究人员正在开发由竹纤维和树脂制成的防火耐用竹板,将竹子建筑进一步推广。

5、USA-224 侦察卫星

8月29日,伊朗的萨菲尔火箭发生事故,发射失败。第二天,美国总统特朗普发了一条推文,附上一张高清卫星照片(上图),声称火箭事故与美国无关。

天文学家根据照片上面阴影的方向和大小,推算出拍照的时间。这个时间经过伊朗上空的美国侦察卫星只有 USA-224 一颗,因此这张照片极可能是这颗卫星拍的。该卫星专门拍摄地面的高清照片,是美国的军事项目,高度保密。特朗普发的照片,是该卫星流出的第一张照片,他是不应该发这张军用级别的照片的。

6、自愈水泥

传统的混凝土出现裂缝是一种普遍现象。荷兰一所大学的微生物学教授发明了一种添加细菌的生物混凝土。这种细菌会产生乳酸钙,进而形成石灰石,导致混凝土的裂缝自然愈合。

这种细菌平时处于休眠状态,只有出现裂缝时,外部的空气和水分才能唤醒。该技术目前能够愈合任何长度的裂缝,但是最大宽度不能超过0.8毫米,而且成本是普通混凝土的两倍。

下图是该种混凝土刚刚破裂的情景。

下图是28天后。

下图是56天后。

7、沙特石油袭击

9月14日,沙特的一处石油设施遭到袭击。现场照片公布以后,可以看到完全是精确袭击,不攻击人,只攻击设施,17枚炸弹都不偏不倚命中目标,见上图的红框处。目前还不知道这是怎么发动的,这么精确的袭击最大的可能就是无人机。

8、一句话消息

  • 《自然》杂志发表文章称,目前河沙采掘速度,已经超过了自然恢复的速度,将对生态造成不可恢复的伤害。建筑业需要大量沙子,但是沙漠的沙和海沙太细,只有河沙才能用,全世界每年大约会使用320亿吨至500亿吨河沙,主要用来制造水泥和玻璃,都要从河流中挖掘。

  • 加州通过法律,规定在 uber 接活的司机是雇员,而不是合同工,因此可以享受最低工资和加班费。uber 公司已经提起上诉。

  • 印度宣布,10月2日起在全国禁止六种一次性塑料制品:塑料袋、杯子、盘子、小瓶子、吸管和小塑料包。

  • 美国一家创业公司提出,全球每天有2460亿封电子邮件,消耗的能量相当于排放98.6万吨碳。其中很多邮件都是不必要的,因此提倡及时退订你不需要的邮件列表。

  • 美国 5G 网络的峰值下载速度,经测试只比 4G 网络的峰值高三倍,这还是在信号最好的情况下。5G 带来的提升,并没有宣传的那么好。

  • Buzzfeed 试验新的用户界面,用户进入主页以后,在六种心情里面选一个:"好奇,压力,无聊,怀旧,快乐,饥饿",然后网站根据你的心情,向你展示内容。

  • 美国阿肯色州的钻石州立公园,上个世纪曾经发现过很多钻石,后来开辟成公园。最近,一位游客在阴凉处观看如何寻找钻石的 YouTube 视频,结果一低头发现沙子中有一颗巨大的3.72克拉钻石。

文章

1、安卓的三层结构和鸿蒙 OS(英文)

安卓实际是一个三层结构:Linux 内核、安卓中间层和谷歌服务框架。华为的鸿蒙 OS 比较可行的选择是,依然使用底下两层,只取代谷歌服务框架的部分。

2、生物识别安全平台的数据泄露(英文)

一个安全团队披露,他们破解了一个广泛使用的用户数据库,获得了100多万条指纹和面部识别信息。他们认为,生物特征作为密码是不安全的,一旦数据泄露,用户不可能更改指纹和面部特征。

3、使用 Backblaze B2 和 Cloudflare Workers 搭建免费图床(英文)

开发者通常都有图片托管的需求,本文介绍一个免费的搭建个人图床的方案。

4、motd 功能解释(英文)

类 Unix 系统的/etc/motd服务,可以对所有用户显示登陆时的通知信息。本文介绍怎么使用这个服务。

5、抗癌史上的华人传奇(中文)

世界上第一个使用化疗治疗癌症的医生,是中国人李敏求。

6、静态博客的技术方案(英文)

这是 Hacker News 的讨论帖,讨论当前自己搭建博客的最佳技术方案。

7、ncdu 命令的用法(英文)

du命令是类 Unix 系统查看文件和目录大小的命令,ncdudu的替代品

8、Cherry MX 机械键盘的类型(英文)

本文给出机械键盘几种类型的参数和内部构造动画。

9、如何使用图像预览加速图像加载(英文)

网页图像可以先加载预览图像,然后再自动加载完整图像,这样有助于提高网页性能。本文总结了图像预览的几种方案。

10、我的周末项目(英文)

本文记述作者一个周末写的项目,结果意外变成了苹果应用商店的最佳新应用,赚到了4000美元。作者谈了他的一些感想。

工具

1、Unison

一个桌面软件,可以让 OSX、Unix 和 Windows 系统的文件同步。

2、QR Code Scanner

Flutter 的二维码扫描插件。(@leyan95 投稿)

3、Dadroit JSON Viewer

一个浏览大型 JSON 数据文件专用的桌面 JSON 查看器。

4、Node.js 爬虫示例

一个 Node.js 爬虫的示例项目,帮助感兴趣的同学了解爬虫的实现。(@ZY2071 投稿)

5、wallace-cli

一个 CSS 样式表的命令行分析工具,显示有多少条规则、选择器,压缩前后的文件大小等等。

6、Anime4K

实时提升卡通动画的分辨率,使其成为高清动画的工具。

7、翻译侠

浏览器翻译插件,支持 Chrome 和 Firefox,鼠标点击或选择触发翻译,可以翻译多种语言,底层为 Google translate API。(@cloudfroster 投稿)

8、Hexo theme cold stone

Hexo 博客框架的一套样式主题。(@xrr2016 投稿)

9、DarkDarkGo

开源的暗网搜索引擎工具。

10、cve-search

一个 CVE 漏洞的本地搜索引擎,上图是漏洞的分类排行。

11、majestic

一款好用的 Jest 测试框架的图形界面。(@ifrontend-xyz 投稿)

资源

1、版本博物馆

该网站收集世界主要网站和应用程序的页面变迁。

2、算法

英文免费电子书,伊利诺伊大学计算机科学课程的讲义。

3、GIF cities

该网站收集各种 GIF 动画图片。

4、Python 语法笔记

一个比较完整的 Python 教程,主要是语法方面的笔记。(@nosarthur 投稿)

5、现代 Web 开发

一个在线的 Nodejs + React 的互动教程。

6、CPU 原理导论

一篇使用通俗语言讲解 CPU 原理的教程。

7、No CS Degree

该网站专门采访自学成才的程序员,每个采访对象都会问他们怎么学会编程,怎么找到工作。(@nosarthur 投稿)

图片

1、敌对建筑

敌对建筑是一种建筑设计策略,设计师故意让公用建筑使用起来不友好,防止滥用。

长椅故意不做平,让人无法躺下。

突出的墙角,防止有人小便。

花坛的矮墙装上铁扳手,防止有人在上面玩滑板。

2、海岸边的美国

美国很多大城市和重要设施都在海岸边,海平面上升对美国会产生重大影响。本文提供很多航拍图片,展示美国城市距离大海有多近。

下图的后方是大西洋城,前方是城市的污水处理厂。

下图是纽约肯尼迪机场。

3、自然界的二叉树

下面的植物,每个节点都有两个分支。

文摘

1、暗物质开发者

天文学中,暗物质是一种未知的物质,据说宇宙的大部分是暗物质。它既不发光也不反射光,因此望远镜不能直接看到。

你看不到暗物质,但我们很确定它在那里。我们知道它,但无法看到它。它永远不会露面。

有些开发者不是我们经常遇到的那种开发者,就像暗物质一样,可以称之为暗物质开发者。他们不会大量阅读网上的文章,也从不写文章,不去讨论区发言,也不发推文,很少在大型会议上露面。

他们依然在使用老旧的技术,解决各种问题。比如,在小公司的办公室里使用着 ASP,或者在墨西哥写着 VB6,或者在大型芯片制造商内部编写 PHP 日历应用程序。

他们使用众所周知的、经过充分测试并且易于理解的成熟产品。他们不追逐最新的测试版,也不太感兴趣,他们只是让软件可以工作。

暗物质开发者永远不会阅读这篇文章。

2、任正非《我的父亲母亲》

(图片:军队时期的任正非)

1978年3月,我出席了全国科学大会,6000人的代表中,仅有150多人在35岁以下,我33 岁,是军队代表中少有的非党人士。

我有幸在罗瑞卿同志逝世前三个月,聆听了他为全国科学大会军队代表的讲话,说未来十几年是一个难得的和平时期,我们要抓紧全力投入经济建设。我那时年轻,缺少政治头脑,并不明白其含意。过了两、三年大裁军,我们整个兵种全部被裁掉,我才理解了什么叫预见性的领导。

转入地方后,不适应商品经济,也无驾驭它的能力,一开始我在一个电子公司当经理也栽过跟斗,被人骗过。后来也是无处可以就业,才被迫创建华为的。

华为的前几年是在十分艰难困苦的条件下起步的。这时父母、侄子与我住在(深圳)一间十几平方米的小房里,在阳台上做饭。他们处处为我担心,生活也十分节省,攒一些钱说是为了将来救我。

听妹妹说,母亲去世前两个月,还与妹妹说,她存有几万元,以后留着救哥哥,他总不会永远都好。母亲在被车撞时,她身上只装了几十元钱,又未带任何证件,是作为无名氏被110抢救的。中午吃饭时,妹妹、妹夫才发现她未回来,四处寻找,才知道遇车祸。可怜天下父母心,一个母亲的心有多纯。

当时在广东卖鱼虾,一死就十分便宜,父母他们专门买死鱼、死虾吃,说这比内地还新鲜呢!晚上出去买菜与西瓜,因为卖不掉的菜,便宜一些。我也无暇顾及他们的生活,以致母亲糖尿病严重我还不知道,是邻居告诉我的。华为有了规模发展后,管理转换的压力十分巨大,我不仅照顾不了父母,而且连自己也照顾不了,我的身体也是那一段时间累垮的。

我父母这时才转去昆明我妹妹处定居。我也因此理解了要奋斗就会有牺牲,华为的成功,使我失去了孝敬父母的机会与责任,也消蚀了自己的健康。

回顾我自己已走过的历史,唯一有愧的是对不起父母,没条件时没有照顾他们,有条件时也没有照顾他们。爸爸妈妈,千声万声呼唤您们,千声万声唤不回。

言论和数据

1、

食品应该标注两个日期:最佳质量日期和丢弃日期。

-- 《华尔街日报》

2、

人类正在充分利用元素周期表。20世纪80年代的第一代手机,包含25到30种化学元素。今天的手机包含大约75种化学元素,几乎是周期表的四分之三,其中可能包括卢旺达的钽、白俄罗斯的钾、墨西哥的银、缅甸的锡、印度的碳和中国的锗。

-- 《元素周期表150周年》

3、

Pixar 最初是一家图形计算公司,为了显示自己的技术实力,他们制作了一部 CGI 短片,结果得到了奥斯卡最佳动画短片。于是,他们就改行成了电脑动画公司。

-- 《乔布斯签名的 Pixar 海报》

4、

2010年3月,一个比特币的价格是0.003美元,2017年12月17日是19,783.06美元。

-- 《投资比特币之前要考虑的事情》

5、

每一天很长,但几十年很短。

-- Sam Altman,《我的30岁感想》

招聘信息

周刊讨论区的《谁在招人?》,有大量工作/实习岗位,欢迎查看。

如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 300 元。

1、熵简科技

国内领先的数据中台服务商,帮助企业打造一站式数据智能服务平台,已完成B轮融资,客户包括嘉实基金、睿远基金、淡水泉投资、波士顿咨询等顶级金融资管及咨询机构。工作地点北京。

以下岗位开放招聘:高级产品经理、NLP算法工程师、后端工程师、前端工程师、运维工程师、测试工程师。详细要求看这里

2、秘猿科技

秘猿科技是区块链创业公司,为加密经济提供区块链基础设施和服务。工作地点:杭州或 remote。

本公司招聘区块链工程师、高级后端工程师、安全和测试工程师。详细要求看这里

回顾

去年的本周:《周刊第 22 期》

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年9月20日

科技爱好者周刊:第 75 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。

封面图片:前滩,上海,2019

刊首语

全世界都在制造电动汽车,美国一家媒体认为,汽车工人将大量失业,我觉得很有道理。

传统汽车是机械装置,需要大量零件,单单是动力传动系统就多达2,000个零件。

(图片说明:汽油发动机的复杂构造。)

但是,电动汽车是一个电子装置,核心是电动机和电池组,零件大大减少。 变速器、散热器、燃油喷射器、油箱、排气系统,这些都不需要。而且,电动机和电池组都可以外部采购,根本不需要太多工人。

(图片说明:特斯拉 Model 3 的电动机和电池组。)

未来的汽车公司,就像今天的电脑公司和手机公司:核心部件都是外购,自己只负责组装和软件系统。甚至组装都可能外包出去,自己只做设计和品牌。

这样一来,雇员就会非常少,那些跟机械装置相关的岗位,都会消失。

顺着这个思路, 以后不管什么东西,也许都是电子装置 ,因为都会加入控制电路、联网和运算能力。比如,电饭煲、门锁、运动鞋、马桶,以前跟计算机完全没关系,现在都在变成电子装置。

(图片说明:耐克智能运动鞋会自动系鞋带。)

这意味着,三类产业在未来会有较好的发展:(1)能源和电池,为电子装置提供能量;(2)电子和通信,作为电子装置的硬件载体;(3)软件,作为电子装置的控制和互动系统。

Udacity 免费课程

Udacity(优达学城)是美国最大的在线学习平台之一,很多人都听说过。除了收费的、有证书的纳米学位之外,他家其实还有很多免费课程资源。

跟收费课程相比,免费课程只少了项目实训和教学辅导,视频内容还是一样的,而且不少配有中文字幕。只要注册账号就可以看,不收取任何费用。

免费课程很多都跟开发相关,内容对新手友好,相当贴近实战,网页编程、App 开发、系统管理都有涉及,Flutter 和 Kotlin 两门课还是跟谷歌合作的。

Udacity 的课程质量,网上评价很不错,如果你刚开始学习软件开发,或者想感受一下硅谷的教学方式,趁着假期,建议可以看看这些免费课程。

资讯

1、世界最快的跑车

法国跑车公司布加迪制造的 Chiron 超级跑车,8月2日开出了304.77mph(490.5公里/小时)的最高速度,成为第一辆突破300mph的超级跑车。此前的最高记录是 Koenigsegg 跑车2017年创造的284.55mph。

这种速度的跑车,基本上就是在地面上飞,但是必须保证不能脱离地面,因此有很高的技术难度。Chiron 最初于2016年推出,有16个汽缸,4个涡轮增压器,总功率输出为1500马力,价格超过300万美元。

2、分解42

42 = (-80538738812075974)3 + 804357581458175153 + 126021232973356313

数学家一直猜想,任意一个整数都可以分解成三个整数的立方和,n = x3 + y3 + z3。2019年之前,100以下的自然数,只有3342没有分解成功。

2019年2月,33分解成功。9月初,另一个数学家宣布42也分解成功(上式)。目前,1000以下的自然数,还有114、165、390、579、627、633、732、906、921和975,没有找到分解方法。(@AsuraXin 投稿)

3、黑胶唱片销售额超过 CD

美国唱片业协会认为,2019年黑胶唱片的销售额将超过 CD,这是1986年后的第一次。今年上半年,黑胶唱片的销量是860万张,共2.241亿美元,CD 的销量是1860万张,共2.479亿美元。

黑胶唱片的销量一直在增长,上半年增长了12%,而 CD 几乎没增长,因此预计黑胶唱片将超过 CD。目前,黑胶唱片销售额占音乐业总收入的4%,Spotify和Apple Music等流媒体服务的付费订阅,占总收入的62%。

4、转基因蚊子实验失败

巴西为了遏制黄热病,2013年到2015年期间,曾经连续27个月,每月释放45万只基因改造过的埃及伊蚊的雄蚊。这些蚊子的下一代带有基因缺陷,无法长大。

卫生部门希望通过这个举措,将蚊子数量减少90%。但是现在发现,蚊子种群已经完全恢复,实验宣告失败。开始实验的时候就知道,约有3%~4%的幼蚊会长大进入成年期,科学家当时认为这个比例很低,无法达到种群恢复的目的,显然这种看法错了。

5、搞笑诺贝尔奖

第29届搞笑诺贝尔奖近日在哈佛大学颁发。该奖每年选出一些似乎毫无意义的科研项目。今年的获奖者如下。

化学奖 : 评估一个典型5岁孩童每天的唾液分泌总量。方法是先对食物称重,然后让孩子咀嚼这些食物,吐出来再次称重,以测量里面多了多少唾液。

物理学奖 :研究树袋熊排出方形粪便的方式和原因。树袋熊是已知的唯一一种会排出方形粪便的动物。

工程学奖:人类婴儿的自动换尿布机。

解剖学奖:测量了未穿衣服和穿衣服的法国邮递员两侧阴囊温度的不对称性。科学界此前曾争论过,男性的左侧阴囊温度是否比右侧稍高一些,这个研究发现两侧温度的确不一致。

经济学奖:测定了哪个国家的纸币最容易传播危险的病菌,结果发现是罗马尼亚。

和平奖::试图测量挠痒痒带来的愉悦程度。结果显示,背部和脚踝处的瘙痒感要强于前臂,因此挠痒痒的愉悦感也要强烈一些。

医学奖:证据表明食用披萨或有助于预防疾病、延年益寿,前提是要在意大利境内食用在意大利制作的披萨。

心理学奖 :1988年,一个研究组发现,嘴里叼一支笔会让你微笑,也因此会更加快乐。开展这项研究的科学家 Strack 自己在2016年重新对这个问题进行了研究和实验,但却发现无法复现当年自己得出的结论。

6、人工智能威士忌

英国一家酿酒公司推出了,世界第一款人工智能创建的威士忌。它通过现有配方,结合销售数据和客户偏好,在超过7000万个选择之中,创建了一种金黄色的麦芽威士忌。该公司宣称,这种酒带有太妃糖、奶油香草、梨、苹果、白胡椒和烤橡木桶的清淡口感。

7、一句话消息

  • 韩国2018年生育率降至0.98,即妇女一生中平均生育不足一胎,成为全球唯一一个生育率跌破1的国家。

  • Brave 浏览器有自家的加密货币 BAT,还有一个 BAT 按钮。只要是认证过的网站,用户按一下这个按钮,就可以把自己的 BAT 捐赠给该网站。

  • 英国的指南针360年来第一次指向正北方。指南针指向的是地球的北磁极,通常与地理的北极不重合。但是,磁极一直在移动,最近会跟格林威治天文台在同一根经线上。

  • 纽约地铁使用液晶屏替代纸制地图,引起批评,因为液晶屏的分辨率太低了,细节根本不清晰。

  • 肯德基开始在美国出售植物鸡块。这些鸡块不是鸡肉,而是豆类植物制成的。

  • 苹果公司正式发布 iPadOS,现在就可以安装升级。它将一些桌面电脑的功能引入了 iPad,比如 程序坞 dock 和支持直接插入U盘。苹果公司的产品线目前有五个操作系统:MacOS、iOS、iPadOS、WatchOS、tvOS。

  • Stack Overflow 选择了一个印度人担任首席执行官。在硅谷高管级别,印度人比华人强太多了。

文章

1、如何使用 cluster 模块扩展 Node.js 应用(英文)

Node.js 应用都是单进程的,可以使用 cluster 模块将其变成一个多进程应用。本文通过一个简单的例子,介绍具体方法。

2、35岁以后油腻中年人该去哪?(中文)

这些年有一个非常不太好的感触,一般来说,企业对员工好,这企业往往走不远,走得远的,往往是那种往死里压榨员工的企业。

3、处理长文本行的方法(英文)

有的文本,每一行特别长,很难阅读。这时可以使用cut命令,将其转为多行,比如head data.csv | cut -c -30

4、理解 Y Combinator(英语)

Y Combinator 是函数式编程的重要概念。本文较为通俗地一步步推导它,对函数式编程有兴趣朋友可以看看,文章很长。

5、10种最佳的 Python IDE(英文)

本文介绍了10种 Python 编程 IDE(集成编程环境),每一种的简介和特点。

6、ReasonML 与 TypeScript 的对比(英文)

ReasonML 是 Facebook 推出的一种脚本语言,作为网页编程的静态类型解决方案。本文比较了它与 TypeScript,提出 ReasonML 有一些 TypeScript 不具备的优点。

7、Linux 桌面环境的发展历史回顾(英文)

Linux 是作为命令行下的服务器系统开发的,桌面环境一直不如商业的操作系统。本文回顾了 Linux 桌面环境的发展历史,带有多张图片。(@M1seRy 投稿)

8、浏览器指纹识别介绍(英文)

追踪用户的常用手段,是使用 Cookie 保存用户 ID。但是,随着浏览器开始限制第三方 Cookie,新的追踪手段是使用浏览器指纹。本文介绍一些这方面的基本知识。

9、BitTorrent如何运作?(英文)

本文通俗地介绍 BT 下载的原理和算法,包括磁性链接如何运作。

10、我如何在40天里面写一个 C 语言编译器(英文)

作者的编译器开发日记,第一天写了20行代码,发展到后来的4000行,记录了每一天所解决的问题。

工具

1、chart.xkcd

一个 XKCD 漫画风格的网页图表库。(@timqian 投稿)

2、Rough.js

生成手绘风格图片的 JS 库。

3、material-admin

基于 Spring Boot 的 Material Design 风格的通用后台管理系统。(@enilu 投稿)

4、Skim

MacOS 平台的一个开源 PDF 文件阅读器。

5、pagemap

一个 JS 库,在网页插入迷你的页面缩略导航图,用户可以点击这个图的不同部分,实现快速导航。

6、K2pdfopt

一个 PDF 工具,将 PDF 文件重排成 Kindle 和手机可以阅读的页面大小。

7、starcharts

一个开源工具,可以查看 GitHub 仓库的 Star 变化情况,生成折线图。(@Imfondof 投稿)

8、awesome-qrcode

二维码生成工具,可以生成静态二维码、图像二维码和动画二维码。

9、基于零宽字符的文本隐藏加密工具

该工具的原理是利用零宽度字符,将加密文本转码后嵌入到普通文本当中,从而表面看起来是一段普通文本,但是复制粘贴不会丢失密文。

10、Raccoon

从 Google Play 将安卓 apk 安装包下载到桌面的工具。

11、ShowMeBug

一个国产的在线实时编程环境,程序员面试助手,可以实时观看应聘者远程编程。(@windy 投稿)

12、中国传统颜色手册

一个方便使用的在线色表,列出中国古典的常见颜色。(@zerosoul 投稿)

资源

1、Docker 初学者教程

讲解 Docker 是什么,以及如何使用 Docker 构建分布式程序,并部署到云。(@douchuan 投稿)

2、Kubernetes academy

针对初学者的免费 Kubernetes 视频课程,帮助学习者理解 Kubernetes 的基本概念。

3、Dive into Deep Learning

深度学习的互动式在线教程。(@baddate 投稿)

4、GK Docs

面向前端开发者的网址导航站,中文的。(@wuyinman 投稿)

5、free-for.dev

该仓库收集互联网上的免费开发者资源。(@ifrontend-xyz 投稿)

6、justDelete.me

每一种互联网服务,都需要注册,如果你以后想删除账户,可能会非常困难。该网站评价各网站删除用户账户的难易程度。

图片

1、斯德哥尔摩的电话塔

100年前的电话,都需要人工转接,每一部电话线必须连接到电话局。

下图是瑞典首都斯德哥尔摩的电话塔。它从1887年至1913年是斯德哥尔摩主要的电话转接点之一,一共连接了大约5000条电话线。该塔在1913年退役,1953年因火灾而被拆除。

2、Guido van Rossum 老照片

1990年,34岁的荷兰程序员 Guido van Rossum,发布了一个个人的业余项目-- Python 语言。

1994年,他参加波兰的 Python 研讨会。

2001年,Python 基金会成立。

2014年,他进入 Dropbox 公司工作。

文摘

1、时空旅行者宴会

2009年6月28日,英国著名物理学家霍金举行了一次时间旅行者宴会,欢迎未来的人们回到现在,参加这个宴会。房间布置了气球、香槟和美食,挂著大大的标语,写着"欢迎时间旅行者"。

霍金在宴会举办前没有向任何人发出邀请。宴会结束后,他才发出请帖,邀请有"穿越"能力的人士赴宴。

请帖上写著:"诚挚邀请你参加时间旅行者的宴会。宴会由史蒂芬·霍金教授举办。"请帖不但写明宴会的举办地点为英国剑桥大学冈维尔与凯斯学院,还贴心地标明了经纬度。

霍金认为,如果有未来人看到这份请帖,并且能"穿越"回到过去,那么他在那次宴会上就会见到货真价实的"时间旅行者"。

但是,完全没有人赴会。霍金说:""我坐了很长时间,但没有人来。我用实验证明,时间旅行不可能。"

1905年,爱因斯坦在相对论中断定,当接近光速的运动时,时间会很慢或静止,也就是说,当人乘坐接近光速的飞船去旅行,在旅行的过程中时间就会变慢,因此,当他再回到地球的时候就可能已经过了一个世纪。对他来 说,只要花很少的时间就能进入未来世界。但是,爱因斯坦指出:光速无法超越,时间不可能倒流。

不过,霍金说:"从爱因斯坦的相对论来看,弯曲时空、回到过去的可能性的确存在。但是,让时空弯曲,可能引发能量摧毁(时空旅行所用的)飞船、甚至时空。" 

2、马斯克的脑机接口

特斯拉公司的老板埃隆·马斯克(Elon Musk)的最新项目是一家脑机接口公司,将大脑连入计算机。

他说,他很担心人工智能对人类的威胁,因此想到,将人工智能接入人类体内,可能会缓解机器对人类的威胁。

他的新公司叫做 Neuralink(意为神经连接),必须通过手术,在人类体内植入硬件。这简直是将科幻小说的情节转变为一家公司,这到底是科学,还是科幻小说?

Neuralink 的计划是,通过一个小于8毫米的洞进入大脑,植入 4mm x 4mm 的芯片及相关的线路。该芯片将从位于耳后的无线硬件获得电源,并与之通信,就像当前的人工耳蜗植入一样。

在大脑内部,芯片连接到一些小电路,这些小电路连到放在各个大脑区域的电极,监听神经元的电脉冲。芯片接收到神经活动的原始数据后,就会进行处理。电脉冲也可以通过这些电极发送到神经元,刺激大脑活动。

总结一下,这个项目简单说,就是把电子植入物通过门诊手术放入大脑,通过无线方式与耳朵后面的硬件进行通信,整个系统全部由手机控制。整个过程没有任何一个部分超出现有技术,所有挑战应该都可以克服。

但是,整个项目显然属于科幻小说的范畴:将人类与计算机融合,抵抗人工智能。

言论和数字

1、

工业化的风险越来越大。因为工业化使得人们集中在城市、使得生产消耗更多的能源,有更多的自动化,更快的技术变革,最后是更加相互依赖的系统网络。

-- 《复杂系统的故障》

2、

德国工业设计大师 Dieter Rams 是功​​能主义的坚定信徒,他的设计理念就是他的名言:"少,但更好"(less but better)。

-- 《伟大的产品做得少,但更好》

3、

18岁的奥地利人安德烈亚斯·米哈维茨(Andreas Mihavecz)是没有食物的情况下,世界上活得最久的人。

1979年4月1日,他被警察关进一个地下室,后来被忘了。18天后的4月19日,才被发现。

-- 维基百科

4、

Rekursiv 是上世纪80年代苏格兰科学家推出的一种 CPU,从未商业化,只做过几个实验板。唯一一个知道去向的成品,位于格拉斯哥市内一条河流的底部。

-- 维基百科

5、

创造伟大产品的秘诀,不是去创造各种了不起的功能,而是让你的客户变得了不起。

-- Kathy Sierra

招聘信息

周刊讨论区的《谁在招人?》,有大量工作/实习岗位,欢迎查看。

如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 300 元。

1、高级前端工程师

易路软件聚焦企业人力资源 SaaS 领域,致力于以复杂薪酬计算为核心的"移动互联网+员工服务"研发及运营。工作地点:上海闵行区。

招聘前端工程师,参与公司产品研发,包括不限于 PC 端、H5、小程序、Node 服务。详细要求看这里

2、秘猿科技

秘猿科技是区块链创业公司,为加密经济提供区块链基础设施和服务。工作地点:杭州或 remote。

本公司招聘区块链工程师、高级后端工程师、安全和测试工程师。详细要求看这里

回顾

去年的本周:《周刊第 23 期》

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年9月27日

科技爱好者周刊:第 76 期

$
0
0

这里记录每周值得分享的科技内容,周五发布。

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。

封面图片:直播装备。

刊首语

我一直觉得,找工作应该找自己热爱的职业。很多人不同意。

他们说,我热爱的东西,没法当做职业。旅行、美食、看电影,这样的爱好怎么当做职业呢?

我最近想到怎么办了,只要照着我说的做,任何爱好都能变成职业。

很简单,只要把自己的爱好拍成视频,上传到网上,让别人观看你的视频,观众越多越好。只要观众足够多,爱好就能变成职业。

旅游就拍游记,美食就拍吃菜或做菜,电影就拍剧情介绍绍或评论。只要观众多,视频平台会给创作者分成,厂商会找你合作。哪怕只有一万个人订阅,收入也不会输给普通的上班族。

这方面,最好的例子就是电子游戏。最早的时候,喜欢玩电子游戏是挣不到钱的。后来,有人把游戏的过关视频传上网,发现居然很多人爱看。观众之多,创造出了好几个产业:游戏直播、游戏评论、游戏解说、游戏竞技,都是从视频衍生出来的。

只要能服务或娱乐足够多的人,爱好就能变成职业,不管爱好是什么。

资讯

1、机器狗 Spot

波士顿动力公司正式现货发售它的机器狗产品 Spot,有意的用户必须填写申请单,然后波士顿动力会从中选择试点用户,跟其单独商定价格。

广告视频中,机器狗能上坡下坡、开门、绕过障碍,还能互相交流。根据披露,它的速度是每秒1.6米,负重14公斤,360度视力,电池可更换,连续运行时间为90分钟左右。

2、泰国对含糖饮料加倍征税

泰国从2017年开始对含糖饮料征税,今年10月1日起加倍征收。泰国人嗜甜,饮料非常甜,就连面条也要加糖,平均每天摄取26茶匙的糖,是世界卫生组织(WHO)建议每日摄取量的4倍,多半来自含糖饮料,因此泰国政府希望降低泰国人的糖分摄取量。

10月1日开始,每100毫升含有10到14克糖的饮料,税为1泰铢(0.23人民币);14到18克糖的饮料,税为3泰铢(0.70人民币);18克以上糖的饮料,税为5泰铢(1.17人民币)。

3、Firefox 四周发布周期

Firefox 浏览器宣布,发布周期从6周改成4周,即每个月发一个大版本。相比之下,Chrome 现在是6周一个大版本。

这就是前端的速度。一年可以从v69变成v81。如果你的知识一年不更新,就会遥遥落后最新进展。

4、氢气大巴

丰田公司将向2022年北京冬季奥运会,提供100辆氢燃料电池公共汽车,在场馆之间运送游客。这应该是中国第一次引入氢气燃料的公共汽车。目前,东京已经有15辆氢气大巴在运营。

跟纯电动汽车相比,氢气汽车没有充电这个环节,更方便省事。但是,它需要广泛的充气站网络,这成了氢动力汽车推广的最大难题。

5、横渡英吉利海峡两个来回

9月17日,37岁的美国妇女萨拉·托马斯不间断横渡英吉利海峡四次(两个来回),成为世界上完成这个壮举的第一人。她总耗时超过54个小时,一共游了大约209公里。英吉利海峡最窄的地方为30多公里,但因为海上风大浪急,她最后游过的距离远超海峡的实际宽度。

此前有四个人完成不间断横渡英吉利海峡三次(一个半来回),但是没有人游过四次。整个过程中,每隔30分钟,团队都从船上将补给品拴在绳子上递给她。更惊人的是,她是一个癌症患者,去年刚刚完成乳腺癌治疗。

6、特斯拉警车

美国加州弗里蒙特警察局,购买了一辆二手特斯拉汽车作为警车。最近,该车执勤时接到任务,追捕一个驾车逃逸的嫌疑人。当时,警车的电量在40%~50%之间,而嫌疑人在高速公路上以每小时193公里的速度疯狂逃逸。

警车追到只剩6%电量时,警察害怕在高速公路上抛锚,只能放弃追捕。此事引起了媒体的热议,因为电动汽车一次充电能行驶的里程,目前要少于汽油车,而且充电站也大大少于加油站,因此可能不适合作为警车。

7、SpaceX 宇宙飞船

SpaceX 公司发布自己的宇宙飞船 StarShip,这是第一家私人商业公司推出的载人航天器。这艘飞船高度为118米,使用不锈钢制作,装有几十个发动机,可以多次循环使用,一次搭载100人前往火星。

SpaceX 的 CEO 马斯克预计,该飞船明年可以试飞,最快2022年前往火星。下一步要解决的问题是,前往火星的单程为半年,需要开发一个支持100人的生命保障系统。

8、一句话消息

  • 日本9月30日关闭了最后的寻呼机服务。寻呼机从诞生至今已经有50年了。

  • 俄罗斯最近加入了2016年的《巴黎气候协定》,以前它一直对气候变暖不积极,因为该国纬度高,天气不热,而且北极融冰还有利于通航。外界认为,今年夏天北极的异常高温,导致冻土带融化,威胁到俄罗斯的石油天然气设施,才是态度改变的关键原因。

  • 复旦大学研发出5亿像素的云相机,"即便在几万人的体育场内,只需拍摄一幅全景照片,就可获得每张人脸的清晰图像,进行海量数据人脸等目标的检测与识别,瞬间发现特定目标。"

  • 今年是无线广播电台诞生100年。很少有一种电子产品100年后还在使用。

  • 下图是硅谷科技公司的平均工资。相比之下,2018年,国内科技公司平均工资最高的是华为110万人民币,相当于15万美元,基本上跟硅谷工资一致。虽然,平均工资不代表基层员工的收入,但是可以衡量这些公司的人均薪资支出。

  • 一个美国车主将自己的车漆成涂鸦状,结果发现这种涂装很受欢迎。

文章

1、<portal>元素的安全性分析(英文)

Chrome 浏览器最近开始支持<portal>元素。它基本上是一个更安全的<iframe>,建立一个彻底的沙箱,用于在一张网页里面插入另一张网页。

2、可以用正则表达式检测正则表达式吗?(英文)

这是一个 StackOverflow 的问答,能不能写出一个正则表达式,去检测另一个正则表达式是否形式正确。这里还有一篇文章是针对这个问题的解释,关键在于正则表达式是否支持递归检测。

3、如何用 AWS Amplify 托管网站(英文)

AWS Amplify 是亚马逊的持续集成服务,作为一个简单的网站托管方案,可以直接从源码构建网站,然后自动部署。

4、傅里叶变换交互式入门(中文)

通过一系列互动图形,直观介绍傅里叶变换的含义,基本没用数学公式。

5、如何使用 CSS 变量写一个样式切换器?(英文)

本文介绍 CSS 变量的概念和一些技巧,然后演示用它写一个暗模式/亮模式的切换器。

6、我对编程语言的评价(英文)

一个程序员对十几种编程语言的简短评价,列出每种语言各自的优缺点。

7、如何使用 IPFS 集群架设静态网站?(英文)

IPFS 是一种新的 Web 架构,本文作者尝试让自己的静态网站可以通过 IPFS 访问。本文还有续集,介绍如何持续集成,只要推送源码,就自动构建,然后推送到 IPFS。

8、JavaScript 的函数、对象、原型、原型链的关系(中文)

一篇对于 JavaScript 原型链相关知识的总结。(@scottcgi 投稿)

9、日本企业的产业升级之路(中文)

跟大家的印象不一样,日本企业这几年不是走下坡路,而是在走上坡路。东京股市从安倍上台的2012年的8000点,已经上升到2万2000点。本文介绍一些日本企业的最新发展。(@Hiufan 投稿)

10、我如何一个人实现亚马逊上的100万美元销售额?(英文)

一个美国大学生讲述,他如何通过代理中国产品,没有雇佣任何人,一个人在亚马逊上年销售额达到100万美元。

11、中国国庆阅兵展示的新武器(英文)

CNN 分析国庆阅兵里面值得注意的新武器。

工具

1、gavatar

生成类似 GitHub 用户头像的开源工具。

2、cowrie

一个模拟的 SSH 服务器。很多攻击者都是 SSH 登录,你可以把这个软件在22端口启动,真正的 SSH 服务器放在另一个端口。黑客以为攻入了服务器,其实进入的是一个虚拟系统,然后会把他们的行为全部记录下来。

3、devfolio

一个个人简历网站的建站模板。

4、Base API

这家云服务公司提供基本的 Web API,包括身份验证、电子邮件发送、文件和图像存储。用法简单,容易上手,作为概念产品很不错。

5、Git paging

一组 Bash 函数,可以在命令行迅速查看 Git 仓库某个版本的信息(比如,第一个、最后一个、上一个、下一个版本)。

6、CodeJsFront

一个开源的编程题目的答题系统。(@Zo3i 投稿)

7、BPMN-JS

一个在线绘制业务流程图的开源工具。(@xhuihui 投稿)

8、Landfall

一个定制手工 3D 地图的网站。

9、d2-admin

一个企业中后台产品的前端集成方案。(@FairyEver 投稿)

10、GoAccess

开源的日志分析工具,可以生成命令行、JSON、HTML 等格式的分析报告。

11、drinkNow

Chrome 浏览器插件。每过一段时候,就会弹出一只小鸭子,提醒你要喝水。(@sologgfun 投稿)

资源

1、如何学习 D3.js

数据可视化库 D3.js 的在线英文教程。

2、Berlin:1928与今天

这个网站将柏林1928年的地图,与今天的地图对照展示。地图往左拖动,展示1928年的柏林,向右拖动展示今天的柏林。

3、Free Stock Photos

免费的图库网站,所有图片都可以免费下载,可用于商业用途,包含数百万张图片。

4、维基百科镜像

维基百科在 IPFS 的只读镜像。

5、Julia Academy

Julia 语言的官方团队开设的课程网站,目前有 Julia 语言入门、机器学习等三门课程。

图片

1、G-Shock 电子表

G-Shock 是卡西欧的高端电子表品牌,本文以几十张照片介绍 G-Shock 的设计师(下图右一),以及他是如何设计电子表的。

2、世界最长的海底电缆

SEA-ME-WE3 是目前世界最长的海底电缆,连接东亚 - 东南亚 - 中东 - 西欧,总长度 39,000公里。它于2000年3月投入使用,一共有39个登陆点。

文摘

1、莫拉维克悖论

莫拉维克悖论(Moravec's paradox)是人工智能学者发现的一个与常识相反的现象。和传统的假设不同,人类所独有的逻辑和思考能力(即所谓的智慧)只需要非常少的计算能力,但是无意识的技能和感知能力却需要极大的运算能力。

原始表达是:"要让电脑如成人般下棋是相对容易的,但是要让电脑有如一岁小孩般的感知和行动能力却是相当困难,甚至是不可能的。"

一位人工智能学者这样写道:

"人工智能研究的主要教训是,难题很容易解决,而我们认为理所当然的一个四岁孩子的能力---- 识别一张脸,举起一支铅笔,走过一个房间,回答一个问题 ---- 实际上是有史以来最困难的问题。......新一代智能设备出现了,它会取代股票分析师、工程师和董事会成员,但是园丁、服务员和厨师在未来几十年中,工作都很安全。"

2、一个持续50年的太空实验

美国有些人质疑,阿波罗计划是一个骗局,宇航员从没到过月球,登月是在摄影棚拍的。下面这个已经进行50年的实验,可以证明这种怀疑是不对的。

阿波罗11号登月前,美国宇航局设计了一个实验,测量地球和月球之间的精确距离,精确到厘米。

1969年7月20日,阿波罗11号宇航员降落在月球上,在月球表面放置了一面1米宽的镜子。美国的四家天文台开始向镜子的方位射出激光,希望击中镜子。

1969年8月1日,加利福尼亚州圣何塞市外的汉密尔顿山上的利克天文台,收到了反射回来的光脉冲,往返耗时2.4秒。由此我们知道了地球与月球之间的精确距离。

直到今天,科学家仍然通过这个实验,进行月球激光测距,以跟踪月球的轨道和旋转的变化。数据显示,地球到月球的距离每年增加约1.5英寸。

2019年8月1日,天文台举行了该项实验50周年的庆祝活动。

言论和数字

1、

有些开发者对技术上瘾,而不是务实地看待技术。每当一种新技术出现,他们会立刻选择它,跳船到它上面,虔诚地传播它,应用它,然后跳船到下一个新技术。

这部分是因为,在这个行业里,简历需要很多时髦的流行语,务实的简单的技术选择,无法让别人留下深刻印象。

-- HN 读者留言

2、

达尔文和尼采有一个观点是一致的:生物体最重要的特征就是奋斗求生。

-- 书籍《当呼吸化为空气》

3、

函数式编程对个人开发没影响,但是团队开发够呛。函数式编程只适合个人英雄主义的开发者,类才适合团队。因为类具有有形的API,函数式依靠无形的概念和规范。因此我觉得React Hooks是一个巨坑。

-- 一个读者评论React Hooks 废掉了"类"(class)

4、

Perl 6 最初设计为 Perl 的下一个版本,但是设计阶段耗时太长(超过10年)。于是,很多人继续使用 Perl 5,并且接管了 Perl 5 的代码管理权。

现在,Perl 6 与 Perl 5 是两种完全不同的编程语言,不兼容,不仅仅只是版本号的不同。如今,Perl 这个词指的是 Perl 5,而 Perl 6 的开发者正在讨论是否改名,将其彻底变成一种独立的语言。

-- 《Perl 6 是否改名?》

5、

一些蓝领工作(比如焊接工)具有相对较高的工资水平,可以超过一些低层白领。但缺点是他们的工资上限很低,不会超过平均工资太远,很难拿到非常高的工资。

-- 《大西洋杂志》

6、

我很惊讶一个静态站点生成器可以筹集这么多资金,这意味着,那些非静态的内容网站依然有巨大的问题。

-- HN 读者对静态站点生成器 Gatsby 筹集1500万美元的评论

招聘信息

周刊讨论区的《谁在招人?》,有大量工作/实习岗位,欢迎查看。

如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 300 元。

1、秘猿科技

秘猿科技是区块链创业公司,为加密经济提供区块链基础设施和服务。工作地点:杭州或 remote。

本公司招聘区块链工程师、高级后端工程师、安全和测试工程师。详细要求看这里

回顾

去年的本周:《周刊第 24 期》

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号语雀

微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。

(完)

文档信息

  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证
  • 发表日期: 2019年10月 4日
Viewing all 686 articles
Browse latest View live