跟随,学习,进步

为什么总是需要无意义的 ID · Why's THE Design?

2019-12-06 12:17:00 Draveness

为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。


科技爱好者周刊:第 85 期

2019-12-06 01:37:04 阮一峰

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。 封面图:彩色公寓楼,土耳其伊斯坦布尔,英国《卫报》。 刊首语 最近,我看一个教授的讲座视频,介绍访问美国的感受。 他说,全世界的人都去美国,各种各样的人都有,有上层人,也有底层的难民。美国是世界最大的移民国家,三教九流,各种文化背景的人,你在美国都能看到。 美国这个国家很杂,奇怪的是,它不乱。按理说,那么多形形色色的人在一起,蛇鼠一窝,各自都有自己的小算盘,彼此冲突,应该乱成一团才对啊。但是,现实却是互相仇恨的民族,在那里都能共同生活,和平相处。美国社会不仅不乱,而且高度有秩序,社会运行井井有条,这是为什么? 教授认为,一个原因是美国的规则很简单,大家容易理解,社会运行的理解成本很低。美国社会的根本规则,一句话就能说完:政治上投票,谁的票多,谁掌权;经济上自由竞争,谁的产品好,谁赚钱。 基本规则就是这句话,很容易理解和执行,可操作性高。当然,次要规则很多,美国的法律体系是世界最复杂的,但都是为了保障主要原则的执行。全世界的人来到美国,只要理解了基本规则,就能理解美国社会的运作。大家都按照基本规则行事,协调和沟通成本低了很多,整个社会的运作就顺畅了,政府的管理成本就低了。 推广开来,个人和公司都可以借鉴这一点。人生的原则、公司的规则,不妨简单一点,这样可能活得更容易。 Vue 免费教学视频 Vue 是主流的 JavaScript 前端框架,国内有着广泛的应用,招聘需求一直很大。因为它上手相对简单,小项目马上可以见效,中文资料也多,所以往往也是新手入门的首选框架。Vue 的生态也非常繁荣,有许多配套的周边工具,被称为全家桶,比如 vuex、vue-router、element、elenent-admin 等等。 下面是两套 Vue 的免费教学视频,深入解读 Vue,帮助学习者深入掌握它的用法。这是国内领先的在线教育平台"开课吧",特别提供给我们周刊的读者。 视频一: 《一步到位 Vue 精讲》。内容包括:Vue 基础、Vue-cli 脚手架的使用、Vue-router 路由的使用、axios 和 webpack 用法讲解等。 视频二: 《Vue 源码剖析之整体流程》。内容包括:Vue 源码调试环境搭建、入口文件剖析、Vue 初始化流程分析、Vue 源码学习整体流程总结、数据响应化流程分析等等。 感兴趣的读者扫描下方二维码(手机端长按两次即可),就可以免费领取这两个视频教程。 资讯 1、蚯蚓塔 现在养狗的人很多。遛狗的时候,狗狗往往会在路上排泄,造成环境问题。上海松江的一个居民小区设置了"蚯蚓塔",专门处理狗粪,目前已有近10座。 蚯蚓塔主要用来让居民投放宠物粪便,也可以投放一些果皮。它的地下部分有20cm,工作人员会定期投放一些蚯蚓在塔周围,蚯蚓通过塔底下的孔钻进去吃掉宠物粪便。蚯蚓活动期间,不仅松弛了土壤,让土壤保持透水及透气,留下的蚯蚓茶(蚯蚓的尿液)和蚯蚓土(蚯蚓的粪便)还含有丰富的微生物以及氮、钾等养分,是非常好的天然肥料,可以滋养植物。 2、超滑马桶涂层 每天,全世界用于冲洗厕所的水超过1410亿升,与此同时很多地方水资源短缺。如果可以把厕所用水减少50%,就能节省巨大的水资源。宾夕法尼亚州立大学发明了一种生物涂层,可以喷在马桶内,具有清洁作用,能够明显减少冲洗马桶所需的水量。 这种涂层干燥后,会生长出像毛发一样的一层分子,然后再在上面注入一层薄薄的润滑剂,就能形成超滑的表面。有了超滑表面,马桶内就不会有残留物,因为都滑下去了,可以仅用很少的水冲洗。此外,这种表面能够有效驱除细菌,特别是传播传染病和具有难闻气味的细菌。所以不会有异味。这种涂料估计可承受约500次冲洗,然后需要重新喷涂。 3、铝箔气球 在社交媒体名人和网红照片的引导下,越来越多的人喜欢使用派对气球,即包有闪闪发光铝箔的气球。问题是,这种气球充有氦气,会向上飞,一旦碰到电线,铝箔可能会导致短路停电。 2019年10月1日,铝箔气球导致的短路使得南加州一个城市停电了半个小时。电力公司警告,这个问题目前毫无解决办法,整个2018年,铝箔气球在南加州造成了1,128次停电,比几年前增加了四倍。此外,铝箔很难降解,气球飘到野外会造成环境问题。 4、火星小屋 一家美国创业公司推出 3D 打印的森林小屋,全部使用玄武岩和生物聚合物打印而成,整个过程由机器完成,不需要工人现场施工。这个小屋是为了火星移民而设计的,因为玄武岩砂土是火星表面的主要材料。屋内的器具也可以用这种方式打印出来。 今年上半年,美国宇航局举办了一个火星住宅设计比赛,纽约一家建筑事务所得到冠军,作品就是这个小屋。现在,这家事务所把小屋的实物建造了出来,就在距离纽约不远的森林中。小屋高8米,面积为46.4平方米,现在可以在线预定住宿体验。 5、苏门答腊犀牛 马来西亚最后一头苏门答腊犀牛(上图),2019年11月23日死于癌症。自从2014年3月被捕捉以来,这头名叫伊曼(Iman)的雌犀牛就被发现患有子宫肿瘤,过去几年中多次大量失血,动物保护官员已经获取了她的卵细胞进行保存。此前在2019年5月,马来西亚的最后一头雄性苏门答腊犀牛也死了。 这种犀牛是唯一一种长有两只角的犀牛,也是现存最小的犀牛。它曾经遍布亚洲,在中国的华南地区长期存在,尤其是四川,但于1916年在中国灭绝。中医认为犀牛角是珍贵药材,这导致它现在是全球十大最濒危的稀有动物物种之一,目前只在印度尼西亚还存有几只。 6、直播换宿 日本福冈的一家小旅馆想出了一个新招:住宿费一晚只要100日元(相当于6.5元人民币),条件是在该旅馆的 Youtube 频道直播住宿过程。 直播时,只有睡觉时间可以关灯,卫生间和浴室不在直播范围,并且不得有色情内容。没有客人的夜晚,该频道就直播老板的办公室。频道上线一个月,已经有4位客人进行"直播换宿",频道订阅者达到1000人。 7、一句话新闻 美国一家医院发现不喝酒的病人发生了酒精中毒,检查以后才知道,病人的小肠和盲肠中居然有酵母菌,对吃进去的碳水化合物进行发酵,生成了酒精。 美国零售巨头 Costco 的网站在黑色星期五购物节的晚上,由于汹涌而入的访问者而当机,下线了16.5个小时,预计损失1100万美元。 国家网信办的最新规定:(1)人工智能生成的非真实视频音频,必须显著标识。(2)人工智能不得生成非真实新闻。 芝加哥大学每年的学费、杂费、书本费、食宿费和其他费用加在一起,两三年后估计将超过10万美元,成为美国第一所费用达到6位数的大学。今年,芝加哥大学的学费是5.76万美元。 美国加州修改法律,司机意外撞死或发现死亡的动物,可以带回家食用。加州公路每年约有20,000只鹿被撞死,不吃掉它们的肉有点可惜。 华为发布 ARM 架构的台式机主板,使用自家的 CPU 鲲鹏920。这块主板是不是可以直接装安卓系统? 伦敦一所大学的科学家开发了新的神经网络算法,可以识别出不同时间走过摄像头的同一个人。而且,这种算法的计算力要求不高,可以部署在摄像设备里面,不用部署在云端。下图每三张一组的照片,算法可以识别出是同一个人。 文章 1、HTTP 协议基础(英文) HTTP 是一个比较简单的协议,本文在不长的篇幅中,对它的基本内容做了一个完整介绍。(@weinberggithub 投稿) 2、铁的历史(英文) 长篇科普文章,有大量插图,介绍人类使用铁的历史。最早,人类从陨石中发现了铁,用它制造工具,从而进入铁器时代,然后逐步发现了铸铁和锻铁,直至近代的钢铁。 3、为什么会有非绿色植物?(英文) 植物依靠光合作用,将二氧化碳转变为糖,从而获取能量。完成光合作用的叶绿素是绿色的,所以大部分植物都是绿色。但是,有些植物完全不绿,它们怎么获取能量? 4、谁杀了滚动条?(英文) 现在有些桌面网页也学习手机,隐藏滚动条,这篇文章认为这种做法不好。 滚动条可以提示页面的长度,还提供了一个快速移动到页首或页尾的方法。你把它都隐藏掉,确实更整洁了,但对使用者(尤其是深入阅读的人)就很不方便。 5、我制作了一把智能椅子(英文) 本文使用大量照片,记录了一个美国少年如何在自己家里,制作一把智能椅子。他先从网上,用25美元淘了一个破沙发(上图),最终改装成下图的样子,可以接受指令进行远程操作。 6、MacOS、Windows、Ubuntu 性能比较(英文) 作者在同一台 MacBook Pro 上面安装 MacOS、Windows、Ubuntu 的最新版本,比较它们的性能。 7、代码移入数据库(英文) 作者说,这些年他一直在改变工作语言,1997年是 Perl,1998年是 PHP,2004年是 Rails,2007年又是 PHP,2012年是 JavaScript。每改一次,有些代码就要重写一次。但是,后台的数据库从来没有变过,那么为什么不把逻辑写进数据库呢? 8、手机网页避免使用 100vh(英文) 手机浏览器由于会自动显示/隐藏地址栏,所以网页如果设成高度为 100vh,会有一部分看不见,可以参考 CSS Tricks 和 Stack Overflow 的解决方法。 9、CSS 伪元素的罕见用例(英文) 本文介绍一些通过 CSS 伪元素实现的奇妙的网页效果。 10、备份软件比较(英文) 这是一个 Hacker News 的帖子,讨论数据备份软件的优缺点,主要是 Restic 和 Borg 的比较。 工具 1、幼儿密码 麦克斯是一个一岁半的小孩,经常在笔记本电脑乱按。父母就做了一个网站,用户可以随机获取一个他乱按的字符串,作为密码。 2、SingleFileZ 一个浏览器扩展,可以将网页和上面的静态资源打包成一个 zip 文件。 3、NitroShare 一个跨平台的文件分享软件,可以在同一个局域网里面不同系统的机器之间互传文件。 4、PostgREST PostgreSQL 数据库的一个扩展,为任意数据库添加 RESTful API 接口。 5、日本铁路通 国人开发的适合日本自由行的交通换乘 App,特点是全中文搜索显示,可一键切换查看日语站名,支持日本所有的地铁、电车、新干线,无广告。(@metromancn 投稿) 6、高铁通 爱好者开发的全国高铁 App,可以显示列车的实时位置,支持点选车站,显示列车信息等,无广告。(@metromancn 投稿) 7、在线屏幕录制 一个浏览器里面的在线录屏小工具。(@w3yyb 投稿) 8、加密信息写入图片工具 这个在线工具可以把隐藏文本写入图片文件。图片依然可以正常使用,并且外观不发生变化,用户不会发现里面隐藏了加密信息。(@w3yyb 投稿) 9、snapdrop 一个开源的文件分享服务,使用 WebRTC 协议进行点对点传输。 10、marktext 一个跨平台的桌面 Markdown 编辑器。 资源 1、hacker-laws-zh 这是一个中文仓库,收集对开发人员有用的定律、理论、原则和模式,比如摩尔定律、侯世达定律、墨菲定律等等。 2、seekbetter.me 该网站收录中国个人独立博客。(@wensonsmith 投稿) 3、OCR 教程(英文) 这组系列文章教你如何自己写一个 OCR(光学字符识别)系统,从照片识别出文字。 4、Node.js 编程最佳实践 该仓库收集 Node.js 编程的注意点,目前已经有80多条了。 5、全球生活费用排名 该网站提供全世界国家和地区的生活费用排名,每个国家还可以查看各个城市的排名,以及各种生活费用的具体金额。 图片 1、搭建一个帐篷住宅(英文) 组图,作者用照片记录了如何搭建自己的帐篷住宅。 2、狮人 狮人是一个人身狮头的象牙雕塑,高31厘米,宽5厘米,是迄今发现的历史最早的人类雕塑品,年代大约在距今4万年~5万年之间。 它是1939年在德国的一个洞穴发现的,当时只发现了身子,1970年代才发现了头。1987年,开始将整个雕塑拼了起来,大概完成了原貌的三分之二。背部严重受损,腿部部分缺损。耳朵、眼孔、嘴、鼻子、头后部,大致都保留了下来。 目前的样子是2013年完成的,让雕塑的高度从296毫米增加到311毫米。 文摘 1、俄罗斯的太空墓地 俄罗斯的拜科努尔(Baikurur)航天中心位于中亚的阿尔泰山区。这里是欧亚大陆的中心,崎岖而偏远,处于哈萨克草原、西伯利亚的雪林和蒙古干旱平原的交叉点。西伯利亚大羚羊在这里漫步,麝香鹿在春天跟随着融化的雪地远行觅食。 这里可能是地球上最偏远的地方之一,很少有公路可通行,但是它位于世界上最古老、最大、最繁忙的太空中心的主要飞行路线的下方。每次火箭发射的碎片都落在这些偏远的丘陵上,该地区的人们被迫在火箭废料中谋生。 拜科努尔航天中心建于1955年,人类的第一颗人造卫星Sputnik 1 就在这里发射,第一个进入太空的宇航员尤里·加加林(Yuri Gagarin)1961年也是从这里起飞。今天,它是全球各地太空任务的发射地,包括每月一次的商业、科学和军事发射。自从美国航天飞机退役以后,拜科努尔发射的俄罗斯联盟号太空舱就成了国际空间站(ISS)补给的唯一来源。 所有这些火箭在飞行时产生了大量的碎片。一颗重6.3吨的卫星进入轨道,需要重达700吨的四级火箭,这些助推火箭会分3个阶段从飞船上剥离下来,然后落到地球上。美国的火箭残骸都落在海洋里面,拜科努尔离海洋太远,火箭残骸就落在这片土地上。第一阶段的火箭残骸通常落在发射台周围90公里以内,第二阶段是在飞行了整整14分钟后,会落在阿尔泰山区周边的1000公里的范围内。 俄罗斯媒体估计 ,自1950年代以来,该地区已有超过2500吨的空间碎片掉落,其中一些碎片的长度达到10米。前苏联为回收助推火箭付出了巨大的努力,部分原因是担心泄漏机密。但是,自从苏联解体,这些碎片就没人管了,越来越多地留在哈萨克斯坦和阿尔泰山区的草地上生锈。 对于那些生活在飞行路线下方的人来说,发射已经成为他们熟悉的景象。一位居民说,碎片落下看起来"像是夜晚愤怒的红眼睛" 。然后是很大的雷声,"小地震"震动地面。为了安全起见,危险区域内的居民会在24小时内收到发射通知。但是,发生在危险区域以外的事故并非罕见。2011年,联盟号火箭发射失败,火箭落到地面时,仍充满燃料。尽管没有人受伤,但爆炸使得远在100公里外的窗户破裂 。 尽管许多居民担心每月一次的火箭发射带来的危险,但其他人则认为这是一个独特的机会。足智多谋的废品商人等待火箭发射的宣布,然后用双筒望远镜注视天空。他们跟踪碎片的路径,开吉普车甚至骑马到现场。除了使用焊接面罩以外,几乎没有防护装备,他们使用喷枪将宝贵的轻金属,钛和铝的合金以及其他有用的组件(例如铜线)从残骸剥落。 这是危险的工作。火箭零件坠地时经常仍在燃烧,释放出有害蒸气,并在干燥的草原上引燃野火。然而,该地区不发达的经济意味着额外的收入来源是必不可少的。居民会将部分火箭残骸带回自己的村庄,这构成了严重的危险。火箭燃料往往含有剧毒成分,回落到地面时可能仍有多达10%的燃料。化学物质和太空垃圾的扩散,进入食物和地下水,引起该地区日益严重的健康问题。 2、我们不知道要花多少时间解决问题 我在 IT 行业工作,发现一个奇怪的现象。 职业生涯的早期,我从事 Web 开发,比如开发 CRUD 应用、构建 API 等。我注意到,我的经理和更高层的领导都对项目时间有一定的期望,但实际上他们往往不具备评估项目时间的技术能力。如果我花费的时间,超过他们的期望,那么我就会有麻烦。 后来,我的领域转到了分布式计算,涉及集群管理、系统开发、高可用性、功能编程、分布式图形计算、数据科学等等。但是我发现,我的经理对项目时间的评估,与我以前进行简单的 Web 开发工作时大致相同! 他们一开始不会说。你先给出自己的估计,将任务分解为合理的块,并考虑不确定性因素和测试因素。但是如果你坐下来跟他们交谈,你会发现他们仍然期望你在几周内完成更多的事情。如果时间不够,他们会认为问题出在你身上,而不管问题的实际难度如何。我很惊讶,领导以为简单的 REST API 集成所需的时间,与开发一个实时事务性分布式计算集群所花费的时间相同。工程技术真的已经走到了这么远的地步吗?没有。 这些年来,我终于得出一个简单的结论:领导们对事情需要多长时间一无所知。 这些年来,软件工程并没有变得越来越简单,而是变得越来越复杂,因为我们正在解决越来越多的问题,将需要更长的时间来解决。但是,许多技术经理都秘密地相信,问题已经减少到拖放式解决的程度。结果就是,技术经理对实施时间的期望与程序员应该花费的时间之间存在巨大差距。程序员不得不继续推出用胶带浆糊拼凑而成的不可靠的解决方案,使之勉强能赶上截止日期,然后将其扔给运营团队,并在整个余生中为产品补漏洞,直到自己精疲力尽离职为止。 言论与数字 1、 星期天,我收到一封电子邮件,通知要在星期一早上开会。星期一,我被告知公司已经解雇我了,不要返回办公室,规定期限内不能为竞争对手工作。 我联系了工会,工会帮我将合同交给了一个非常昂贵的律师,他打了几个电话。第二周,我就被解除了竞业限制,并获得了7个月的免税薪水的补偿。 -- 《你是否受到过裁员的影响?》 2、 西北太平洋生成的热带气旋叫做"台风"(typhoon),其他海域生成的叫做"飓风"(hurricane)。 -- 《台风还是飓风?》 3、 不要构建系统,而要构建子系统。 这就像 Unix 哲学:每个工具做好一件事,不同的工具协同工作。 -- Jessitron 4、 一个人应该能够换尿布,策划战争,杀猪,开船,设计房子,写十四行诗,结算账户,砌墙,接脱臼的骨头,安慰濒死的人,服从命令,发布命令,携手合作,独立行动,解数学方程,分析新问题,铲粪,电脑编程,做出可口的饭,善打架,勇敢地死去。专业是昆虫学。 -- Robert Heinlein (海因莱茵,美国科幻作家)谈什么是通才 5、 推出一个新产品很难,组建一个能够持续推出新产品的团队更难。 我最引以为傲的产品,就是苹果公司和我在苹果公司建立的团队。 -- 史蒂夫·乔布斯 招聘信息 周刊讨论区的《谁在招人?》,有大量工作/实习岗位,欢迎查看。 如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 300 元。 1、 易路软件 易路软件聚焦企业人力资源 SaaS 领域,致力于以复杂薪酬计算为核心的"移动互联网+员工服务"研发及运营。工作地点:上海闵行区。 招聘前端工程师,参与公司产品研发,包括不限于 PC 端、H5、小程序、Node 服务。详细要求和联系方式看这里。 回顾 去年的本周:《周刊第 33 期》 订阅 这个周刊每周五发布,同步更新在阮一峰的网络日志、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年12月 6日


