这里记录每周值得分享的科技内容,周五发布。
本杂志开源(GitHub: ruanyf/weekly[1]),欢迎提交 issue,投稿或推荐你的项目。
周刊讨论区的帖子《谁在招人?》[2],提供大量就业信息,欢迎访问或发布工作/实习岗位。

封面图

澳门去年11月举办龙马巡游,该大型机械装置为中法团队合作打造,上身为龙,下身为马,身体各部分都能动,还能喷火。(出处:Instagram[3]

本周话题:保护你的 DNA,不要泄漏

上周,美国佛罗里达州通过了《DNA 隐私法》[4],成为美国第一个对 DNA 立法的州。它明文规定 DNA 属于个人隐私,保险公司不得获取 DNA 测试的结果。
为什么 DNA 不能让保险公司知道?
因为 DNA 包含了一个人所有的遗传信息,你有什么基因缺陷,一查 DNA 都能知道。保险公司拿到你的 DNA 以后,就能识别你可能会得哪些疾病,于是相应调整费率,或拒绝你投保人寿险和医疗险。
DNA 不仅对保险公司有用,对就业和招生也有用,可以用来找出基因上最合适的人选。所以,DNA 里面的个人信息可能不利于你,要注意保护,防止泄漏。
DNA 测序已经是一项常规技术了,普通实验室都能做,毫无难度。现在,新生儿出生前,医院都会建议孕妇做一下产前 DNA 检查,防止遗传病。2018年,湖南一个孕妇起诉华大基因公司[5],原因就是该公司的 DNA 检查一切正常,但是新生儿生出来有严重的遗传病。
如果 DNA 检查发现遗传缺陷,这个新生儿是不会生出来的。引申一下,这对成人也一样,如果你的 DNA 泄漏了,有时就直接出局了。
DNA 检测现在有多便利?电商平台搜一下“DNA 检测”、“DNA 测序”,会返回很多结果。
DNA 也很容易获得,头发、血液、唾液、身体组织都能用来检测。所以,保护 DNA 的难度其实挺大的,只能说个人要有保护意识,尽量不留下 DNA 痕迹。

讲座:算法面试的必考知识点

暑假到了,大家打算怎么利用这个假期?
如果你能静得下心,其实可以考虑好好学一下算法。以后进入公司,开发任务一重,就很难有时间和心思,再来学这些基础的东西。
这里介绍一门极客大学推出的讲座 《算法面试必考知识点》,可以帮助你学好算法。因为算法内容实在太多,所以这个讲座一共安排了7天。
讲座的主要内容是针对 LeetCode 的海量题库,精选 30 道 BAT 大厂面试高频特色算法题,重点讲解面试的必考知识点,教学风格通俗易懂,零基础的同学也可以听。录播、直播、线上答疑相结合,配合小测试和课后作业,保证教学效果。
主讲老师是覃超,他曾担任 Facebook 多年面试官,作为 Facebook Messenger Tech Lead,主导和参与了 Facebook App、Facebook Messenger、Facebook Phone 等产品的研发工作。离开Facebook以后,他与极客大学合作,亲自授课,传授大厂面试经验。通过覃超老师指导的学员,很多都拿到了硅谷公司以及国内顶级互联网公司 Offer。
除了视频讲座,每天还会有来自一线互联网企业的助教老师在群内答疑,并配备专属班主任全程带班,召开班会,帮助大家结成学习伙伴,互相监督鼓励。课程结束后,还有学习资料可以领取。
这样规格的7天讲座,仅象征性收费 9.9元。微信扫描下方二维码,即可报名,只有 100 个名额哦。

资讯

1、平流层飞船[6]
美国一家私人公司提出了“平流层飞船”计划,让游客乘坐飞船上升到平流层(距离地面30公里),体验一下太空的感觉,票价预计为每人12.5万美元。飞船可以乘坐八名乘客和一名飞行员,先进行长达两个小时的上升,然后在空中停留两个小时,最后再花两个小时下降。
飞船的上升动力,主要来自一个巨大的充满氢气的气球。飞船内部有酒吧,还有一个“拥有世界上最佳视野”的厕所,甚至有 Wifi。该公司计划飞船在2024年完工,目前已经在官网[7]接受预订。
2、AI 海滩救生系统[8]
夏季的海滩有很多人,如果发生溺水,不容易发现。为了帮助救生员尽快发现溺水者,以色列创业公司 Sightbit 开发了一套 AI 溺水救生系统,使用摄像头自动侦测溺水者,还能发现无人看管的孩子和异常的水流。
该系统接受了“成千上万张照片”的训练,只要三个摄像头,就能监控300米的海岸线。它会自动识别游泳者,一旦发现危险,就会出现闪烁框,救生员可以单击警报,放大查看。
3、加州大学旧金山分校支付赎金[9]
6月1日,加州大学旧金山分校(UCSF)的电脑中毒,出现了上图的对话框,要求支付赎金,才能继续使用电脑。
旧金山分校立刻根据留下的 Email 地址,与黑客取得联系。黑客要求支付赎金300万美元,旧金山分校说新冠病毒使得学校财务很困难,希望只支付78万美元。最后,双方讨价还价,黑客同意了114万美元的赎金。第二天,旧金山大学就将116.4个比特币转移到了对方的电子钱包,然后就得到了解密软件。
4、自动结算的购物车[10]
合肥某超市出现了带有自助结算装置的购物车。消费者从货架取完商品后,使用该装置扫描二维码,然后手机付款,就完成了整个自助结算的过程。
这个装置可能不容易推广。它最大的问题是,购物车需要经常充电,而且容易遭到破坏或偷窃,一旦被人拿走,超市会有较大的损失。
5、宝马汽车的付费加热座椅[11]
德国宝马汽车公司最近发布了新的汽车操作系统,最引人注目的是将许多汽车功能做进了系统,让它们都变成了软件服务,像自动导航、自动远光灯、甚至加热座椅都变成了软件控制。
新的系统还带有收费设置,这意味着,这些服务都可以改成按小时收费,付款后才能开启。以后,你可能需要按月购买服务包(service pack),才能使用汽车的某些功能,比如冬季购买加热座椅服务,夜里购买自动远光灯服务。
6、一句话消息
科学家[12]在海拔6700米的安第斯山脉的山顶,发现了老鼠。这是已知生活区域最高的哺乳动物。这些老鼠吃什么,目前还是一个迷,那个高度没有植物,氧气只有海平面的一半。
小米[13]申请了滑动相机专利,手机背面设置一个滑动条,上面装了三个摄像头。要用前置摄像头时,滑动条会自动滑出,这样手机正面就可以实现全面屏。
英国科学家[14]发表研究成果,每天盯着红光看几分钟,有助于防止老年人视力下降。
推特工程部门[15]宣布,开始替换带有歧视性的软件术语,比如“黑名单”(blacklist)改为“拒绝名单”(denylist),“白名单”改为“允许名单”(allowlist)。
中国电子书厂商 Onyx[16] 拒绝发布设备源码,那是根据 Linux 内核改的,明显违反了 GPL 许可证。Reddit 社区正在讨论,开源软件有没有办法在中国维权。

文章

1、Vim 的由来[17](英文)
Vim 有30多年历史,目前依然是最流行的编辑器之一。本文简要地回顾了历史,它的一些主要的设计决定,到底是怎么来的。
2、史上最难的定位挑战[18](英文)
一个推特用户发了一张照片,空荡荡的蓝天上有一架飞机。他给出了三个已知条件,本文分析如何根据下面三个条件,定位他在哪里拍这张照片。
天空中的飞机是从伦敦飞往香港的波音747。该照片拍摄于2019年10月30日。拍摄者在旅馆里。
3、Makefile 的静态网站实现[19](英文)
现在有各种各样的静态网站工具,比如 Jekyll 和 Hugo 等。作者提出,Makefile 也可以用来实现静态网站,这样就不需要任何外部工具了,只维护一个 Makefile 配置文件即可。
4、哈希算法的种类[20](英文)
这篇文章用相对通俗的语言,介绍了目前常用的几种哈希算法,以及它们各自适用的场景。
5、React Hooks 的常见的错误写法[21](英文)
Hooks 是前端框架 React 现在主推的写法,它很灵活,但也很容易误用。本文作者总结了四个错误写法,虽然能够运行,但是不应该这样写。
6、字体反爬的攻与防[22](中文)
作者因为业务原因需要爬取一批斗鱼主播的相关数据,结果发现斗鱼使用了一种很有意思的反爬技术:字体反爬。
7、分页查询不要使用 OFFSET 和 LIMIT 语法[23](英文)
数据查询时,如果数据多,就需要分页,一般使用 OFFSET 和 LIMIT 语法。这篇文章提出,这样做不好,耗费资源,有性能问题。
8、写给 JavaScript 程序员的 Rust 教程[24](英文)
一组系列文章,使用 JavaScript 作为例子,介绍 Rust 语言。
9、Git 多行提交信息的简单方法[25](英文)
git commit命令的-m参数用来指定提交信息,但是这样提交的信息只有一行。本文介绍实现多行信息的简单方法。

工具

1、ward[26]
一个简单的服务器监控的仪表盘,基于 Java。
2、httpsproxy2http[27]
一个开源的反向代理服务器,以 Docker 镜像形式发布,提供 HTTP 到 HTTPS 的反向代理服务,可以把不加密的 HTTP 网站代理成加密的 HTTPS 网站。
3、jsonbase[28]
一个 JavaScript 数据库,后端数据都存成 JSON 格式文件,可以用来学习怎么自己实现关系型数据库。
4、guietta[29]
一个 Python 工具,用来生成简单的图形界面。
5、UIkit[30]
一个前端 Web 组件库,不依赖任何框架,组件类型多、功能强。
6、Zettlr[31]
一个桌面 Markdown 编辑器,界面美观。
7、Reabble[32]
Kindle 等电子书阅读器的 RSS 推送服务,绑定 Inoreader 帐号。(@weijarz[33] 投稿)
8、Midway Serverless[34]
阿里发布的 Node.js 的 Serverless 框架,帮助 Node.js 开发人员迁移到云端 Serverless 平台。(@czy88840616[35] 投稿)
9、gitqlite[36]
使用 SQL 语法查询 Git 仓库的工具,比如SELECT * FROM commits
10、honkit[37]
GitBook 官方不再维护开源版本后,其他人分叉继续开发的版本。

资源

1、微软学习 TV[38]
微软官方的学习视频中心,有各种教程。
2、aww rated[39]
这是一个Netflix 评价网站,通过抓取 IMDb、metacritic、烂番茄、豆瓣等评分网站的数据,列出 Netflix 各种节目的评分。
3、Go 语言编程[40]
英文的免费电子书,DigitalOcean 发布的。
4、Just JavaScript 课程[41]
著名程序员 Dan Abramov 正在撰写的 JavaScript 教程,他还没有写完。只要在上面网址报名,每写好一部分就会通过邮件发给你。(@hacker0limbo[42] 投稿)
5、webRTC 执行流程演示[43]
这个网页演示和讲解,如何在无后端的情况下,通过 webRTC 建立双方的实时视频通话。(@nashaofu[44] 投稿)
6、Raft 共识的动画讲解[45]
通过一步步的动画,讲解 Raft 协议如何保证分布式集群的一致性,以及选举 leader 的过程。(@wzxJayce[46] 投稿)

图片

1、盲文的由来[47]
1786年,法国人 Valentin Haüy 发明了第一本凸起字母书,盲人和弱视的人通过触摸读书。
1831年,美国人塞缪尔·豪(Samuel Howe)的美国人受到浮雕字母的启发,发明了一种新的字体,更容易触摸识别,称为波士顿字型。
1932年,六个点的布莱叶盲文,成为国际标准,取代了具体的字母。
2、漫长的雨[48]
《漫长的雨》(The long rain,中译全文[49])是美国科幻小说作家雷·布拉德伯里(Ray Bradbury)1950年发表的一篇短篇小说。
它讲述四个宇航员因为火箭失事,来到一个不停下雨的星球。这个星球永远在下瓢泼大雨,过去10年一秒都没有停过。宇航员冒着雨水,在丛林里面穿行,拼命寻找前人修建的“阳光穹顶”,那里是一个大屋顶,有温暖的人造阳光,以及充足的食物和休息的场所。
小说的开头是这样的:
"大雨,永远的雨,升腾着汗水和蒸汽的雨。这是密集的瓢泼大雨,像鞭子一样打在眼睛上,飞溅到脚踝上。它是一场淹没其他所有雨水的雨,让人遗忘所有关于雨水的记忆。”

文摘

1、克拉马托尔核事故[50]
1989年,乌克兰克拉马托尔市 Hvardiytsiv Kantemyrivtsiv 大街7号公寓大楼的居民,向有关部门要求,立即检查该栋大楼是否存在核辐射。1980年到1989年,该楼前后有4人死于白血病。
检查发现,该楼的核辐射极高。最后确认,在85号和52号房间之间的那堵墙壁里面,有一个具有高度放射性的铯-137胶囊。
9年前,这个胶囊在一个采石场丢失,始终没有找到。现在人们知道了,这个丢失的胶囊混在石料里面,做成了混凝土,砌进了这堵墙。
九年的时间里面,两个家庭就在这堵墙旁边生活,其中有一个家庭的孩子的床就放在放射源旁边。事后统计,一共有17个人受到了严重的核辐射。
最终,这堵墙被拆除,铯胶囊由核研究所取出,并进行处置。
2、Linus 不再编程了[51]
2020年5月,Linux 基金会一年一度的峰会上,Linux 创始人莱纳斯·托瓦尔兹(Linus Torvalds)与 VMware 公司副总裁兼首席开源官 Dirk Hohndel 进行了对话。
Dirk Hohndel 问 Linus,现在的工作流程是怎样的。
Linus 说,我现在整天就是读 Email,写 Email,再也不编程了。
我现在写的大部分代码,都是在 Email 里面。某人给我发来一个补丁,或者一个 Pull Request,或者跟我讨论,我就写一段伪代码,不编译也不测试,发给对方看,然后在邮件里加上一句“我觉得应该这么写”。
我现在就干这些事,我不再是程序员了。
我每天读的 Email,要比写的多得多。因为我的工作说到底,就是拒绝其他人的代码。总是需要有一个人来拒绝其他人,其他开发者知道代码写得不好,会被我拒绝,就会更小心。为了能够有说服力地拒绝他人,我不得不知道事情的前因后果,否则我就不称职了。所以基本上,我的所有时间都用来读其他人的 Email,必须知道他们在干嘛……这工作很有意思,但是你不得不把大部分时间用来读 Email。
对于开发者,我希望大家不仅只是写出好的代码,还必须很善于解释自己的代码。代码的提交信息,对我来说,几乎跟代码本身一样重要。有时,代码的意图非常明显,不需要解释,但是这种情况极其少。我对开发者的一个希望就是,能够更好地解释他们的代码是干嘛的,为什么需要变更以前的代码。这样的话,我管理起来就比较容易,如果你能够解释清楚,我就能信任这些代码。
开源软件的一大部分其实是交流,而交流包括提交信息,也包括来来回回的 Email。告诉别人你想做什么,为什么原来的代码你觉得要改,真的是非常重要的一件事。

言论

1、
看到抽象的东西,应该尽量使它变得具体;看到具体的东西,应该尽量使它变得抽象。
-- 李敖
2、
创业公司不要专注于创造产品,而要专注于解决问题。
-- 《创业公司要创造客户不期望的产品》[52]
3、
创新型的创业公司,一开始的目标用户应该是对新产品最有兴趣的那2%的人群,并设法与剩下的那 98%的人建立一座桥梁,把那些人推向未来。
-- 《创业公司要创造客户不期望的产品》[53]
4、
NPM 现在有130万个软件包,绝大部分都不是长期维护的。即使你找到一个长期维护的软件包,它可能会有10层或更多的依赖,涉及其他数百个包,你根本不可能每一个都去验证。
-- 《NPM 生态系统令人担忧》[54]
5、
自从第一款游戏机问世,此后的每一款游戏机都出现了盗版。但是,这种情况已经结束了,Xbox One 和 PS4 已经上市了将近6年,没有任何黑客能够破解它们实现盗版游戏。这是游戏机历史上第一次持续了如此长的时间,没有出现破解和盗版。
-- Hacker News 读者[55]

回顾

2019年的本周(第 64 期):新人如何进入互联网行业?
2018年的本周(第 12 期):政府无法保障养老,必须靠自己

References

[1]
 ruanyf/weekly: 
https://github.com/ruanyf/weekly
[2]
 《谁在招人?》: 
https://github.com/ruanyf/weekly/issues/1315
[3]
 Instagram: 
https://www.instagram.com/p/CCDW-Z1l5BF/
[4]
 《DNA 隐私法》: 
https://www.washingtonexaminer.com/politics/florida-becomes-first-state-to-enact-dna-privacy-law-blocking-insurers-from-genetic-data
[5]
 起诉华大基因公司: 
https://www.huxiu.com/article/252310.html
[6]
 平流层飞船: 
https://www.geekwire.com/2020/space-perspective-reboots-vision-flying-passengers-stratosphere-balloon/
[7]
 官网: 
https://thespaceperspective.com/fly/
[8]
 AI 海滩救生系统: 
https://venturebeat.com/2020/06/26/sightbit-deploys-ai-on-beaches-to-help-lifeguards-spot-distressed-swimmers/
[9]
 加州大学旧金山分校支付赎金: 
https://gravitational.com/blog/how-to-ssh-properly/
[10]
 自动结算的购物车: 
https://www.instagram.com/p/CB-EdKKnWs8/?igshid=i4pqo65w8voq
[11]
 宝马汽车的付费加热座椅: 
https://www.cnet.com/roadshow/news/bmw-vehicle-as-a-platform/
[12]
 科学家: 
https://www.nationalgeographic.com/animals/2020/03/mouse-found-atop-volcano-highest-altitude-mammal/
[13]
 小米: 
https://www.researchsnipers.com/xiaomi-registers-new-sliding-camera-patent-to-increase-screen-to-body-ratio/
[14]
 英国科学家: 
https://www.cnn.com/2020/06/30/health/declining-eyesight-red-light-scn-wellness/index.html
[15]
 推特工程部门: 
https://twitter.com/TwitterEng/status/1278733305190342656
[16]
 中国电子书厂商 Onyx: 
https://old.reddit.com/r/Onyx_Boox/comments/hk7d5v/onyx_is_violating_the_linux_kernels_license/
[17]
 Vim 的由来: 
https://pragmaticpineapple.com/how-did-vim-become-so-popular/
[18]
 史上最难的定位挑战: 
https://nixintel.info/osint/using-flight-tracking-for-geolocation-quiztime-30th-october-2019/
[19]
 Makefile 的静态网站实现: 
https://metin.nextc.org/posts/The_Idea_Of_Makefile_Blog.html
[20]
 哈希算法的种类: 
https://pradeeploganathan.com/blockchain/hashing/
[21]
 React Hooks 的常见的错误写法: 
https://www.lorenzweiss.de/common_mistakes_react_hooks/
[22]
 字体反爬的攻与防: 
https://cjting.me/2020/07/01/douyu-crawler-and-font-anti-crawling/
[23]
 分页查询不要使用 OFFSET 和 LIMIT 语法: 
https://hackernoon.com/please-dont-use-offset-and-limit-for-your-pagination-8ux3u4y
[24]
 写给 JavaScript 程序员的 Rust 教程: 
http://www.sheshbabu.com/posts/rust-for-javascript-developers-functions-and-control-flow/
[25]
 Git 多行提交信息的简单方法: 
https://www.stefanjudis.com/today-i-learned/git-commit-accepts-several-message-flags-m-to-allow-multiline-commits/
[26]
 ward: 
https://github.com/B-Software/Ward
[27]
 httpsproxy2http: 
https://github.com/novalagung/httpsproxy2http
[28]
 jsonbase: 
https://github.com/Devs-Garden/jsonbase
[29]
 guietta: 
https://github.com/alfiopuglisi/guietta
[30]
 UIkit: 
https://getuikit.com/
[31]
 Zettlr: 
https://www.zettlr.com/
[32]
 Reabble: 
https://reabble.cn/
[33]
 @weijarz: 
https://github.com/ruanyf/weekly/issues/1327
[34]
 Midway Serverless: 
https://github.com/midwayjs/midway
[35]
 @czy88840616: 
https://github.com/ruanyf/weekly/issues/1328
[36]
 gitqlite: 
https://github.com/augmentable-dev/gitqlite
[37]
 honkit: 
https://github.com/honkit/honkit
[38]
 微软学习 TV: 
https://docs.microsoft.com/en-us/learn/tv/
[39]
 aww rated: 
https://awwrated.com/en/netflix
[40]
 Go 语言编程: 
https://www.digitalocean.com/community/books/how-to-code-in-go-ebook
[41]
 Just JavaScript 课程: 
https://justjavascript.com/
[42]
 @hacker0limbo: 
https://github.com/ruanyf/weekly/issues/1326
[43]
 webRTC 执行流程演示: 
https://nashaofu.github.io/webrtc-demo/
[44]
 @nashaofu: 
https://github.com/ruanyf/weekly/issues/1332
[45]
 Raft 共识的动画讲解: 
http://thesecretlivesofdata.com/raft/
[46]
 @wzxJayce: 
https://github.com/ruanyf/weekly/issues/1331
[47]
 盲文的由来: 
https://stitcher.io/blog/braille-and-the-history-of-software
[48]
 漫长的雨: 
http://www.samweller.net/bradbury-1/2018/11/29/the-essential-bradbury
[49]
 中译全文: 
https://www.sohu.com/a/337866552_771944
[50]
 克拉马托尔核事故: 
https://en.wikipedia.org/wiki/Kramatorsk_radiological_accident
[51]
 Linus 不再编程了: 
https://linux.slashdot.org/story/20/07/03/2133201/linus-torvalds-i-do-no-coding-any-more
[52]
 《创业公司要创造客户不期望的产品》: 
https://medium.com/@jproco/why-your-startup-needs-to-build-the-product-your-customers-arent-expecting-8d769054db53
[53]
 《创业公司要创造客户不期望的产品》: 
https://medium.com/@jproco/why-your-startup-needs-to-build-the-product-your-customers-arent-expecting-8d769054db53
[54]
 《NPM 生态系统令人担忧》: 
https://sambleckley.com/writing/npm.html
[55]
 Hacker News 读者: 
https://news.ycombinator.com/item?id=23657458
继续阅读
阅读原文