为什么基础服务不应该高可用 · Why's THE Design?

2019-12-01 14:59:00 Draveness

为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。


别让自己“墙”了自己

2019-12-01 11:10:21 陈皓

这一两周与几个朋友聊天,有年轻的90后,也有大叔级的70后,这些人在我看来都是很有能力的人,但是一些喜好过于强烈,让我不经意地回顾了我工作20年来身边的人,有发... Read More Read More

tags: 杂项资源,职场生涯,Programmer,程序员


科技爱好者周刊:第 84 期

2019-11-29 01:20:35 阮一峰

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。 周刊讨论区的帖子《谁在招人?》,提供大量就业信息,欢迎访问或发布工作/实习岗位。 封面图:集装箱公寓大楼,南非约翰内斯堡,图片来自 Reddit。 刊首语 每次看到 IT 公司的招聘广告,我往往有一种感觉,很多工作是一次性工作。所谓"一次性工作",就是企业用完人之后,就会把人裁掉,就像一次性筷子一样。 IT 竞争太激烈,市场和技术变化太快,企业都是敏捷开发,要求项目快速见效,招聘都是为项目服务的。校招可能还有储备人才的考虑,社招完全是项目导向,要么是旧项目补充人手,要么是新项目组建团队。 因为大部分项目最后都会失败,所以项目扩张补充人手是少数情况,大多数情况是为筹备新产品或新方向招人。这时,企业也没有把握,新产品或新方向能不能活,能活多久。招人的首要目的是先把东西做出来,交给市场检验。如果项目活下来了,工作岗位就是长期岗位;如果项目活不下来了,就是短期岗位。 项目没了,招来的人自然就没用了,要么内部转岗,要么就裁掉。大家应该有一个清醒的认识,现在的企业招人,并不会对你有一个三年五年的培养计划,你能不能留下来,一方面取决于你是否表现出良好的即战力,另一方面取决于市场是否认可你所在的项目。这两个条件,只要有一个没满足,你的工作就悬了。 在我看来,很多企业的招聘策略,完全是一次性的。项目需要用人,我就招人,而且是大量招人,短期内把产品做出来。然后,要是市场反响不好,项目活不下来,那就赶快做下一个项目,现有人员如果不合适转岗就走人,空出来的位置继续招新人。 这方面,大公司也没有比小公司好多少,大家要这样想,BAT 现在的每个位置都是有人的,他们要招新人,一定是找你去干内部找不到人干的事情。什么事情是 BAT 内部找不到人干的事情?太难太苦活太多,无非就是这几种情况,再加上严格的考核制度,你经历"一次性岗位"的可能性也许比小公司更大。 前端学习资料免费领 今年只剩最后一个月了,春节后一般会有招聘高峰。有计划跳槽换工作的朋友,可以开始有针对性地准备了,对那些面试的热门知识点加深学习。 前端开发依然是 IT 就业的大头,下面是两份对于面试很有帮助的前端学习资料,完全免费。这是国内领先的在线教育平台"开课吧",特别提供给我们周刊的读者。 第一份资料是 《2019 WEB 面试题系列:ES6 专题》 。这是一个视频讲座,主要深度讲解 ES6 类、类的继承,类的用法等等。内容都是前端面试的高频考察知识点。 第二份资料是 《前端开发语言:TypeScript 实战》 。现在,大型项目开发一般都会优先考虑 TS,使用静态类型保证项目质量。这份资料从新建一个项目开始,手把手教你完成 TS 的安装、类型检查、接口、泛型等每一个关键步骤,最后使用 TS 语言编写一个真实的 Vue 项目。 本次资料领取的免费名额,一共只有499名。感兴趣的读者抓紧扫描下方海报中的二维码领取。 资讯 1、欧洲 IPv4 地址用光 11月25日,欧洲 IP 地址注册机构 RIPE 宣布,欧洲的 IPv4 地址全部分配光了,一个也没剩下,从此没有新的 IP 地址可以分配。为了纪念这个历史时刻,全体人员合影留言(上图)。 此后,该组织要分配 IPv4 地址,只有等待破产或关闭的团体交还已用的地址,才能再分配。解决全球 IP 地址不足的根本办法,是尽快向 IPv6 过渡。全球一共有5个组织负责分配 IP 地址,RIPE 负责下图黄色的区域。 2、宽屏转换 Disney + 视频订阅服务11月初发布后,影迷发现动画片《辛普森一家》变成了16:9宽屏。第20季之前,《辛普森一家》的原始长宽比是4:3(下图一)。 迪斯尼公司这一次除了提升分辨率,还裁去了一些画面,统一将其转成了16:9(下图二)。迪斯尼已经同意,另行放出4:3版本,影迷可以自己选择看哪个版本。《辛普森一家》一共30季,从第20季之后,原始播放的就是16:9版本。 3、数字服装 BBC 报道,旧金山一家区块链公司的 CEO 理查德·马(Richard Ma),花了9,500美元为妻子买了一件衣服。这件衣服不是实体的,而是数字的,不能在现实生活中穿,只能穿在社交媒体发布的照片上(上图)。 这位 CEO 说:"这衣服确实非常昂贵,但这也是一项投资。未来10年里,每个人都将'穿着'数字的时尚服装。这会是独特的纪念品和时代的标志。"根据他的预测,未来人们会有专门设计的数字服装,让你在社交媒体上拥有独一无二的装饰。数字服装往往是超现实的设计,现实中很难实现。数字服装还可以买卖和转让,因此有投资价值。 瑞典的一家公司从去年开始,就已经在发布数字服装,起价约为11美元一件(下图)。 4、世界最长的航班 澳大利亚地处南半球,前往北半球任何一个主要城市,都非常遥远。澳大利亚航空公司正在进行一系列实验,评估是否能够开行更多的超长航班。10月18日,澳航测试了悉尼----伦敦航班,空中飞行时间为19小时19分钟,如果开行将是世界最长航班。 乘客这么长时间的久坐不动,很可能对健康产生影响,比如产生静脉血栓。澳航想了很多办法,减少久坐产生的厌倦和疲惫。起飞后马上提供晚餐,然后很快熄灯,意在使乘客入睡。乘客醒来后,允许在飞机上绕圈行走,并进行伸展运动。该航班只搭载50个乘客,所以比较空,有利于乘客走动。等到日出的时候,邀请乘客离开座位,到舷窗观看。 澳航将在今年底决定,是否开出更多的远程直达航班。一旦决定开行,航班将在2022年前正式启运。 5、哥本哈根垃圾发电厂 丹麦首都哥本哈根新建的垃圾发电厂,通过焚烧垃圾发电,是世界上最绿色的发电厂。它的表面是巨大的玻璃结构,看上去就像绿色山峦。顶部是一个大斜坡,建有滑雪缆车,可以滑雪。建筑物内部还有玻璃电梯,让游客观察垃圾如何为22万户家庭发电,整个工厂可以只由2名工程师操作。 哥本哈根附近没有山,居民要去滑雪,都要去很远的地方。现在有了这个发电厂,市内就可以滑雪,每小时收费22美元。游客还可以在建筑物最高处的餐厅和酒吧放松身心,或在大屋顶远足和漫步。它甚至具有世界上最高的攀岩墙-高85米。 6、太阳能发热 太阳能一般用来发电,但是比尔·盖茨正在资助一项新计划,尝试将太阳光转为超过1000℃的热源,用来替代化石燃料。 该项目使用软件操作大量镜子,把阳光反射到目标上,产生1500度的温度,是以前的商用太阳能系统的三倍。高温用来分解水分子提取氢气,再把氢气用作燃料。高温也可以用来制造水泥,减少传统燃料的消耗。 7、雇主最欢迎的技术技能 美国一家招聘网站统计了,过去五年招聘岗位的技能要求。提到最多的前十位技能如下:SQL、Java、Python、Linux、JavaScript、AWS、C++、C、C# 和 .net。 不过需求增长速度最快的技能,排名完全不一样:docker、azure、机器学习、aws 和 Python。 8、一句话新闻 一项研究发现,长期暴露在发光二极管(LED)的蓝色光谱中,果蝇会加速衰老,并且大脑出现神经性病变。所以,人体尽量避免长时间照射 LED 蓝光。 澳大利亚将使用高速公路摄像头,辨识一边开车一边使用手机的司机。 特斯拉发布电动皮卡,最低售价4万美元。由于外观完全采用直线条,这车看着有点像装甲车,而不像小卡车,车身后部的车斗是隐藏的。确实像车名 cybertruck 所提示的,有朋克的感觉。目前,特斯拉的产品线越来越全了,已经有了轿车、卡车、皮卡,下一个会发布新的跑车。 世界最大的风力发电机开始在荷兰安装,叶片长度为107米,为世界最长,超过此前的纪录15米。 谷歌团队公开了 Pixel4 XL 拍摄的银河照片,未经任何处理。下面一张是谷歌的样张,另一张是华为 P30 Pro 的样张(背景过亮的那张),明显是谷歌效果较好。更多夜拍样张。 文章 1、 DNS 基础知识与 dig 命令(英文) 本文讲解 DNS 的基本知识,然后用 dig 命令演示如何获取 DNS 信息。 2、C++ 创始人 Bjarne Stroustrup 访谈(英文) 编辑访问 Bjarne Stroustrup,请他谈谈怎么发明 C++,并且回答 StackOverflow 上面得票最高的5个 C++ 问题。 3、恶意的 SSH 访问分析(英文) 暴露在互联网上的服务器,每天都会收到大量的恶意 SSH 登录请求。作者分析了自己服务器的98万次 SSH 日志记录,看看能发现什么。 4、Elm 开发教程(英文) 本文很长,介绍 Elm 语言的语法知识,如何用它写一个网页应用。 5、AWS 的数据迁移费(英文) 亚马逊云服务 AWS 的费用包含一项"数据迁移费"(data transfer)。本文分析 AWS 头部客户的这项费用,可以借此了解云服务的付费情况。 6、贫铀对伊拉克儿童的影响(英文) 贫铀是铀浓缩过程的副产品,带有放射性,用于炸弹可以刺穿装甲。美军在伊拉克战争中大量使用贫铀弹,造成了无法清除的严重污染,使得许多新生儿有先天畸形。 提醒,谨慎打开上面链接,本文带有畸形新生儿的照片,会让人不适。 7、钴元素在电池的应用现状(英文) 本文是一篇新闻报道,详细介绍钴元素的应用和开发现状。锂电池的阴极目前采用钴元素的效果最好,这导致钴价飞涨,很可能会影响电动汽车的普及速度。世界三分之二的钴产量来自刚果民主共和国。 8、Web 图标指南(英文) 本文介绍四种常用的图标解决方案:CSS Sprite、图标字体、内嵌的 SVG 图像、SVG 文件。 9、Swift 学习数据科学指南(英文) 数据科学通常使用 Python 语言,但是其他语言也可以。本文从零开始教你使用 Swift 语言来做数据科学项目。 10、Web 缓存投毒攻击(英文) 访问网页,大多数时候都要通过缓存服务器,CDN 就是一种缓存。有可能做到缓存服务器投毒,从而使得网站无法访问,本文介绍它的原理。 11、我用AI机器人留住去世的父亲(中文) 上周,我推荐《连线》杂志的这篇长文。儿子得知父亲晚期肺癌以后,进行谈话录音,把内容做成一个对话机器人,父亲去世后还能跟他对话。当时我说,希望文章能有中文版。真有网友翻译了,而且译得很好,我再次读依然感动。我们太强调技术胜过人,但技术也可以有人性。 工具 1、aimAndShoot 一个纯概念的开源网页射击游戏,具有神经演化功能,软件会根据玩家的反应,对敌人进行增强,直到玩家失败。 2、Chrome remote desktop 谷歌推出了远程桌面软件,可以在手机和桌面浏览器里面,访问远程电脑的桌面,进行各种操作。 3、CustomAnim 这个网站可以将用户输入的文本,渲染成一段微粒的动画,支持中文。缺点就是后台资源有限,玩的人一多,就要排队等。 4、onefetch 这个命令行工具可以显示 Git 仓库的信息。 5、Daily-warm 一个 Go 语言脚本,每天向指定邮箱发送一封邮件,里面是天气、名言、诗歌。(@BarryYan 投稿) 6、leonsans 一款用 JavaScript 脚本绘制的英文字体,只要网页插入脚本,就能使用这个字体,即字体使用脚本画出来的,特别适合制作字体动画。(@rolitter 投稿) 7、snake-go Go 语言写的命令行贪吃蛇游戏。 8、dn 一个非常简单的命令行笔记脚本,可以写入/读取笔记。所有代码就是十几行 Bash 命令。 9、hr-code QR 码本质是机器可读的字符串,主要缺点是人类无法辨识。现在有人提出了一种新的QR码,机器和人类都可读。缺点就是如果字符很多,码图就会很大。 10、SearX SearX 是一个开源的搜索代理,可以自己架设谷歌实例,查看 demo 和实例列表。 资源 1、 The GAN Zoo 对抗生成网络(GAN)是人工智能模型提高效果的一种方法,该仓库收集各种领域的 GAN 应用模型,目前已经有500多种。 2、统计小手册 一本针对初学者的统计学英语教材,内容比较精简。 3、中文独立博客列表 该仓库根据 feedly 的 RSS 订阅数,列出了主要的中文独立博客。(@timqian 投稿) 4、微软 Azure 架构设计文档(英文) Azure 云服务的文档,专门讲解架构知识,包括架构模式,设计原则,设计模式等。(@NeoTse 投稿) 5、滚动条的演进 这个网页展示自从有计算机以来,系统滚动条的样式变化。 6、gov-takedowns GitHub 有一个官方仓库,收录政府的来函,要求取缔某些内容。现在里面有三个国家的政府来函:中国、俄国和西班牙。所以,放在 GitHub 上的东西,可以合法地被政府拿掉。因此不要在 GitHub 乱放东西,尤其考虑到 GitHub 的老板是微软。 图片 1、巴拿马运河 下图是1881年法国在开挖前提出的巴拿马运河示意图,连通大西洋和太平洋。 下图是实际的巴拿马运河。 2、木柴汽车 二战时,欧洲的汽油都用于战争。很多民用汽车得不到汽油,只能加装锅炉,使用木柴驱动的内燃机。 3、Chrome 恐龙模型套装 Chrome 浏览器每当断网时,会出现一个恐龙游戏,比喻回到了洪荒时代。 谷歌总部的纪念品商品有实物出售,网上订购价格30美元一套。 文摘 1、莴苣香烟 香烟由烟草制成,含有伤害健康的尼古丁。1959年,化学家普赞特·托里吉安(Puzant Torigian)想到可以用其他植物的叶子,制造无尼古丁的香烟。 他系统地测试各种不同植物的叶子,包括羽衣甘蓝、葡萄、卷心菜、大头菜、菠菜、胡萝卜、花生、番茄和甜菜。最后,他认为最好的替代品是莴苣,它的叶子可以像烟草一样燃烧,但没有尼古丁,也没有生物碱,无毒,并且焦油和氨的残留量比烟草低。 他在家乡得克萨斯州赫里福德市找到了一群投资者,于1965年推出了莴苣香烟 Bravo Smokes。 结果市场反响非常差,用户评论:"就像抽老袜子一样"、"比抽咖啡渣还差"。该公司调整了销售方向,专门向试图戒烟的烟民销售。那些人改不掉吸烟习惯,但希望抽没有尼古丁的东西。 但是没有用,1972年 Bravo Smokes 倒闭了。 2、告别快时尚 很多人追求时尚服装,每一季甚至每个月都更换新服装,每套衣服穿的次数越来越少。这被称为"快时尚"。根据统计,人们消耗和丢弃的衣服,比以往任何时候都要多。每次购买新衣服的时候,消费者就把上一季过时的衣服扔掉。 2015年,美国一共产生了1,190万吨的纺织废料,平均每个美国人34公斤,很多衣服都没穿过几次,它们大部分最终被填埋。相比1960年,这个数字增长了750%以上,是同期人口增长速度的10倍。 H&M、Zara 这些快时尚品牌的崛起,直接导致了服装浪费的增长。快时尚的商业模式就是大量销售低价服装,然后鼓励消费者尽快扔掉过时的服装,不停购买当季流行,以获得新的外观。例如 Zara 公司每年发布 20,000 种新设计,不停推出新系列,不再是传统的冬季/秋季和夏季/春季少数几种系列。 咨询公司麦肯锡公司调查发现,从2000年到2014年美国服装产量翻了一番,同期普通人每年购买的服装数量也增加了60%。另一项研究发现,人们购买的快时尚品牌服装,很少穿着超过10次。 社交媒体上,流行的观念是,你只要发过一次这套衣服的照片,就不能再发穿它的照片了。根据一项调查,英国 9% 的购物者承认,自己为能在 Instagram 发照片而购买衣服,等到在网上发布自己穿着该衣服的照片后,他们就将衣服退回商店。 面对这种现实,"慢时尚"的概念在过去十年中开始出现了,作为对"快时尚"的一种平衡。它的出发点是,放慢服装消费的速度,购买更少的服装。环境人士已经发出警报,旧衣服对环境的负面影响,无法通过垃圾填埋场消除。纺织品的制造、染色和处理都会用到很多有害的化学物质,服装和鞋类生产而导致的温室气体占全球温室气体排放量的8%以上。 下一次,你决定购买一件衬衫或一双鞋时,请问一下自己:我真的喜欢它吗?它合适吗?我会穿很多次吗? 言论与数字 1、 特斯拉汽车的自动驾驶可以挽救数百万人的生命,但它可能首先会造成一些人的死亡,然后才能达到这个目标。 -- 彭博社 2、 明显的 UI 通常是最好的 UI。 -- Medium 文章 3、 推特公司有4000个员工,全世界35个办公室。 -- 推特年报。推特上市之前的2012年只有200多个员工,上市之后人员膨胀了十几倍。全世界35个办公室,出差和协调成本该有多高,怪不得这家公司股价一直上不去。 4、 2005年的一天,伊利诺伊州的一位母亲注册了 Flickr,上传了自己孩子的一些照片,然后忘记了这个帐户的存在。 多年以后,这些孩子的照片被发现存储在一个数据库中,用于训练世界最复杂的一些人脸识别的智能系统。 -- 《纽约时报》 5、 1860年,人们还不知道细菌感染。只要你住进医院,就有12%的可能死亡,50%的可能截肢。 -- 《巴斯德的贡献:细菌的发现者》 6、 内布拉斯加州最大的家具市场是一个95岁的老太太开的,巴菲特收购了,让老太太退休。 老太太发现,巴菲特没让她签竞业条款,就在马路对面又开了一家家具市场。巴菲特只好把新的家具市场也收购了,并签了竞业条款,这一年老太太97岁。 -- 维基百科 回顾 去年的本周:《周刊第 32 期》 订阅 这个周刊每周五发布,同步更新在阮一峰的网络日志、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月29日


技术文章配图指南

2019-11-27 15:26:00 Draveness

这可能是一篇很多博客的读者都期待的文章,我最终还是决定说一说『如何为技术文章配图』这一话题,过去的几年一直都有非常多的读者在博客、微博和公众号下面提出这样的问题 —— 『你的图是用什么工具画的?』,对于这种问题我我一直都很少回复,一方面是因为我在博客下面其实已经写明了画图工具:


如何识别文件的真假

2019-11-26 09:01:35 阮一峰

每个人都下载文件,大家有没有想过,文件可能是假的,尤其来自网盘或专门的下载站。 本文就来谈谈如何识别文件的真假。 一、XcodeGhost 事件 我们从一件真实的事件说起。 2015年9月,苹果手机的一些 App 被发现向可疑网站发送数据。进一步调查确认,可疑代码是 Xcode 打包时植入的。也就是说,开发者的编程工具 Xcode 被动过手脚了。 腾讯的安全团队公布调查报告,应用商店的前 5000 名应用有76个被感染。360 应用商店检查后发现,共有1076个 App 被感染,包括微信、网易云音乐、滴滴打车、高德地图、12306、同花顺等热门应用。苹果公司将所有被感染的版本,都从官方软件商店下架了。这个事件就称为 XcodeGhost 事件。 国家互联网应急中心专门发出了预警通知。 追查下去,那些动过手脚的 Xcode 都不是从官方渠道下载的,而是来自网盘或下载站。一个网名"coderfun"的人,在各种 iOS 开发者论坛或者微博留言,引诱其他开发者下载修改过的 Xcode,版本从 Xcode 6.1 到 6.4。 事后,这位 coderfun 发出致歉公告,表示这只是自己的一次实验,没有恶意。但是,这个事件足以引起警惕,任何下载的文件都不一定安全,很可能被修改过或植入恶意代码。 二、软件的防伪措施 为了防止来源不明的软件,很多平台都有签名机制。软件发布必须由认证过的开发商,使用平台的密钥签名。如果用户安装未签名的软件,平台会弹出警告,阻止安装。下面就是 MacOS 的警告。 但是,不可能所有开发者都去认证,尤其是认证要收费。而且,用户对这种警告不在乎,一般都会忽略或手动关闭。所以,这种做法的效果不明显。 目前的常用做法是,软件发布时,同时给出哈希码和签名文件。前者保证没有被第三方修改,后者保证确实出自原始作者。 举例来说,Linux 的发行版 Manjaro 除了提供原始的 iso 文件,还提供另外三个文件:sha1 哈希文件、sha 256 哈希文件和 sig 签名文件。 它们保证了软件的真实性。 三、哈希码验证 哈希码指的是,文件内容经过哈希函数的计算,会返回一个独一无二的字符串。哪怕原始内容只改动一个字节,哈希码也会完全不同。用户下载软件后,只要计算一下哈希码,再跟作者给出的哈希码比较一下,就会知道软件有没有被改动。 目前,常用的三种哈希函数是 MD5、SHA1 和 SHA256。其中,SHA256 最安全,SHA1 次之,MD5 垫底。一般来说,软件至少会提供其中一种哈希码。 下面是哈希码的验证方法。 (1)Linux 系统 Linux 系统直接用md5sum、sha1sum、sha256sum这三个命令,计算哈希码。 $ md5sum foo.zip $ sha1sum foo.zip $ sha256sum foo.zip 上面命令返回文件foo.zip的三种哈希码。用户再跟作者给出的哈希码比对。如果不一致,文件就是被改动了,或者没有完整下载。 有时,就像前面 Manjaro 的例子,哈希码不是写在网页上,而是作为一个单独的文本文件下载。这时可以使用-c参数。 $ md5sum -c foo.zip.md5file $ sha1sum -c foo.zip.sha1file $ sha256sum -c foo.zip.sha256file 上面命令会返回哈希码的比对结果,直接告诉用户是否一致。 (2)Mac 系统 MacOS 的验证命令需要自己安装。 $ brew install md5sha1sum 执行上面命令以后,md5sum 和 sha1sum 就可以使用了。至于 sha256sum 要用 shasum -a256 命令代替。 (3)Windows 系统 Windows 可以下载安装免费软件 Quick hash 或者 Raymond's MD5 & SHA Checksum Utility。其中,Quick hash 是跨平台的,还支持 Linux 和 MacOS。 四、签名验证 哈希码只能保证文件内容没有修改,但是哈希码本身也有可能仿冒,完全可能连带原始文件一起造假。 文件签名能解决这个问题。软件发布时,作者用自己的私钥,对发布的软件生成一个签名文件(Manjaro 例子的 sig 文件),用户使用作者的公钥验证签名文件。 第一步,下载公钥。 软件的官网一般都会给出作者公钥的下载方法。比如,Manjaro 就可以从 GitHub 仓库下载公钥。 $ wget github.com/manjaro/packages-core/raw/master/manjaro-keyring/manjaro.gpg 公钥也有可能放在专门的公钥服务器,这时可以使用gpg命令在从公钥服务器下载。 $ gpg --keyserver hkp://eu.pool.sks-keyservers.net --search-keys [公钥 ID] 上面命令会列出搜索结果,让你选择是否下载某一个公钥。--keyserver参数指定公钥服务器,search-keys参数给出搜索参数,可以是作者的名称,也可以是公钥的指纹。 gpg命令在 Linux 下可以直接使用,MacOS 和 Windows 需要安装 GnuPG。 第二步,导入公钥。 下载得到公钥后,将其导入操作系统。 $ gpg --import [公钥文件] 如果有完整的公钥指纹,gpg 命令的 --recv-key参数可以直接从服务器导入公钥。 $ gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-key "27DE B156 44C6 B3CF 3BD7 D291 300F 846B A25B AE09" 第三步,验证签名。 导入公钥以后,就可以验证签名文件(后缀名为 sig的 文件)了。 # 用法一 $ gpg --verify [签名文件] # 用法二 $ gpg --verify [签名文件] [原始文件] 上面命令的两种用法,效果是一样的。但是,用法一要求原始文件与签名文件同名,且在一个目录下。比如,签名文件是foo.iso.sig,原始文件必须是同目录下的foo.iso。 签名文件一般包括完整的公钥指纹,所以也可以跳过上面的第一步和第二步,直接从公钥服务器获取公钥,验证签名。 $ gpg --keyserver-options auto-key-retrieve --verify [签名文件] (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月26日


Istio是啥?一文带你彻底了解!

2019-11-22 02:12:46 周文洋

如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯

tags: DevOps,公司博客,容器和Docker,软件工程


科技爱好者周刊:第 83 期

2019-11-22 01:17:16 阮一峰

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。 周刊讨论区的帖子《谁在招人?》,提供大量就业信息,欢迎访问或发布工作/实习岗位。 封面图:黎巴嫩首都贝鲁特,环卫工人罢工,垃圾无人清理。图片来自 Reddit。 刊首语 TechCrunch 创始人迈克尔·阿灵顿,最近说了一句话: "我来到推特以后,才发现不管怎么沟通,一半人总是会讨厌另一半人。" 我理解他的意思。人与人的对立,原以为是互相不了解造成的。互联网拉近了人们的距离,让我们彼此更了解,所以理论上,互联网应该减少对立。 结果不是这样,人们依然对立。而且由于距离变近了,冲突更多更直接了,变得更讨厌对方了。 所以, 不能对技术的正面作用估计过高,尤其不能期待技术会改变人性。不过,我们还是需要宽容和合作,现在世界有这么多问题,尤其是环境污染和气候变迁,都需要全人类的合作。否则,我们无法解决问题,到来头可能会被问题解决。 最后,这几天我常常在想, 这个十年只剩下了最后一个月,二十一世纪10年代马上就要过去了,这个十年期我到底做了哪些事情,达到了十年前我对自己的期望吗。 前端全栈精英班 本周的培训信息是向大家介绍,来自北京京程一灯的《前端全栈精英班》。 前端的覆盖范围其实很广,所有跟用户直接交互的界面技术,都可以算前端。一般的培训往往只注重一个方面,比如 Web 端或手机端。《前端全栈精英班》这个培训的特色就是全面,涵盖了大前端的各个领域。下面是讲课体系图(点击看大图),内容相当多。 课程会涉及 JavaScript 语言新发展、Vue 源码分析、前端持续集成方案、MV* 框架深度分析 、前端图形学、NodeJS 大规模站点架构等多个专题,兼具深度和广度,目标是培养学员成为真全栈! 京程一灯创办于2016年,目前和腾讯课堂联合运营,是腾讯课堂前端 TOP 机构之一。毕业生平均薪水可以达到25.5K。 该课程现在开放 7天免费试学名额,仅88个名额, 微信扫码下面的二维码进群报名即可。 成功进群后,还会免费赠送 Webpack 全系列教程《手把手带你成为 Webpack 头号玩家》,攻克Webpack! 资讯 1、北极代码地窖 GitHub 宣布,为了把开源软件留给子孙后代,将在2020年2月2日为所有公共存储库生成快照,保存在北极一个地下250米的废弃煤矿。快照储存在一种特殊胶片上,寿命高达1000年。 它在 Youtube 上面放出了一段现场视频(微博镜像),简直就像科幻电视剧一样。 2、储存数据的玻璃 微软和华纳兄弟电影公司合作,成功地在一块玻璃上储存了1978年的经典电影《超人》。这块玻璃是透明的,光通过照射在玻璃上读取数据,玻璃的大小约为7.5厘米 x 7.5厘米,厚度为2毫米。上图左侧是原始的电影胶片,右侧是保存同样数据的玻璃片。 这种玻璃内部有一个纳米级的数据层,通过光栅的各种深度和角度的变形,达到储存数据编码的目的。由于玻璃的成本很低,这个项目的主要目的是延长数据的保存期限,玻璃比其他材质能保存更长时间,可以达到几个世纪。 3、短信故障 11月6日的凌晨,成千上万的美国人收到了今年情人节的一条短信。也就是说,8个多月之前的短信被重新发了一遍,收信人重新收到了那时别人发给自己的短信。这产生了许多令人尴尬的情况,有些恋人已经分手了,有些人已经不再是朋友了,还有人收到了2月份之后去世的亲人的短信。 第二天,美国社交媒体上面,都是用户的抱怨和困惑。这个事故的影响范围遍及所有四家电信服务商(T-Mobile、AT&T、Sprint 和 Verizon),也不分安卓和苹果手机,主要原因是为大型电信公司提供服务的软件商 Syniverse 出了故障。 Syniverse 已经在网站上,向16.8万名受影响的客户发出道歉信,保证问题已得到解决,不会再次出现。但是,用户现在要求解释,为什么电信公司储存用户的短信。 4、鲸鱼监狱 2018年10月,绿色和平组织发现,俄罗斯远东地区的四家国有公司,违反国际条约,捕捉了90头白鲸和11头虎鲸,均未成年,饲养在几个很小的池子(上图),准备进行商业销售。媒体把这些池子称为"鲸鱼监狱"。 经过俄罗斯政府的调查,最终决定将这些鲸鱼全部放生。2019年11月6日,最后一批13条鲸鱼被运到日本海,放入大海。 5、谷歌云游戏 11月19日,谷歌的云游戏服务 Stadia 正式开放。它最大特点是游戏画面的渲染和计算都在云端完成,通过网络传输给用户,用户本地不需要购买昂贵的游戏主机设备,也不需要本地安装,点进去就能玩。费用是每月10美元,目前有几十个游戏可玩, 这种游戏模式要求巨大的网络带宽,以及极小的网络延迟,否则用户按下按钮就不能实时看到结果。这意味着用户不能离机房太远,这是推广这种模式的最大障碍。 已经有用户在网上反映,由于延迟太大,射击类和战斗类游戏几乎没法玩,可能只有一些进展缓慢的游戏才适合这个平台。但是,手机端表现不错,而且传统的主机游戏可以直接在手机上玩,这很可能是它的最大卖点。 6、中国最大垃圾填埋场满了 西安灞桥的生活垃圾填埋场,是中国最大的垃圾填埋场,占地面积超过1000亩,相当于100个足球场。该填埋场1994年建成,原计划使用50年,结果提前20年填满了,今年8月垃圾堆积到将近150米(约50层楼高)。这样的高度已经达到了垃圾堆高的极限,如果不封场,继续再加高堆砌,垃圾填埋场的运行风险将急剧增加。 西安市近期将关闭这个填埋场,原址逐步改建为生态公园。新的垃圾将通过分类,进行焚烧处理。 7、中国的火星探索 中国国家航天局透露,2020年将实施中国的第一次火星探测任务。 这次任务将实现火星环绕和着陆巡视,即会有火星车着陆,开展火星全球性和综合性探测,并对火星表面重点地区精细巡视勘查。上图是河北怀来的亚洲最大的地外天体着陆综合试验场,正在进行火星着陆器悬停避障试验。 8、一句话消息 美国法院判决,LinkedIn 不得阻止其他公司抓取公开的成员信息。 普林斯顿大学的研究生入学,不再统一要求 GRE 成绩,而是把这个权力下放各系所。明年入学申请,将有14个专业不需要 GRE 成绩就能申请。 专家表示,印度人很快会变成"水难民"。全国一半的州缺水,21个主要城市已经耗尽了地下水。 密码管理器 1Password 从风投筹集了2亿美元。著名程序员 DHH 公开表示担忧,1Password 现在至少必须变成10亿美元估值的公司,才能让这么多风投得到回报。一个密码管理器怎样达到这种估值呢?这种压力下,可能会做出很多糟糕的决定。 美国最大的三家航空公司正在拆除飞机座椅背面的屏幕,目前只限于国内航班,理由是乘客可以使用自己的电子设备。 下图是拆除前后对比。 上海科技大学和腾讯 AI 实验室发表了一篇新论文,可以只根据一张照片和一段视频,就让照片里的人按照视频里面的动作动起来。 美国一所大学正在研发防火毯。这种毯子的材料是氧化铝和二氧化硅,可以用在室内或野外,防止火势蔓延。 文章 1、我比较了麦当劳最便宜和最贵的汉堡(英文) 一个美国记者详细比较了,当地麦当劳最便宜的汉堡(1.69美元)和最贵的汉堡(8美元),发现它们差异巨大。 2、如何将任意命令装为图形界面?(英文) 本文介绍使用 Gooey 这个工具为任何命令行的命令,生成一个图形界面,用户只需写一个配置文件即可。上图是一个 MP3 转换命令的图形界面。 3、我如何建造一个父亲对话机器人(英文) 这是一篇长篇散文。作者的父亲是癌症末期,作者录下了自己与父亲的对话,利用这些对话资料,建造一个人工智能的对话机器人。父亲去世以后,跟机器人对话,机器人说出父亲会说的话。我很喜欢这篇文章,希望有人会把它译成中文。 4、PHP 的这25年(英文) PHP 创建者 Rasmus Lerdorf 的一次讲演,回顾自己创造 PHP 语言的这25年。 5、Unix 先驱的密码(英文) 几十年前,Unix 源码公开的时候,/etc/passwd 文件也一起公开了。里面包含了早期使用者的密码哈希,因此可以从哈希破解出他们的密码,其中有5个人的密码一直没有破解。 最近有人使用最新的硬件,终于找出了这五个人的原始密码。其中最难的是 Unix 发明者 Ken Thompson 的密码p/q2-q4!,上个世纪80年代的密码,现在的硬件仍然需要计算4天才能破解。 6、Python 爬虫保存美国农业部网站的水果数据库(中文) 美国农业部为全世界已知水果制作了 7500 幅水彩"证件照",并提供高清下载。作者讲述自己如何编写 Python 爬虫,抓取这些图片。(@jwenjian 投稿) 7、Costco 如何改变零售规则并成功?(英文) Costco 是一家美国的连锁超市,采取了与其他超市不一样的模式,为实体店如何在网络时代活下去,提供了一些经验。 8、React Hooks 的原理(英文) 本文通过简单的代码,自己做了一个 Hooks 的简单实现,讲解 React Hooks 的原理。(@hacker0limbo 投稿) 9、谢耳朵猜想被证明(中文) 美剧《大爆炸理论》的主角谢尔登说,他最喜欢的数字是73。因为73是第21个质数,7 乘以 3 正好等于21,而且翻转过来也成立,37是第12个质数,宇宙中不会再有第二个这样的数字。电视剧播出后,这被称为"谢尔登猜想",还真有数学教授写论文证明,这个猜想是正确的。 10、GraphQL 相对 REST 的优势(英文) GraphQL 是客户端与服务器之间的一种数据请求方式,本文解释了它比 REST 好在哪里。 工具 1、OnionShare 匿名分享文件的工具,通过 Tor 网络下载文件。 2、dcp 一个在主机间分享文件的命令行工具,使用 Dat 协议,进行点对点拷贝。 3、rough-charts 手绘风格的 React 图表库。(@beizhedenglong 投稿) 4、repo-analytics 分析 GitHub 仓库信息的在线工具。(@timqian 投稿) 5、mintotp 一个 Python 的二因素认证时间码工具,代码很简单,只有20行。 6、Memex 浏览器插件,可以对书签和浏览历史进行全文搜索。 7、彩云小译 浏览器插件,一键将网页翻译成中英对照模式。(@bitwater 投稿) 8、AntzGameOS 该项目把游戏做成操作系统,打包成镜像,装到U盘,插入电脑开机启动,就能直接玩游戏。(@CasterWx 投稿) 9、Pinbox 一个国产的收集网上各种资源(网址、图片、文本)的在线服务,类似 Pinterest。(@yoler 投稿) 10、bruno simon 这是很久以来,我见过的最酷主页,整个页面都是 3D 的。页面源码是开源的。 资源 1、YubiKey 使用指南(英文) YubiKey 是一种目前较为流行的硬件密钥,这个仓库是网友写的使用手册。 2、free-for.dev 该仓库收集各种可以免费使用的(或有免费层的)互联网服务。 3、学习 ClojureScript ClojureScript 是基于 Clojure 的函数式网页脚本语言,本书是它的开源教程。 4、awesome-naming 有一句名言:命名是软件开发最难的事情之一。该仓库收集最好的命名,比如 Stack(堆栈)、Adapter(适配器)、Sandbox(沙箱)、Honeypot(蜜罐)等等。 5、Google dork list 该仓库专门收集泄漏保密信息的谷歌搜素命令,比如搜索泄漏的数据库导出文件,就在谷歌输入"#mysql dump" filetype:sql。目前,已经收集了将近10000条。 图片 1、拉美西斯二世 1976年,古埃及法老拉美西斯二世的木乃伊,在死后3000多年从埃及运到了法国,进行全面的法医检测。 该木乃伊是1881年发现的,从1885年开始一直放置在开罗的古埃及博物馆。1974年,博物馆发现木乃伊的状况正在恶化,因此同意送往法国检查。 根据法律,死者离开埃及也需要护照。埃及政府为拉美西斯二世颁发了护照,职业一栏填的是"国王(已故)"。 木乃伊到达法国后,法国政府按照国王的仪式迎接了他。 检查发现,拉美西斯二世有战伤、骨折、关节炎和血液循环不良。据信,关节炎使他在生命的最后几十年都弯腰驼背行走。下颌骨上发现了一个大洞,研究人员认为"尽管他的牙齿脓肿严重到足以导致感染死亡,但尚不能确定死因。" 2、我能吞下玻璃而不伤身体 互联网的早期,哈佛大学学生 Ethan Mollick 发起了一个语言项目。他认为,来到国外的游客有"不可抗拒的冲动"用当地语言说些什么,如果他们所说的话非常简单,当地人通常会立即将他们标记为游客。但是,如果他们说"我能吞下玻璃而不伤身体",就可以确保受到当地人的尊重。 他邀请网友为这句话提供各种语言的版本,目前该短语已翻译成150多种语言,包括一些虚构的语言,以及多种计算机语言。 这句话还是 GNOME 字体查看器展示中文时的示例文字。 3、 Linux Logo 上图是各种 Linux 发行版的 Logo,你认得出几种?能认出四分之一(11种),就算对 Linux 相当熟悉了。 文摘 1、粮食生产和农业的巨变 我们正处于粮食和农业生产的最大变革的前夜,人类合成蛋白质即将工业化。 到2030年,人工合成蛋白质的价格将比现有的动物蛋白质便宜5倍,到2035年将便宜10倍,最终蛋白质的价格跟糖差不多。 除了价格,人工合成蛋白质还将在每个关键属性上都具有优势:更有营养,更健康,味道更好,更方便,并且具有几乎难以想象的多样性。这意味着,到2030年,现代食品将具有更高的质量,而生产成本不到动物源食品的一半。 这种发展对畜牧业的影响将是深远的。到2030年,美国的奶牛数量将下降50%,养牛业将几乎破产。其他畜牧业也将遭受类似的命运。 这是生物学快速发展的结果,现在的生物科技使我们能够对微生物进行编程,以生产几乎任何复杂度的有机分子,最终导致"食品即软件"。科学家先设计单个分子,然后世界各地的食品工程师以设计软件的方式设计食品,并且不断迭代,从而使产品快速改进,每个版本均比上一个版本优越且便宜。它还可以确保生产系统完全分散,任何地方都可以生产食物,甚至在高楼大厦之中生产蛋白质,比传统农业更加稳定和有弹性。 这种现代食品生产方案将使土地使用效率提高100倍,原料效率提高10-25倍,时间效率提高20倍,节水效率提高10倍,还将减少废物的数量级。 一旦现代食品技术能够提供一瓶牛奶的蛋白质(蛋白质仅占牛奶的3.3%),整个牛奶产业将开始崩溃。工业化牛养殖业也会在不久的将来崩溃,现代技术将人工合成完美的牛排。 2、企业软件已死 几十年来,企业软件(即针对大公司的软件)与其它软件存在明显的区别,有着不同的品牌目标、不同的产品优先级和不同的销售周期。 今天,这些差异正在消失。企业软件的区别变得无关紧要,未来将全都是商务软件。 原因一:SaaS 的出现,改变了软件的销售模式。 云端软件的出现,使得软件的开发速度和成本降低了几个数量级。软件的购买决策,慢慢不再由上层决定,而开始变成自下而上的决策。起初,小团队和个人会自发使用一些帮助他们解决问题的工具,然后这种行为会在整个公司中蔓延。 比如,一个小组先采用了 Slack,然后整个团队都在用,接着邻近的团队也开始用,直至其他部门的团队也开始用。最终,高管们别无选择,只能在整个公司范围内采用它。如果普通员工一直在使用替代解决方案,并且知道它更有效时,他们就会站起来并要求采用它。 随着软件自下而上地采用,业务部门的行为开始像消费者。一个小团队会一时兴起尝试新事物,如果不起作用,他们会继续前进,尝试其他选择。如果确实可行,他们将继续使用它,甚至将其散布到整个组织中。 原因二:公司使用的软件品种激增。 根据一项统计,过去的15年中,公司使用的软件工具的品种激增。曾经的企业软件包含的专有功能(例如:性能管理,团队沟通,文件共享等),现在都不得不与专注于单一功能解决方案的 SaaS 公司竞争。这意味着,企业软件的固定合同锁定模式已经一去不复返了,企业软件对客户将不再有多年的锁定,而是必须与那些不断涌现的廉价云端替代产品竞争。 原因三:单个软件的使用周期变短。 公司也比以往任何时候,都更加频繁地更换工具。以前,IBM 出售企业软件时,会派遣一个团队在客户公司的办公室内安装价值25万美元的硬件。如果该客户想要更换软件,就需要将所有这些硬件都丢掉,向另一家公司支付6位数的费用,然后进行数月的迁移。现在只需要点几下鼠标,就能完成数据迁移。 总之,目前的现状就是,越来越多的企业将更多的业务转移到线上和云上,因此整个市场正在扩展。企业只要以每个用户每月几美元的价格,就能开始使用一个软件。通往企业软件的道路比以往任何时候都更短、更容易,并且软件公司非常容易融资,因此新产品不断涌现。最后,市场已经大规模分散化,企业以前会购买一个涵盖多种工具的单一产品套件,而现在则是分散购买不同功能、不同业务的在线服务组合。 这一切意味着: (1)企业软件已死,以后只存在用于工作场所的软件。当然,发展一家财富500强公司作为客户,与发展一家75人的创业公司,仍然有所不同,但是销售的差异正在迅速缩小。 (2)现在,仅靠说服决策者,不再能赢得客户,需要为整个组织上下的所有最终用户提供令人愉悦的体验才可以。客户群正在从高管,转变为这些公司中数以百万计的工作人员。 (3)市场比以往任何时候都更具流动性。软件供应商曾经每年竞争一次年度合同,现在则是每天都在竞争。 (4)最后,品牌以新的方式发挥作用。企业软件的品牌曾经追求代表稳定性和可靠性。今天,如果软件不酷,就无法取胜。 言论与数字 1、 这些年来,我都是凌晨4点被电话叫醒,去紧急处理代码问题。这一切只是为了贯彻"快速行动"(move fast)的理念。 -- TJ Holowaychuk 2、 商人在理论上不如经济学教授,但是他的观念往往有事实根据,并且也肯用全部的意识使其实现;反之,经济学教授对于现实的观念往往不正确,他的理论很多,但是缺乏实现的能力和勇气。结果,发财的都是商人,而不是教授。 -- 德国二战元帅隆美尔 3、 随着消费者对信息的了解越来越容易、越来越多,企业应该将大量的精力、注意力和金钱投入到构建优质的产品或服务中,而将更少的精力投入到产品或服务的营销中。 -- 杰夫·贝佐斯(Jeff Bezos) 4、 如果可以的话,(你应该)多学一点法律。即使不当律师,了解律师的想法也非常有用。法学院教的是社会的操作系统。 -- HN 读者留言 5、 谷歌云游戏平台 Stadia ,不是为了满足人们的需要,我不知道它为什么存在。它的存在似乎只是因为它"可能"被制造出来,谷歌想证明这样一个概念可行,然后就制造了它。 -- 《Stadia 不是为了人们想要而存在》 6、 谷歌云游戏平台 Stadia 的所有负面评论,都是那些已经有游戏主机或游戏 PC 的人说的。 这个平台的目标用户是我这样的人,我随身携带轻便笔记本和手机,想在上面玩游戏,不希望买专门的游戏设备,也没时间耐心等待游戏安装和打补丁,并且占据巨大的存储空间。 -- HN 读者 回顾 去年的本周:《周刊第 31 期》 订阅 这个周刊每周五发布,同步更新在阮一峰的网络日志、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月22日


为什么 MD5 不能用于存储密码 · Why's THE Design?

2019-11-21 02:04:00 Draveness

为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。


Python 异步编程入门

2019-11-21 01:13:00 阮一峰

本文是写给 JavaScript 程序员的 Python 教程。 Python 的异步编程,其他人可能觉得很难,但是 JavaScript 程序员应该特别容易理解,因为两者的概念和语法类似。JavaScript 的异步模型更简单直观,很适合作为学习 Python 异步的基础。 本文解释 Python 的异步模块 asyncio 的概念和基本用法,并且演示如何通过 Python 脚本操作无头浏览器 pyppeteer 。 一、Python 异步编程的由来 历史上,Python 并不支持专门的异步编程语法,因为不需要。 有了多线程(threading)和多进程(multiprocessing),就没必要一定支持异步了。如果一个线程(或进程)阻塞,新建其他线程(或进程)就可以了,程序不会卡死。 但是,多线程有"线程竞争"的问题,处理起来很复杂,还涉及加锁。对于简单的异步任务来说(比如与网页互动),写起来很麻烦。 Python 3.4 引入了 asyncio 模块,增加了异步编程,跟 JavaScript 的async/await 极为类似,大大方便了异步任务的处理。它受到了开发者的欢迎,成为从 Python 2 升级到 Python 3 的主要理由之一。 二、asyncio 的设计 asyncio 模块最大特点就是,只存在一个线程,跟 JavaScript 一样。 由于只有一个线程,就不可能多个任务同时运行。asyncio 是"多任务合作"模式(cooperative multitasking),允许异步任务交出执行权给其他任务,等到其他任务完成,再收回执行权继续往下执行,这跟 JavaScript 也是一样的。 由于代码的执行权在多个任务之间交换,所以看上去好像多个任务同时运行,其实底层只有一个线程,多个任务分享运行时间。 表面上,这是一个不合理的设计,明明有多线程多进程的能力,为什么放着多余的 CPU 核心不用,而只用一个线程呢?但是就像前面说的,单线程简化了很多问题,使得代码逻辑变得简单,写法符合直觉。 asyncio 模块在单线程上启动一个事件循环(event loop),时刻监听新进入循环的事件,加以处理,并不断重复这个过程,直到异步任务结束。事件循环的内部机制,可以参考 JavaScript 的模型,两者是一样的。 三、asyncio API 下面介绍 asyncio 模块最主要的几个API。注意,必须使用 Python 3.7 或更高版本,早期的语法已经变了。 第一步,import 加载 asyncio 模块。 import asyncio 第二步,函数前面加上 async 关键字,就变成了 async 函数。这种函数最大特点是执行可以暂停,交出执行权。 async def main(): 第三步,在 async 函数内部的异步任务前面,加上await命令。 await asyncio.sleep(1) 上面代码中,asyncio.sleep(1) 方法可以生成一个异步任务,休眠1秒钟然后结束。 执行引擎遇到await命令,就会在异步任务开始执行之后,暂停当前 async 函数的执行,把执行权交给其他任务。等到异步任务结束,再把执行权交回 async 函数,继续往下执行。 第四步,async.run() 方法加载 async 函数,启动事件循环。 asyncio.run(main()) 上面代码中,asyncio.run() 在事件循环上监听 async 函数main的执行。等到 main 执行完了,事件循环才会终止。 四、async 函数的示例 下面是 async 函数的例子,新建一个脚本async.py,代码如下。 #!/usr/bin/env python3 # async.py import asyncio async def count(): print("One") await asyncio.sleep(1) print("Two") async def main(): await asyncio.gather(count(), count(), count()) asyncio.run(main()) 上面脚本中,在 async 函数main的里面,asyncio.gather() 方法将多个异步任务(三个 count())包装成一个新的异步任务,必须等到内部的多个异步任务都执行结束,这个新的异步任务才会结束。 脚本的运行结果如下。 $ python3 async.py One One One Two Two Two 上面运行结果的原因是,三个 count() 依次执行,打印完 One,就休眠1秒钟,把执行权交给下一个 count(),所以先连续打印出三个 One。等到1秒钟休眠结束,执行权重新交回第一个 count(),开始执行 await 命令下一行的语句,所以会接着打印出三个Two。脚本总的运行时间是1秒。 作为对比,下面是这个例子的同步版本 sync.py。 #!/usr/bin/env python3 # sync.py import time def count(): print("One") time.sleep(1) print("Two") def main(): for _ in range(3): count() main() 上面脚本的运行结果如下。 $ python3 sync.py One Two One Two One Two 上面运行结果的原因是,三个 count() 都是同步执行,必须等到前一个执行完,才能执行后一个。脚本总的运行时间是3秒。 五、实例:pyppeteer 模块 最后是一个异步编程的真实例子:操作无头浏览器。异步编程对代码的简化,在这个例子体现得淋漓尽致。 我们需要用到 pyppeteer 模块,它是无头浏览器 Puppeteer 的 Python 移植,API 跟 JavaScript 版本基本一致。下面是安装命令。 $ python3 -m pip install pyppeteer 然后,写一个网页截图脚本screenshot.py。 #!/usr/bin/env python3 # screenshot.py import asyncio from pyppeteer import launch async def main(): browser = await launch() page = await browser.newPage() await page.goto('http://example.com') await page.screenshot({'path': 'example.png'}) await browser.close() asyncio.run(main()) 上面代码中,启动浏览器(launch)、打开新 Tab(newPage())、访问网址(page.goto())、截图(page.screenshot())、关闭浏览器(browser.close()),这一系列操作都是异步任务,使用 await 命令写起来非常自然简单。 执行这个脚本,当前目录下就会生成截图文件 example.png。 $ python3 screenshot.py 如果脚本执行时报错 No usable sandbox!,可以参考这里。另外,第一次执行这个脚本,会下载安装 Puppeteer,可能需要等待较长时间,但是此后的执行就会很快。 Pyppeteer 的官网还有其他实例,比如向网页注入 JavaScript 代码,大家可以自己试玩。 六、参考链接 Async IO in Python: A Complete Walkthrough, Brad Solomon (正文完) 如何通过实战项目快速提升 Python 开发技能? Python 是当下最火的编程语言,房地产大佬潘石屹都说要学。 它上手极为简单,短时间内你就能写出解决实际问题的小程序,甚至去面试初级 Python 工程师的职位。 不过,要写出更复杂的应用,或者从事数据分析、机器学习、Web 开发等工作,就需要正规系统的学习了。建议从一个简单的小项目开始,然后不断完善功能,去学习更多新东西。 第一步:写一个最简单的爬虫,比如获取 B 站的弹幕或豆瓣的书评影评。 第二步:单线程爬虫扩展为多线程爬虫,了解进程、线程、锁。 第三步:对收集的数据进行清洗和分析。 第四步:将数据报告在 Web 端展示,了解 MVC 设计模式、Web 框架、数据库操作。 完成以上四步,就从一个初级 Python 使用者成长为一名熟练工了。当然说起来简单,真正实践起来并不容易。每一步都会有比较多的坑,对于没有经验的人来说,自学效率比较低。如果有一个经验丰富的老师带,效果会好很多。 尹会生,金山公司西山居运维总监,在极客时间讲过《零基础学Python》和《Linux实战技能100讲》两个课程,参与编写过 《白话大数据与机器学习》 《运维前线》等书籍。 他与极客时间合作,推出了线下+线上相结合的《Python 进阶训练营》,手把手、面对面地帮助你,50天内实现 Python 开发技能的进阶和突破,完成上面四步,从初级使用者成长为专业选手。 4 个实战项目串联起全部关键知识 4 天线下教学 + 5 次线上直播 + 7 周刻意练习 + 助教每日答疑 高效学习社群 + 班主任带班 一线大厂和 TGO 鲲鹏会600多家企业面试直通车。优秀毕业生一年内获得两次企业内推服务。 原价 ¥3600, 早鸟特惠 ¥2499,早鸟仅限 100 人 ,微信扫描下方二维码,立即加入???? 无论是否报名,微信扫描下方二维码,即可免费获取 Python 学习资料包。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月21日


CSS 定位详解

2019-11-19 01:23:51 阮一峰

CSS 有两个最重要的基本属性,前端开发必须掌握:display 和 position。 display属性指定网页的布局。两个重要的布局,我已经介绍过了:弹性布局flex和网格布局grid。 本文介绍非常有用的position属性。我希望通过10分钟的阅读,帮助大家轻松掌握网页定位,说清楚浏览器如何计算网页元素的位置,尤其是新引进的sticky定位。 本文由国内最大的在线教育平台之一"腾讯课堂"赞助。他们现在启动了"腾讯课堂101计划",推广平台上的课程资源,有不少优质内容。希望提高前端技术水平的同学,可以留意一下本文结尾的免费课程信息。 一、position 属性的作用 position属性用来指定一个元素在网页上的位置,一共有5种定位方式,即position属性主要有五个值。 static relative fixed absolute sticky 下面就依次介绍这五个值。最后一个sticky是2017年浏览器才支持的,本文将重点介绍。 二、static 属性值 static是position属性的默认值。如果省略position属性,浏览器就认为该元素是static定位。 这时,浏览器会按照源码的顺序,决定每个元素的位置,这称为"正常的页面流"(normal flow)。每个块级元素占据自己的区块(block),元素与元素之间不产生重叠,这个位置就是元素的默认位置。 注意,static定位所导致的元素位置,是浏览器自主决定的,所以这时top、bottom、left、right这四个属性无效。 三、relative,absolute,fixed relative、absolute、fixed这三个属性值有一个共同点,都是相对于某个基点的定位,不同之处仅仅在于基点不同。所以,只要理解了它们的基点是什么,就很容易掌握这三个属性值。 这三种定位都不会对其他元素的位置产生影响,因此元素之间可能产生重叠。 3.1 relative 属性值 relative表示,相对于默认位置(即static时的位置)进行偏移,即定位基点是元素的默认位置。 它必须搭配top、bottom、left、right这四个属性一起使用,用来指定偏移的方向和距离。 div { position: relative; top: 20px; } 上面代码中,div元素从默认位置向下偏移20px(即距离顶部20px)。 3.2 absolute 属性值 absolute表示,相对于上级元素(一般是父元素)进行偏移,即定位基点是父元素。 它有一个重要的限制条件:定位基点(一般是父元素)不能是static定位,否则定位基点就会变成整个网页的根元素html。另外,absolute定位也必须搭配top、bottom、left、right这四个属性一起使用。 /* HTML 代码如下

*/ #father { positon: relative; } #son { position: absolute; top: 20px; } 上面代码中,父元素是relative定位,子元素是absolute定位,所以子元素的定位基点是父元素,相对于父元素的顶部向下偏移20px。如果父元素是static定位,上例的子元素就是距离网页的顶部向下偏移20px。 注意,absolute定位的元素会被"正常页面流"忽略,即在"正常页面流"中,该元素所占空间为零,周边元素不受影响。 3.3 fixed 属性值 fixed表示,相对于视口(viewport,浏览器窗口)进行偏移,即定位基点是浏览器窗口。这会导致元素的位置不随页面滚动而变化,好像固定在网页上一样。 它如果搭配top、bottom、left、right这四个属性一起使用,表示元素的初始位置是基于视口计算的,否则初始位置就是元素的默认位置。 div { position: fixed; top: 0; } 上面代码中,div元素始终在视口顶部,不随网页滚动而变化。 四、sticky 属性值 sticky跟前面四个属性值都不一样,它会产生动态效果,很像relative和fixed的结合:一些时候是relative定位(定位基点是自身默认位置),另一些时候自动变成fixed定位(定位基点是视口)。 因此,它能够形成"动态固定"的效果。比如,网页的搜索工具栏,初始加载时在自己的默认位置(relative定位)。 页面向下滚动时,工具栏变成固定位置,始终停留在页面头部(fixed定位)。 等到页面重新向上滚动回到原位,工具栏也会回到默认位置。 sticky生效的前提是,必须搭配top、bottom、left、right这四个属性一起使用,不能省略,否则等同于relative定位,不产生"动态固定"的效果。原因是这四个属性用来定义"偏移距离",浏览器把它当作sticky的生效门槛。 它的具体规则是,当页面滚动,父元素开始脱离视口时(即部分不可见),只要与sticky元素的距离达到生效门槛,relative定位自动切换为fixed定位;等到父元素完全脱离视口时(即完全不可见),fixed定位自动切换回relative定位。 请看下面的示例代码。(注意,除了已被淘汰的 IE 以外,其他浏览器目前都支持sticky。但是,Safari 浏览器需要加上浏览器前缀-webkit-。) #toolbar { position: -webkit-sticky; /* safari 浏览器 */ position: sticky; /* 其他浏览器 */ top: 20px; } 上面代码中,页面向下滚动时,#toolbar的父元素开始脱离视口,一旦视口的顶部与#toolbar的距离小于20px(门槛值),#toolbar就自动变为fixed定位,保持与视口顶部20px的距离。页面继续向下滚动,父元素彻底离开视口(即整个父元素完全不可见),#toolbar恢复成relative定位。 五、 sticky 的应用 sticky定位可以实现一些很有用的效果。除了上面提到"动态固定"效果,这里再介绍两个。 5.1 堆叠效果 堆叠效果(stacking)指的是页面滚动时,下方的元素覆盖上方的元素。下面是一个图片堆叠的例子,下方的图片会随着页面滚动,覆盖上方的图片(查看 demo)。 HTML 代码就是几张图片。
CSS 代码极其简单,只要两行。 div { position: sticky; top: 0; } 它的原理是页面向下滚动时,每张图片都会变成fixed定位,导致后一张图片重叠在前一张图片上面。详细解释可以看这里。 5.2 表格的表头锁定 大型表格滚动的时候,表头始终固定,也可以用sticky实现(查看 demo)。 CSS 代码也很简单。 th { position: sticky; top: 0; } 需要注意的是,sticky必须设在元素上面,不能设在和元素,因为这两个元素没有relative定位,也就无法产生sticky效果。详细解释可以看这里。 (正文完) 免费前端全栈课程 初学者刚接触前端,往往会被一大堆技术名词、框架和工具,搞得眼花缭乱。 到底哪些技术是目前的主流技术栈,既能用于公司的开发实务,又能为自己的简历增添亮点? 下面就是一套目前主流的前端技术栈。 (1)Node.js:服务器端的 JavaScript 运行环境,不管哪种前端开发,都必不可少的底层环境。 (2)Webpack:语法转换工具,把 ES6/TypeScript/JSX 语法转成浏览器可以运行的代码。 (3)Koa2:一个非常流行、简洁强大的 Node.js 后端的 Web 开发框架。 (4)MongoDB:目前应用最广泛的非关系数据库之一,功能丰富,用法较简单。 (5)Vue 全家桶: Vue:前端基础框架 Vuex:配套的前端状态管理库。 Vue Router:官方的路由插件,构建单页面应用必不可少。 Vue CLI:脚手架工具,帮你快速上手 Vue 开发,无需再花多余时间去实现项目架构。 Vant:有赞前端团队开发的轻量级移动端 Vue 组件库,让你快速使用已经封装好的各种页面组件。 看到这个名单,你是不是感到有点头大,全部掌握它们需要多少时间啊? 现在,腾讯课堂就有一门这样的课程,内容包含了所有这些工具,教你怎么用它们从头完成一个全栈项目,亲手做出一个手机端的移动商城,是由 慕课网的精英讲师--谢成老师讲授 。 这个课程原价98元, 活动期间,只要1块钱哦! 微信扫描下面的二维码,就可以领取优惠券,享受1元听课的福利。 该课程的制作单位是青盟科技。它是《腾讯课堂101计划》重点推广的优质机构,已有7年 IT 行业教学经验,培养收费学员2000+,有超过72%的学员都进入到名企大厂。如果你想了解课程的详细内容,获取课程大纲,或者想接受系统的前端培训,可以登录腾讯课堂查看"青盟科技"。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月19日


容错,高可用和灾备

2019-11-17 13:42:56 阮一峰

标题里面的三个术语,很容易混淆,专业人员有时也会用错。 本文就用图片解释它们有何区别。 容错 容错(fault tolerance)指的是, 发生故障时,系统还能继续运行。 飞机有四个引擎,如果一个引擎坏了,剩下三个引擎,还能继续飞,这就是"容错"。同样的,汽车的一个轮子扎破了,剩下三个轮子,也还是勉强能行驶。 容错的目的是,发生故障时,系统的运行水平可能有所下降,但是依然可用,不会完全失败。 高可用 高可用(high availability)指的是, 系统能够比正常时间更久地保持一定的运行水平。 汽车的备胎就是一个高可用的例子。如果没有备胎,轮胎坏了,车就开不久了。备胎延长了汽车行驶的可用时间。 注意,高可用不是指系统不中断(那是容错能力),而是指一旦中断能够快速恢复,即中断必须是短暂的。如果需要很长时间才能恢复可用性,就不叫高可用了。上面例子中,更换备胎就必须停车,但只要装上去,就能回到行驶状态。 灾备 灾备(又称灾难恢复,disaster recovery)指的是, 发生灾难时恢复业务的能力。 上图中,飞机是你的 IT 基础设施,飞行员是你的业务,飞行员弹射装置就是灾备措施。一旦飞机即将坠毁,你的基础设施就要没了,灾备可以让你的业务幸存下来。 灾备的目的就是,保存系统的核心部分。一个好的灾备方案,就是从失败的基础设施中获取企业最宝贵的数据,然后在新的基础设施上恢复它们。注意,灾备不是为了挽救基础设置,而是为了挽救业务。 总结 上面三个方面可以结合起来,设计一个可靠的系统。 容错:发生故障时,如何让系统继续运行。 高可用:系统中断时,如何尽快恢复。 灾备:系统毁灭时,如何抢救数据。 参考文献 The Difference Between Fault Tolerance, High Availability, & Disaster Recovery , Patrick Benson (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月17日


蚂蚁金服网络研发专家招聘

2019-11-15 03:15:18 宋净超

职位介绍 工作地点:杭州、成都、北京 招聘人数:5 人 工作年限要求:三年以上 学历要求:本科 所属部门:蚂蚁金服 CTO 线系统部 期望层级:P7 职位类型:技术


科技爱好者周刊:第 82 期

2019-11-15 01:23:01 阮一峰

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。 封面图:11月2日,印度首都新德里出现严重雾霾,PM 2.5 指数 AQI 达到900多。 刊首语 本周推荐一篇文章,一个美国的高级工程师谈如何选职业。 作者原来是一个外行,但是通过努力,进入了一家机器学习公司,现在发展得很好。他从自己的经历,得出一个观点: 就业要选择发展最快的行业。 停滞发展、或者缓慢发展的公司,完全是一个零和游戏。 如果你想晋升,必须等别人把位置空出来。你得到的,一定是其他人失去的。相比之下,快速发展的公司有源源不断的新人加入,最终每个人都会得到晋升! 最重要的是,业务的发展比人员增长快,所以你会被"往上拉",拉到更高层的岗位。 作者以自己为例,他并没有机器学习背景,但是公司发展得太快,他需要组建团队,自然就成了团队管理者,环境把他"拉"到了更高的位置上。位阶高了,就有了更多的机会和资源。 这让我想起自己呆过的一所大学,每年学校就那么几个名额,可以晋升教授和副教授,大家挤破头,如果今年评不上,就要至少再等一年。有的老师熬到头发白了,才评上副高职称。这就是发展缓慢的结果。去了这种地方,真是消耗生命。 那篇文章还提到了另外一点,我也很赞同。他说,就业的目的是为自己积累两种资本:人力资本(增长能力)和金融资本(多赚钱)。对于年轻人来说,人力资本更重要。 就业时,年轻人的关注重点应该是,快速增长自己的人力资本。 因为长期来看,在你的一生中,人力资本会比金融资本带来更大的回报。 最快速形成人力资本的方法,就是去聪明人多的地方,从比你更聪明的人身上学习。跟高手在一起工作,你会成长得非常快。大公司虽然高手很多,但是你接触不到也没用。 在一个快速发展的行业里面,加入一群聪明人组成的小团队,可能是事业成功的最佳方式。 前端架构师免费课程 开课吧(kaikeba)是国内著名的职业教育培训品牌,他们最近推出了一个 《进击的前端架构师》 免费课程,介绍给大家。 这个课程的主讲人是百度和360的前端架构师----大圣,他有8年的开发经验,讲课风格幽默,内容实在。 他在这个课程里面,主要讲了以下内容:(1)自己如何进入百度、360团队,如何从高级工程师进阶为全栈架构师,以及如何通过 BAT 大厂的面试;(2)分享自己的工作经历和学习方法,以及对技术提升的看法,如何做到有计划地学习才能不走弯路?(3)不同类型的企业,不同氛围的团队中的工作方式,他们的薪资水平以及工作氛围怎么样等等;(4)在前端团队中快速成长的实际经验,如何才能得到清晰的提升路径方便后续的职业发展规划? 这个课程很适合刚入行的新人,以及工作1年~3年、但是还缺乏工作方法和系统知识体系的开发者观看。帮助你看清技能提升路线,节省学习时间。 微信扫描下方二维码,就可以获取课程。 本次免费名额有限,仅提供 499 份 ,感兴趣的读者抓紧扫码领取。 资讯 1、正在消失的加油站 美国电动汽车越来越多,传统的汽油车少了以后,加油站受到了影响,生意越来越清淡。不少加油站被迫改成亚马逊的包裹站(上图),或者快餐店。 据估计,电动汽车的流行将使得美国汽油消耗量,在2025年至2027年期间开始下降。如果不改变业务模式,到了2035年,60%~80%的加油站将关闭。 目前,美国加油站的数量已经在下降了,从1990年代的约20万家,减少到目前的约13.5万家。下面是未来的无人驾驶汽车充电站。 2、纸电话 手机变得越来越重要,使得人们无法离开它。即使你想少用手机,但是重要的事情都在上面,你不得不用。谷歌正在发起一个实验项目"纸电话",尝试让人们少用手机。 它开发了一个安卓应用,用户可以选择当天的重要事项:联系人、日程、地图、会议等等......。该应用会将所有这些事项,打印在一张纸上,用户只要携带这张纸,就不用看手机了。 3、钢筋混凝土建筑的寿命 现代建筑大量使用钢筋混凝土,这种建筑的寿命只有60年~100年。因为混凝土有裂缝,水会进入裂缝,使得钢筋生锈而膨胀,扩大了裂缝,削弱了混凝土的强度。现有的解决方案都很昂贵,比如不透水混凝土。 澳大利亚科研人员提出一种新的解决方案,采用玻璃纤维和碳纤维钢筋,防止钢筋生锈,大大延长建筑寿命。虽然成本比传统方法高一些,但是从长远来看价格会更便宜,因为这些建筑至少可以使用100年,而无需任何维护。 下一步,研究人员将研究融化玄武岩,并将其挤压成纤维来制造钢筋,这样能彻底解决生锈问题。玄武岩纤维比碳纤维更便宜、更环保。 4、脑电波头环 最近,美国媒体报道,浙江金华的一所小学为学生们配置了"脑机接口头环",让学生戴在头上。据该媒体说,这款产品可以检测脑电波,评判学生上课、写作业时是否集中注意力。还会将结果实时传输到老师的电脑上,发到家长群里。 该产品是深圳一家公司研发的,由投资人捐赠给该小学使用。这家深圳公司称,头环根本不是为了监控学生,而是帮助学生自我训练,集中注意力进行学习。它通过脑电波反馈,使得用户提高专注力,此前已经在美国波士顿地区的多所中学进行了运用,包括耶鲁大学的暑期班。 5、贴片显示器 南京大学的研究人员发明了一种薄型的发光贴片,可以贴在皮肤上,显示数字或图案。这对于运动员和跑步爱好者很有用,也可以当作临时纹身。 显示器一般需要较高的电压,但是这种发光贴片是在低电压下使用,所以对人体安全。贴片里面的发光材料是一种陶瓷纳米颗粒,这些颗粒夹在两个柔性的银纳米电极之间,一旦通电,可以发出亮度很高的光,足以在室内或黑暗环境中看到。 6、复制云冈石窟 山西云冈石窟的第12窟2018年在深圳完成了3D打印,2019年11月完成了上色总装,将于12月底亮相浙江大学艺术与考古博物馆。 第12窟又名"音乐窟",建造于公元5世纪。前殿后室,入深14米、宽11米、高9米,石窟内部用立体雕刻的形式,记载了古代音乐人盛大演出场面。打印石窟与原石窟1比1复制,整个石窟体积超过2000立方米。里面的雕像都是打印出来的,但是需要人工上色。 7、为什么亚马逊不缴税? 亚马逊是美国最大的公司之一,2018年赢利110亿美元,但是一分钱所得税也没缴,而且完全合法。 这主要有两个原因。一是根据美国的税法,利润用于研发和投资,可以抵税。二是,员工的股票薪酬也可以抵税。2018年,亚马逊的股票大幅上涨,员工持有股票期权因此大幅获利,这部分获利也作为企业成本扣税,最终导致亚马逊不用缴税。 这件事在美国已经引起轩然大波,不少人抗议,美国正在研究如何改进税法,避免大型技术公司不缴税。 8、一句话消息 美国人口统计局公布,2018年,美国人的平均通勤时间为27分钟,创历史新高。其中,通勤时间超过60分钟的约占10%。 一个欧洲医生组织发表声明,反对世界卫生组织 WHO 将中医列入《国际疾病分类》的第11版。 美国有人起诉苹果手机的刘海屏,理由是根据苹果公司宣传的屏幕尺寸和分辨率计算出的像素跟实际不符。法官在法庭上说:"美国似乎没人真正担心这个"。 日本的软银公司出现14年来第一次季度亏损,金额为65亿美元,主要原因是它投资的 WeWork 公司 IPO 失败。 一家好莱坞电影公司决定明年开拍的新片,启用詹姆斯·迪恩(James Dean)作为男主角。詹姆斯·迪恩已在1954年车祸去世,明年他的表演将完全采用计算机图形生成。 水星凌日于11月11日发生,美洲可以看到水星经过太阳表面(下图的小黑点),亚洲本次看不见。下一次水星凌日将发生在2032年。 巴西是全世界主要的牛肉和大豆出口国,为了把牛肉和大豆从内陆运出来,以及获得更大的种植基地,该国把亚马逊雨林变成耕地,并且在雨林地区修建公路。 文章 1、软件工程师如何才能晋升?(英文) 本文总结了软件工程师如何才能在大公司里面获得职级晋升。 2、椭圆曲线加密介绍(英文) 本文抽离了数学细节,尽量用简单的图形解释椭圆曲线加密算法。 3、TypeScript 的由来(英文) 本文由当事人讲述 TypeScript 早期的故事,从中可以看到这门语言的设计过程。 4、数据库类型的历史回顾(英文) 本文按照历史发展,介绍了数据库的四种类型以及子类:传统数据库、关系型数据库、NoSQL 数据库、NewSQL 数据库。 5、两行 Nginx 配置返回客户端的 IP 地址(英文) Nginx 的一个小技巧,在不使用编程语言的情况下,在 JSON 对象里返回客户端的 IP 地址。 6、AMD 与 英特尔的财务数据比较(英文) 本文比较这两家主要 CPU 公司的财务数据指标,可以了解 CPU 市场的格局。我印象比较深的是,这两家公司的员工平均收入都可以达到60万美元。 7、CSS 如何自动切换明暗模式(英文) 本文介绍如何让 CSS 根据不同设备,自动选择暗模式(dark mode)或明模式(light mode)。 8、Timsort 介绍(英文) Timsort 是 Python、Java 等的默认排序算法,本文简要介绍这种算法。 9、C++ 生态环境介绍(英文) 本文介绍 C++ 的各种配套工具:编译器,IDE,调试器等。 10、如何估算银河系中的外星文明的数目?(英文) 1961年,美国天文学家弗兰克·德雷克(Frank Drake)提出一个方程,用于计算银河系中可能与地球发生无线电通信的外星文明数量,当时估计20个~5000万个之间。本文根据现在的数据计算,得出结果是46个。 工具 1、Apache Guacamole 一个远程桌面网关,可以在浏览器中远程访问其他计算机的桌面。 2、HTTP Toolkit 这个工具可以拦截和查看 HTTP/HTTPS 请求,并且可以 mock 服务器的回应。 3、imgproxy 一个 Go 语言写的图片代理网关,可以代理远程图片,并且提供格式转换和大小缩放功能。 4、WebTest.app 一个在线工具,比较广告拦截器对指定网址加载速度的影响,比如少了多少个请求、页面总体积下降多少。 5、React Hooks Form 这是一个 React 表单库,基于 React Hooks,看上去代码相当简洁,star 也很高,也许以后可以摆脱那些笨重的表单组件了。 6、Shiori Shiori 是一个自己架设服务的网址书签管理器,使用 Go 语言编写。 7、navi 一个命令行的交互式备忘工具,你可以查阅某个命令的作用。 8、Slouch stoppah 一个在线小工具,通过电脑摄像头,判断坐在屏幕前面的人的坐姿是否正确。 9、诺基亚短信图片生成器(英文) 这个工具可以生成老式诺基亚手机的短信图片。(@dcalsky 投稿) 10、YaoYao - 跳绳 一个微信小程序,带着手机跳绳,可以自动计数跳了多少下。(@haozes 投稿) 11、Basecamp 个人版 著名的项目管理软件 Basecamp 推出免费的个人版,此前都是要收费的。个人版最多一个项目可以有20个用户,对于小团队够用了。 12、GitHub Mobile GitHub 首次发布官方的手机客户端,目前只有 iOS 的 App,安卓版将稍后发布。 资源 1、LXC 系统教程(英文) LXC 是 Linux 容器的一个运行时,可以看作 Docker 的替代品。本系列是 LXC 的一个作者写的如何上手的系列文章。 2、Clojure for the Brave and True Clojure 语言的在线教程。 3、法信 一个法律仓库,可以在线搜索国内的各种法律。(@Gina1101 投稿) 4、《高性能 Go 代码工坊》中译 原文是深入研究 Go 应用性能提升的英语系列文章,这里是中译。(@hznuksco 投稿) 5、Haskell 语言48小时教程:如何写一个 Scheme 语言解析器(英文) 这是一个入门教程,针对的是不懂 Haskell 语言、但有经验的程序员。 图片 1、蝴蝶的诞生过程 美国生物学家蒂姆·黄(Tim Wong)在后院饲养珍稀蝴蝶,他拍下了蝴蝶诞生的整个过程。蝴蝶成员产下红色的卵后,就会死去。 卵孵化成毛毛虫。 毛毛虫变成蛹,蛹变成蝴蝶。 2、动物桥梁 新加坡的高速公路上方,建有动物桥梁,方便动物通过。 下图是另一座动物桥梁。 荷兰是这种桥梁最多的国家,一共有30多座。 3、死亡公路 1990年海湾战争,科威特城外的一条高速公路,炮火阻塞了2000多辆汽车。美军为了清出这条道路,摧毁了路上的每一辆车,将它们都推到路边。 文摘 1、锂元素对人体的影响 澳大利亚医生约翰·卡德(John Cade)发现了锂元素可以治疗精神疾病,但大多数人从未听说过他。今天,锂元素被看作治疗精神疾病的青霉素。它是人类发现的第一种治疗精神疾病的有效药物。 卡德生于1912年,来自一个医生世家,他的父亲担任过精神病院的医生,所以他从小就了解精神病。他坚信,所有严重的精神疾病最终原因都是大脑的生化异常,而不是心理因素导致的,弗洛伊德的精神分析法是无用的。 他做了一个实验,将躁狂症患者的尿液注射到豚鼠,结果豚鼠出现惊厥和死亡。他认为,躁狂症患者尿液中尿酸水平较高,导致豚鼠出现尿素中毒。 根据文献,锂元素可以溶解含有尿酸的肾结石,他就向豚鼠注射了锂元素饱和的尿液,豚鼠结果没有惊厥或死亡。受到这一发现的鼓舞,他随后开始自己服用锂盐以测试其安全性,然后再给躁狂症患者服用。 1949年,37岁的卡德发表了一篇论文,宣布锂元素可以使躁狂症患者冷静下来,症状平息。因此他认为,锂元素可以用来治疗躁狂症和癫痫。 论文发表后,并没有引起太大反响,只是一些有好奇心的医生注意到了这篇文章。1950年~1960年期间,一位名叫 Mogens Schou 的精神病学家进行了大量的临床试验,结果表明锂元素不仅可以缓解急性躁狂症,还可以减少复发频率。越来越多的证据表明,锂是可以挽救生命的神奇药物。 由于锂元素只需简单添加,不必开发出专门的药物,对于制药公司来说无法申请专利,也无利可图,且会打击市场上已有的药物,所以产业界不愿意推广它。布朗大学精神病学家沃尔特·布朗(Walter Brown)目睹了锂的积极作用后,伤心地写道,1960年代美国医药管理局 FDA 拖拖拉拉,没有及时批准锂元素的药物上市,使得成千上万的美国公民失去了一种能够防止破坏性的情绪波动,并降低自杀风险的治疗方法。 最终,锂元素终于投放了市场。布朗医生估计,此后20年中它为美国节省了约1,450亿美元。 锂元素的药用效果,其实早有应用。1929年,一种柠檬苏打水上市,被命名为 7 Up(中文名为七喜),成为流行的饮料。它含有镇静剂成分,后来发现镇静效果来自它包含的柠檬酸锂。 1948年,7 Up 的生产商从饮料中去除了锂。后来,随着锂元素的效果被医学研究证实,以及人们发现,世界上锂使用量较高的地区自杀率较低,7 Up 又重新加入了锂。 2、伊万·奇索夫 伊万·奇索夫(Ivan Chisov,1916-1986)是一个二战时期的苏联飞行员,从7000米高空自由落体下坠,却幸存下来。 1942年1月,一架德国空军的战斗机击中了奇索夫的轰炸机,迫使他在7000米的高空跳伞。 由于德军战斗机仍在他的上方,奇索夫一开始故意不打开降落伞,防止成为战斗机的目标。等到战斗机飞远了,他想打开降落伞的时候,已经来不及了,由于急速下坠,他陷入昏迷,失去了知觉,无法拉开降落伞的拉索。 奇索夫以大约190至240公里/小时的速度落地,撞到了一个积雪的山坡,然后一路向下滑行,滚到山沟底部。苏联骑兵赶到现场时,惊讶地发现他还活着,身上带着没有打开的降落伞。过了不久,奇索夫醒来,恢复了意识。 他受了重伤,包括脊柱受伤和骨盆骨折,紧急进行了手术。整整一个月,医生都认为他的病情很危险。但是,三个月之后,他恢复了健康,要求继续执行飞行任务。 战争结束以后,他进入了军事院校读书,后来成为苏军的人民代表。他于1986年去世。 言论与数字 1、 软胜硬,慢胜快。 让你的工作是个谜,只是向人们展示结果。 -- 斯蒂芬·米切尔翻译的《道德经》第36章 2、 /usr/bin/cat命令的作用是,从一个位置读取数据并将其写入另一个位置。 -- 《躲开 cat 命令》 3、 两页的文章是所有写作中最重要的形式。 -- 《在亚马逊写文档》 4、 收入波动率自1980年代以来一直在创新高,人们对自己的收入变化越来越不可预测。 -- 《收入下降可能损害大脑》 5、 为了证明自己比互联网功能多,许多大学图书馆都将资源投入到室内设计和建筑物的翻新,或在"炫目的技术"上投入大量资源,例如 3D 打印机。但是,学生通常最喜欢图书馆提供的最简单产品:一个安静的地方进行学习研究,打印论文、以及获取书籍。 -- 《大学生只需要普通图书馆》 6、 我认为,电动汽车比传统汽车更简单是一个谬论。因为电动汽车将复杂性从硬件转移到了软件,因此看上去硬件更简单。 -- HN 读者 招聘信息 周刊讨论区的《谁在招人?》,有大量工作/实习岗位,欢迎查看。 如果你的团队需要招人,可以免费在那里张贴招聘信息。如果希望发在周刊上,请联系我(Email: yifeng.ruan@gmail.com ),每条价格 300 元。 1、 长亭科技 长亭科技是全球顶尖的网络信息安全公司,专注为企业级用户提供专业的网络信息安全解决方案。办公地点:北京市海淀区768创意园区。诚意招聘以下岗位: 前端工程师:负责公司 Web 产品的研发和维护。 后端工程师:熟悉 Python 或 Go 语言,负责后端架构的设计和实现。 详细要求和联系方式,请看这里。 2、薄荷健康 薄荷健康是一家健康领域 App 开发公司,主要产品为"薄荷健康"和"食物库",总用户已达数千万级别。工作地点为上海浦东世纪大道地铁站附近。诚意招聘以下岗位: 前端 Web 工程师(1名):有Web和小程序经验,熟悉React/Vue。 后端工程师(2名):熟悉Go/Ruby/Python,进行 App 系统后端开发。 详细要求和联系方式请看这里。 3、易路软件 易路软件聚焦企业人力资源 SaaS 领域,致力于以复杂薪酬计算为核心的"移动互联网+员工服务"研发及运营。工作地点:上海闵行区。 招聘前端工程师,参与公司产品研发,包括不限于 PC 端、H5、小程序、Node 服务。详细要求和联系方式看这里。 回顾 去年的本周:《周刊第 30 期》 订阅 这个周刊每周五发布,同步更新在阮一峰的网络日志、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月15日


为什么 DNS 使用 UDP 协议 · Why's THE Design?

2019-11-13 15:50:00 Draveness

为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。


杨安泽的总统竞选

2019-11-11 01:21:22 阮一峰

2020美国总统参选人有一个44岁的华人,名叫杨安泽(Andrew Yang)。 开始时,谁也没在意,华人选美国总统,不是开玩笑吗? 华人是美国的少数民族,很少参与政治,历史上只有1964年一个夏威夷华人參选过总统。杨安泽是史上第二个,而且各方面条件都不突出:资历平平,毫无政治经验,没有干过公职,知名度是所有参选人的倒数第一。很多人把他当作笑话看。 但是,他让所有人跌破眼镜。目前,民主党候选人辩论进入了第五轮,许多政治老将都已经被甩下车,但他还活着,而且支持率不断上升,正在逼近领先的第一集团,堪称神奇表现。 这两天,我仔细看了他的竞争主张,感到耳目一新,很有说服力,理解了为什么很多美国人愿意支持他。 杨安泽在美国出生长大,父母是台湾过去的留学生。他的专业是法律,毕业后干了5个月实习律师,就不想干了,去创办网站。2001年,网站倒闭,他又去担任了几家公司的管理工作。2009年,他的公司被收购,赚到了不少钱。 2011年,他创立了一个名叫"为美国创业"的奖学金计划,帮助美国各地想要创业的大学生。 这个计划看起来很成功,2012年他被奥巴马政府授予"白宫变革领袖"的称号,2015年又被授予"全球创业精神总统大使"。他还获选为"全球100位商界创新人士"。 在创业过程中,他深深感到,底层人民很难赶上新技术的进步,变得越来越难以就业,就算找到了工作,最终往往会陷入失业的泥潭,无法自拔。正在发生的"第四次产业革命",会让卡车司机、电话客服、售货员都逐渐消失,那些岗位上现有从业者的生活将变得非常困难。 一项研究表明,制造业工人失业后进行再就业培训,成功率只有0%~15%。也就是说,失业者想要再就业,10个人里面只有1个人能成功,剩下的9个人将毫无办法。 有鉴于此,他提出了一个对策,也是本次竞选的主打政策,称为"全民基本收入": 只要他当选美国总统,年满18岁的美国公民,每人每月可以从政府领取1000美元,没有任何前提条件。 他希望,通过发放全民基本收入,缓和新技术革命给社会带来的阵痛。 他警告说,未来的三十年,自动化和人工智能将占据美国一半的就业岗位。那些没有技能的劳工,很难在市场上找到自己的位置。他的1000美元全民基本收入,可以缓解社会的痛苦,解决各种社会问题。直接给人民发钱,比再就业培训更有效,更符合人民的需要。 竞选对手质疑他的计划,如果真要发钱,每年将新增2兆美元的预算支出,这些钱从哪里来?杨安泽回应,除了调整现有福利经费,还将对科技公司征收增值税,补足资金缺口。 一次演讲中,他对听众提问:"有一个州每年发红利,每个居民可以获得一千到两千美元,那是哪个州?" 听众在下面喊:"阿拉斯加州!" "他们怎么解决资金问题?" 听众回答:"石油!"阿拉斯加州有大量石油,从1982年开始,州政府每年都提取一部分石油收入,向该州居民发补贴。 杨安泽继续问:"21世纪的石油是什么?" 听众跟着他一起喊:"技术!" "对,阿拉斯加州用石油赚的钱,来发津贴,我们也可以用技术赚到的钱,在全国范围实现基本收入。我们需要对大型科技公司征收增值税。" 除了基本收入,杨安泽另外两个政策主张是,"全民医保"和"以人为本的资本主义 "。这些政策主张,还有他对技术的看法(技术带来的社会影响是美国未来最迫切的问题),以及他对自动化带来大量失业的警告,引发了极右派民众的共鸣。他们认为杨安泽理解蓝领白人的困境,他的很多支持者也是特朗普的支持者。此外,进步主义者和保守派也支持他的主张。所有这些人构成了他的支持者的基础,杨安泽说自己是最有希望击败特朗普的人。 2018年3月,杨安泽宣布参选2020。民主党这次的参选人超过20个,因此要求只有收到65,000人次的捐款和民调支持率超过1%的候选人,才能参加辩论。 2019年3月14日,杨安泽超过了65,000个捐款者的筹资门槛,并在18项民意调查中达到1%支持率,有资格参加第一轮和第二轮辩论。 2019年6月27日,民主党第一轮辩论。杨安泽只被问了两个问题,发言时间一共两分零五十六秒,是所有參选人最低的。他声称自己的麦克风出了故障,他要讲话时,麦克风没有发声。 2019年7月31日,民主党第二轮辩论,他一共讲了8.7分钟,再次成为所有參选人中最低的,他也是唯一没有跟别人诘辩的参选人,即没人拿他当目标。 杨安泽在两轮辩论中,都不戴领带,这引起了媒体的注意,开始讨论他为什么不戴领带。他因此在第二轮辩论中,说了一段被广泛引用的话。 我们在这里穿得整整齐齐,演练如何攻击其他参选人,好像参加一场电视真人秀,而不去讨论自动化技术和我们的未来,不提400万个制造业的工作岗位即将由于自动化而消失。这就是为什么我们会选出真人秀明星担任总统! 我们需要专注于解决当今的实际挑战。眼前的事实就是,未来十年中,美国现在最常见的一些工作岗位将消失,大多数美国人可能无法支付账单。我的主要对策是全民基本收入,每个美国成年人每月发给一千美元。对于成千上万的美国家庭来说,这将改变他们的命运。 如果你关心自己的家人和孩子,超过关心我的领带,请到yang2020.com输入邮政编码,看看这1000美元对你的社区意味着什么!我已经帮你做好了各种计算。我不向左也不向右,我会一直前进,这就是我们击败唐纳德·特朗普的方式。 2019年8月8日,杨安泽在民意调查中得到了2%的支持率,加上他的捐款人数过了13万,获得参加第三轮和第四轮辩论的资格。 2019年8月10日,著名企业家马斯克在推特上宣布,支持杨安泽竞选美国总统。 2019年9月12日,民主党第三轮辩论,他总共讲了7分54秒,再次是所有候选人中最低的。当晚辩论直播后,Reddit 的联合创始人 Alexis Ohanian 在推特上宣布支持杨安泽,并愿意为其提供资金。 2019年9月16日,最新民调显示,杨安泽支持率上升至5%。 2019年10月15日,民主党第四轮辩论,他发言了8分32秒,排在所有候选人的倒数第四。CNN 认为,他是当晚的获胜者之一,他的全民基本收入已经引起了全国的注意,并在民主党内部产生了重大影响。 目前,杨安泽的筹款金额在所有候选人中排名第七,但是第三季度的增长速度排名第一。 值得注意的是,少于200美元的小额捐款百分比,他排名第一。 杨安泽在互联网上高度受欢迎,《纽约时报》称他是"互联网最爱的候选人"。如果计算第一轮辩论以来新增的推特粉丝数量,他也排名第一。 民主党第五轮辩论将在2019年11月20日举行,参加资格是16.5万个不同的捐款者,并在全国民调中支持率达到3%以上,杨安泽已经符合条件。 虽然杨安泽是华人,但是他的这次竞选超出了华人竞选的层面,而是代表了整个科技行业和创业者,表达了对于未来社会的担忧,以及想要尝试的对策。相比之下,其他候选人都是政治背景,跟科技业无关,可以说杨安泽是这次选举中仅有的科技行业的代表者。 他预言的大规模失业,自动化消灭大量的工作岗位,并非空穴来风。不仅可能在美国发生,也可能在中国发生。且让我们拭目以待,看看美国社会对他的警告和全民基本收入,会有什么反应,能达到多大的接受程度。 最后,本文的照片都来自他的一分钟竞选广告,下面就是这支广告(腾讯视频,YouTube)。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月11日


科技爱好者周刊:第 81 期

2019-11-08 01:26:45 阮一峰

这里记录每周值得分享的科技内容,周五发布。 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。 周刊讨论区的帖子《谁在招人?》,提供大量就业信息,欢迎访问或发布工作/实习岗位。 封面图:液晶屏拼接器 刊首语 最近,我看到一个网友的推特发言。 年轻时,我觉得亲戚们都是前车之鉴,我要避免重蹈他们的生活、性格、工作与处世态度。 直到现在这年纪,我觉得我跟他们越来越像了,于是感慨人生早就在家族基因注定。如果没有碰上基因突变,一个人的一生就是父母两边家族平均基因的 ±20% 吧,至少我觉得我是。 他的意思是, 不管你多么努力,大多数情况下,你的处境最多只比父辈好上20%。我也有类似的感受,子辈很难大幅度超越父辈,尤其是在经济增长放缓的情况下。 好像是巴尔扎克说的:"培养一个巴黎的上等人,需要三代人的努力。"当时我觉得这话太夸张了,现在觉得这是现实。我认识的人里面,子辈远远超过父辈的例子并不多, 大多数人的生活境遇、社会阶层、经济地位跟父辈都是类似的。 计算一下,如果每一代比上一代改善20%,翻倍确实需要经过三代人,即你的人生处境会比曾祖父好上一倍(1.2 的四次方等于2.07)。这还是最理想的情况,前提是每一代都勤奋努力。如果当中出了一个游手好闲之徒,改进速度就会大大放缓;要是出了败家子,还会出现倒退。 总之,正常情况下,人生境遇的改变,是一个缓慢的过程,需要几代人的累积。只有运气特别好,你才可能有着大大超越父母的人生,或者说大大地超越你的起点。如果运气不好,你的人生可能还不如父母。 职坐标系列课程 大家知道,国内最大的在线教育平台之一的腾讯课堂,赞助了我的个人网站。他们最近启动了"腾讯课堂101计划",推广优质的技术教育资源。今天,就向大家介绍三门课程。 第一门是 《前端全栈程序员:小白165天逆袭成为 Web 全栈工程师》,帮助你学习全栈,提升实务能力,开拓就业竞争力。这门是全面性的前端课程,覆盖前端开发的主要知识点和技能。 下面两门是微信小程序的专项课程,分别是 《小程序入门课程》 和 《2019新语法课程》,适合学习小程序的同学。 这些课程的出品方都是"职坐标"。它是腾讯课堂上面唯一一家双认证("严选课程"和"官方认证")的前端培训机构,汇聚了一批国内外 IT 资深师资力量,注重教辅服务,培训都以就业和跳槽加薪为导向。 微信扫描下方的二维码,加入职坐标 web 前端学习群,即可获得 免费的200种 web 前端学习系列电子书 ;回复"小程序"即可获得 《7天入门 | 微信小程序开发课程》5折优惠券 ! 除了收费课程,他们还诚意提供了许多 CSS、H5、Nodejs 的试听课程,欢迎大家去看看。 资讯 1、搜索失踪儿童 最近,一个6岁男孩在明尼苏达州的森林地区走失了。当时已经入夜,气温零度以下。当地的警察组织了600人投入搜索,但是一无所获。 晚上8点,一位摄影师得知了这件事,立刻赶到了现场。他带上了大疆的 DJI m210RTK v2 无人机,上面配备了热像仪,可以拍摄红外线图像。他随身携带了10~12组电池,将无人机升空,查看地面的热源。 排除了各种误报(主要是野生动物水獭、鹿、熊)以后,终于在凌晨1:40 发现了小男孩的位置,正好在两组搜救人员之间(上图)。搜索人员迅速赶往该地点,救出了男孩,下图是搜索队前往救人的热像图。 2、漫游的老鹰 俄罗斯科学家为了了解濒临灭绝的草原老鹰的迁移轨迹,在它们身上绑定了追踪装置,里面的 SIM 卡会每隔一段时间,就发出一条短信报告位置。 10月初,这几只老鹰飞出了哈萨克斯坦草原,即将进入伊朗和巴基斯坦,这引起了科学家的恐慌。因为一旦进入那两个地区,手机信号就会变成国际漫游,短信费用将暴涨,从2卢布~15卢布一条,变成49卢布一条。 科学家在网上发起了"为老鹰充值"运动,希望网友捐款,弥补短信费用。鸟类爱好者纷纷支持,目前筹集的费用已经够一年的支出。下图为17只老鹰的迁移轨迹。 3、消灭脊髓灰质炎病毒 10月24日(星期四)是世界脊髓灰质炎日,世界卫生组织当天宣布在世界范围内根除第3型脊髓灰质炎病毒。 脊髓灰质炎病毒是小儿麻痹症的病因,这种病毒有三个类型(类型1、2、3)。第2型病毒已经在2015年根除,第3型病毒的最后一个病例在2012年尼日利亚北部出现,此后再也没有发现新的病例,可以认为它已经根除。 目前,只剩下第一型病毒还存在于阿富汗和巴基斯坦,今年报告了94个病例。一旦在这两个国家消灭了这个病毒,人类就将彻底告别小儿麻痹症。这将是继天花以后,人类消灭的第二种传染病。 4、搜索新算法 10月25日,谷歌发布了一种新的搜索算法 BERT,已经用于生产环境。这种算法最大的特点,就是考虑了搜索词的语序。以前的算法只考虑每个词本身,搜索hello world与搜索world hello,结果是一样的。 但是很多时候,语序是搜索结果的关键因素之一。上图搜索"巴西游客去美国的签证",里面的单词to表示语序。传统的搜索算法往往识别不了这个to,搜索的第一个结果是美国游客去巴西不需要签证,新算法的第一个搜索结果则是美国大使馆的签证网页。 目前,这种算法只对英语搜索有效,后面会扩展到其他语言。 5、人类的起源 大部分人类学家都认为,人类起源于非洲。现在,有一个研究团队提出,人类的祖先最早出现于非洲中部的博茨瓦纳,即人类的发源地在那里,时间是距今20万年前。在那里生活了7万年以后(即距今13万年前),开始向东北方向迁移,逐渐进入今天的埃及。 距今8万年前,人类开始走出非洲,迁移到全世界各地。 6、780天的飞行 美国一架太空无人飞机 X-37B 在地球轨道上飞行780天以后,10月27日回到地球。这架飞机大约是小型公共汽车的大小,具有航天飞机的许多设计特征,但是不能载人。它于2017年发射进入轨道,是美军的第五次太空轨道机试验任务。 此前的一次太空无人飞机在太空待了718天,于2017年返回地球。目前,该试验已经累计在太空进行了2865天。 7、一句话消息 一家数据公司称,2018年全世界的软件工程师有2230万人,中国有190万。 中国航天科技集团称,2050年中国将建成地月经济区,月球相关产业的产值可以达到10万亿美元以上。 沙特的阿美石油公司(Aramco)是全球最赚钱公司,决定进行 IPO。它的石油产量占全球的10%,去年净利润为1110亿美元,比苹果+谷歌+埃克森美孚还要多。该公司的总市值可能会到2万亿美元,目前世界市值最大的公司也只有1万亿美元。 美国心理学家重做了著名的"10000小时规则" 实验,结果发现练习10000个小时以后,你可以变得更好,但没法保证你一定会超过其他人。 美国空军邀请7个黑客破解 F-16 战斗机的数据系统,结果发现了不少漏洞。空军感到满意,明年计划邀请黑客攻击轨道上的真实卫星。 美国人口统计局提供的1960年与2060年的美国人口年龄结构图。今后几十年中,年轻人占总人口的比重将急剧下降。 俄罗斯程序员制作了一条 LED 领带,里面装有 LED 发光二极管,可以编程显示发光的图案。 Firefox 浏览器明年会隐藏弹出的通知框(notification,下图),用户必须点击地址栏图标才会显示。早该如此了,这个框和是否同意 Cookie,是网页的两个毒瘤。 文章 1、为什么秋天叶子会变黄?(英文) 一篇图文并茂的科普文章,制作精良。 2、华为 HR 五千字实名控诉(中文) 胡玲是一位从研发转岗到 HR 的华为员工,她的这篇5000字长帖讲述了她在 HR 岗位上几个月的感受。当研发员工月加班160多个小时的时候,HR 团队领导只关心160个小时中有多长时间是怠工;这位领导吃着公司200块一对的大闸蟹,却认为给食堂提意见的研发应该清退;当32岁的研发绩效B+被劝退的时候,40岁的 HR 同事上班摸鱼绩效三连B却还随心所欲。 3、JSON.stringify 如何影响 Node.js 的性能(英文) JSON.stringify() 方法用于 JSON 对象的串行化,该方法对 CPU 的消耗很大,会影响 Node.js 的性能。本文是深入分析。 4、影响世界未来最重要的三件事(英文) 一篇非常好的英语长文,指出有三种大趋势将完全改变世界和每个人的未来。 5、六个画板程序的 Linux 替代品(英文) 本文介绍6个可以用来作画的 Linux 开源程序。 6、华为 MateBook X Pro 笔记本体验(英文) 一个澳大利亚开发者购买了一台华为 MateBook X Pro 笔记本,在上面安装 Linux,本文是他的总结。 7、网站发布到 IPFS 指南(英文) 一个简单的教程,教你如何把网站发布到 IPFS,并设置域名解析。 8、Bash 自动补全的工作原理(英文) 本文教你如何为自己的命令行工具,加上 Bash 补全功能。 9、学术论文的变化(英文) 本文是一个以色列研究团队分析了200年来5.28亿篇学术参考文献,所得到的一些发现。这些年来,随着论文数量激增,论文变得越来越短,而标题、摘要、作者列表和参考文献却越来越长,大量的自我引用。研究者认为,论文的发表数量和引用数量,已经成为学者主要追求的目标。 10、如何把回调函数转为 Promise?(英文) JavaScript 的异步操作,传统上采用回调函数写法,本文介绍如何把基于回调函数的代码改为 Promise。 工具 1、浏览器地址栏的贪吃蛇游戏 整个游戏就在地址栏里玩。 2、algosuggest 一个在线工具,只需回答几个简单的问题,描述你遇到的机器学习场景,它就返回应该使用哪一种机器学习算法。 3、crontab 编辑器 crontab 是 Linux 系统的定时任务执行器。这个在线工具可以可视化生成 crontab 的配置文件。 4、Calibre 4.0 电子书管理软件 Calibre 发布4.0版本,底层进行了大幅度重写。 5、AltStore 苹果设备安装第三方应用商店的方法(不必越狱),看上去好像有效。 6、nanoid 一个极小的 uuid 生成的 JS 库。 7、AutoCannon 一个 Node.js 写的 Web 服务器负载性能测试工具。 8、streamlit 一个机器学习工具,可以一边写脚本,一边自动生成模型的可视化运行结果。还可以生成网页控件,手动拖拉查看模型变化。 9、Bitwarden 一个免费的多端密码管理器。 10、imagededup 一个基于 Python 的找出重复图片的工具,支持多种查重算法。 11、Visual Studio Online 微软官方的 Visual Studio 在线版,在浏览器里面提供 IDE 功能。 资源 1、折纸地球仪 该网站提供多种模板下载,可以打印出来,自己折纸做一个地球仪。 2、后端常用文档 该网站收集开发常用框架文档及中文翻译(部分是机器翻译),包含 Spring 系列文档、大数据(Apache Hive, HBase, Apache Flume)、日志(Log4j2, Logback),Http Server(NGINX,Apache),Python,数据库等最新官方文档。(@heyuxian 投稿) 3、码农周刊一周精选分类 码农周刊一周精选的分类整理。(@rogerzhu 投稿) 4、Go 语言风格规范 Uber 公司开源了该公司的《Go 语言风格规范》。 5、50座最具影响力的高层建筑 该网站评选和介绍,过去50年中50座最具影响力的高层建筑。下图是伦敦 Swiss Re Tower 大楼,179米高,2004年建成,俗称"小黄瓜"。 图片 1、数据、信息、知识、洞察、智慧 2、摄影师塞巴斯蒂昂·萨尔加多 1986年,巴西摄影师塞巴斯蒂昂·萨尔加多(Sebastião Salgado)在亚马逊丛林的一个金矿待了16天。5万人在那里手工淘金。 3、Apple I 与录音机 1976年,苹果公司的第一个产品 Apple I 电脑发布。 该电脑的数据保存在普通磁带上面,写入/读取数据的设备(即硬盘)是松下公司的 Panasonic RQ-2102 录音机。 文摘 1、软件架构被高估,清晰和简单的设计被低估 (1)设计一个计算机系统的目标应该是简单性 。 系统越简单,理解起来就越简单,找到问题就越简单,实现它就越简单。描述的语言越清晰,设计就越容易理解。 干净的设计类似于干净的代码:它易于阅读且易于理解。 (2)如何编写干净的代码? 编写干净代码有很多好方法。但是,你很少会听到有人建议,在代码中应用"四人帮"的设计模式。 干净代码的特征是:单一责任,明确命名和易于理解的约定。这些原则同样适用于清晰的架构。 (3)设计模式的作用是什么? 设计模式可以为你提供如何改进代码或架构的想法。了解常见的设计模式是一件好事,它们有助于缩短与他人的讨论,让别人以与你相同的方式谈论一件事。 但是,设计模式不是目标,它们不能替代系统设计的简单性。在设计系统时,你可能会发现自己意外地应用了一个众所周知的设计模式,这是一件好事。但你不应该为了采用一种或多种设计模式,而将其用作锤子,到处寻找钉子来使用它。 我承认,虽然我花了很多时间阅读和理解"四人帮"的《设计模式》,但它们对我成为一名更好的程序员的影响,要小于我从其他工程师那里得到的反馈。 作为一名工程师,你的目标应该是更多地解决问题,并通过它们进行学习,而不是选择闪亮的设计模式。 2、我的孩子喜欢抖音和 FaceApp 你8岁的女儿正在一个貌似梦幻般的游乐园里独自走来走去,这个游乐园远在中国或俄罗斯,一个你毫无了解的地方。 公园没有入场费,一切都是免费的,从糖果到数百个景点。公园充满了闪光和彩虹的所有颜色,有趣的音乐不断播放。 公园大得无穷无尽,她越深入公园,就会发现更多的乐趣。不需要排队,就可以参观各个景点。只要是能看到的东西,就立即可用。对她来说,这就像一个独立于外部世界的幻想宇宙。 你的女儿与数千名其他孩子一起在公园里游玩,大家都非常喜欢它,一样狂欢跳舞。她感觉好极了! 在此同时,拥有成千上万工人的巨型公司,通过高度机密的人工智能和机器学习、超级先进的摄像头、麦克风以及数百种其他传感器,监控你女儿在公园中的每一步。 该公司分析了数百万个数据,建立您女儿的完美模型。她穿什么衣服、她的音乐品味、她的动作、她的幸福感、伤心、着急、害怕。她在公园的每一步,公司都在分析她的面部表情。 进入公园仅几个小时,公司就知道了有关你女儿的一切,她的年龄、性别、兴趣爱好、确切的家庭位置、生日、眼睛的颜色、她的朋友、她喜欢什么衣服、她最喜欢的颜色,甚至无限期地保留了她的数据。 你的女儿毫无所知,仍然一切正常在公园玩耍。她感觉好极了! 游乐园不像监狱。她可以随时离开。有时她觉得有些不对劲,想离开公园。然而,每次她决定离开公园后不久,她都会想返回。她害怕错过了好东西,担心自己不会第一个发现有新景点可玩,不会认识新朋友。她最大的恐惧是,如果我的一位朋友发现了一项新活动,而我什么都不知道,这该怎么办。 人工智能监控系统收到了她想离开公园的信号,系统开始将她最喜欢的景点移向公园的入口区域,因此她无需走很长时间即可做到这个景点,一切对她来说都变得更加容易。更好的是,她在公园里喜欢的所有东西,从糖果到背景音乐,都针对她的口味进行了优化。她感觉好极了。 与此同时,公司的先进计算机网络一直在后台努力工作,通过过去几天和几周收集到的有关女儿的数百万条信息,为你的女儿建立一个完美的数据模型。庞大数据库还为她与其他孩子们进行了配对,这些数据库包括了公园的数亿其他孩子。 你女儿不知道的是,她现在已经成为公司的产品。公司用她作为模型和内容,去服务其他跟她相似的儿童,使公司创始人和股东成为亿万富翁。 言论与数字 1、 负利率的一个严重问题是,规模万亿美元的金融工具所使用的数学模型,根本无法使用负数。 -- 《负利率正在改写现代金融规则》 2、 世界正在迅速电气化,轿车、卡车、摩托车、飞机都在变成电动设备。原因大致相同:运行更安静,维护需求减少,性能和效率更高,能源使用更加灵活。 -- IEEE 3、 1900年,美国83%的死者不超过65岁,今天正好反过来,75%的死者超过65岁。 -- George Will 4、 一旦战争变成对峙的阵地战,就进入了静态阶段。在动态阶段,获胜依靠奇袭;在静态阶段,哪一方发射较多的弹药,哪一方获胜。 -- 二战德国元帅隆美尔 5、 人工智能的计算量越来越大,使得越来越少的人可以负担这样的计算能力。大型科技公司每年花费数十亿美元,建设自己的数据中心,垄断了计算资源。最终,只有它们才负担得起人工智能。 -- 《纽约时报》 6、 是的,美国人只能暴露在美国公司批准的宣传之中。 -- HN 读者评论美国政府宣布对抖音收购 Musical.ly 进行国家安全审核 回顾 去年的本周:《周刊第 29 期》 订阅 这个周刊每周五发布,同步更新在阮一峰的网络日志、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月 8日


为什么你应该使用 Git 进行版本控制 · Why's THE Design?

2019-11-07 02:02:00 Draveness

为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。


关于计算机科学的50个误解

2019-11-03 12:21:08 阮一峰

计算机科学(Computer Science,简称 CS)是大学的热门专业。但是,社会上对这个专业有很多误解,甚至本专业的学生也有误解。 一个美国的 CS 老师写了一份清单,列出了许多关于计算机科学的伪命题。它们都是 CS 学生信以为真,以后才慢慢明白,这些都是不正确或不完全正确的命题。 下面就是计算机科学的50个常见误解,欢迎补充。 1、 CS 毕业生懂 C 和 C ++ 语言。 2、 Java 语言是几乎所有编程任务的合理选择。 3、 懂得编程 == 懂得计算机科学。 4、 CS 毕业生是优秀程序员。 5、 CS 毕业生会编程。 6、 CS 教授懂编程。 7、 CS 教授会使用计算机,或者懂得互联网原理。 8、 如果一个软件可以运行在我的笔记本电脑上,就可以运行在其他人的笔记本电脑上。 9、 StackOverflow 问答社区的答案都是可信的。 10、 如果一段代码出现到互联网上,就意味着你可以使用它。 11、 开源软件意味着更少的错误并且更加安全。 12、 开源软件(open software)和自由软件(free software)是同义词。 13、 git 和 GitHub 是同义词。 14、 Unix 和 Linux 是同义词。 15、 bash 和 sh 是同义词。 16、 AWS 和"云服务"是同义词。 17、 "隐私"和"秘密"是同义词。 18、 "加密"和"安全"是同义词。 19、 聪明的程序员会写出聪明的代码。 20、 编程能力是一名优秀软件工程师的最重要品质。 21、 拥有 CS 学位是成为一名优秀软件工程师的必要和充分条件。 22、 计算机解析时间和日期是轻而易举的。 23、 CS 毕业生知道如何验证电子邮件地址。 24、 雇主关心 CS 学生选修了哪些课程。 25、 分布式网络是可靠的。 26、 第三方服务是可靠的。 27、 AWS 云服务是可靠的。 28、 你可以将整个文件读入内存。 29、 在fork命令之后,父进程始终先执行。 30、 删除文件需要对该文件具有写权限。 31、 线程竞争很少发生。 32、 面向对象编程是最好和最常见的编程范式。 33、 CS 毕业生不会被黑客钓鱼,因为他们了解计算机。 34、 CS 毕业生了解计算机。 35、 CS 毕业生已经学过大多数的重要课程。 36、 电子表格和 Powerpoint 只适用于商业活动。 37、 程序员大部分时间都花在编程上。 38、 计算机可以按照指令进行操作。 39、 技术和算法是中立的。 40、 学习人文学科是浪费时间。 41、 你的职业生涯需要使用大量数学。 42、 如果谷歌使用它,那么别的公司也应该使用它。 43、 如果一种技术很先进,就应该使用它。 44、 如果一种技术超过5年,就不是新技术。 45、 只为了能够用上红黑树或某个高级算法,重写代码是值得的。 46、 大学毕业后,你还有机会遇到霍夫曼编码。 47、 具有 CS 学位的两个人,将具有非常相似的背景和知识。 48、 算法复杂性和大 O 表示法在现实世界中一直使用。 49、 学术界某种程度上跟现实世界不一样。 50、 没有人会输入这种数据,或者这样写代码。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年11月 3日