跟随,学习,进步

The Insider Secrets for Hello World

2019-05-14 13:44:44 zhangqun

The Insider Secrets for Hello World You … 继续阅读 →

tags: 12000-all


The Insider Secrets for Hello World

2019-05-14 13:38:18 haidong

The Insider Secrets for Hello World You … 继续阅读 →

tags: ! Без рубрики


The Insider Secrets for Hello World

2019-05-14 11:10:32 zhangqun

The Insider Secrets for Hello World You … 继续阅读 →

tags: 12002-all


The Insider Secrets for Hello World

2019-05-14 07:39:52 zhangqun

The Insider Secrets for Hello World You … 继续阅读 →

tags: Uncategorized


The Insider Secrets for Hello World

2019-05-14 07:38:54 haidong

The Insider Secrets for Hello World You … 继续阅读 →

tags: Uncategorized


浅入浅出 Go 语言接口的原理

2019-05-12 12:25:00 Draveness

接口是 Go 语言的重要组成部分,它在 Go 语言中通过一组方法指定了一个对象的行为,接口 interface 的引入能够让我们在 Go 语言更好地组织并写出易于测试的代码。然而很多使用 Go 语言的工程师其实对接口的了解都非常有限,对于它的底层实现也一无所知,这其实成为了我们使用和理解 interface 的最大阻碍。


每周分享第 55 期

2019-05-10 02:37:44 阮一峰

这里记录过去一周,我看到的值得分享的东西,每周五发布。 欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。 (题图:昆山火车站,苏州,2018) 关于 996 工作制,已经有很多评论和报道,但是有一点似乎没人提到:程序员没必要来公司。 软件开发只需要电脑和网络,哪里工作并不重要,完全可以在家工作。事实上,很多软件公司都是远程办公,办公室根本没人去。比如,GitLab 公司2018年底有350人,分布在45个国家或地区,全部在家办公。它甚至有一个网页,专门宣传它的远程办公理念。 我对于 996 工作制不理解的地方是,有什么必要,一定要让大家在办公室待这么长时间。八小时的面对面还不够吗,剩下的时间完全可以回家工作。 有一种管理哲学是,我一定要盯着你,才能保证你的投入,避免你偷懒。很多软件外包公司就是这样,只能用公司的电脑开发,不能把电脑带回家,而且电脑无法访问外网,也不能安装未经批准的软件,所以要想工作,只能去公司上班。 我觉得,程序员要做的不是反对 996,而是提倡远程办公。对于重要的项目,可以一周七天、每天12小时的投入,前提是允许在家办公。 新闻 1、.amazon 顶级域名的纠纷 亚马逊公司申请了 .amazon 顶级域名,遭到了玻利维亚、巴西、哥伦比亚、厄瓜多尔、圭亚那、秘鲁、苏里南和委内瑞拉八个南美洲国家的反对。它们要求与亚马逊公司共用 .amazon 域名。后者不同意,只让出国别的二级域名,比如巴西是 br.amazon。双方争执不下,目前,这起纠纷将交给 ICANN 裁决。 类似的纠纷有过先例。2013年,阿根廷和智利提出异议后,美国户外服装品牌 Patagonia 撤回了 .patagonia 域名申请。 2、太阳能农业 德国正在进行一项实验,将太阳能发电与农业结合起来。在农地上方5米处架设光伏板,进行太阳能发电,下方依然是传统的农业耕作和放牧,发现这样可以使得土地的产值提高160%。 2018年是欧洲最热的年份之一,高温对农作物的产量产生负面影响。有了光伏板的遮挡,土地接受的阳光辐射减少了30%,这就增加了产量,另外,高温天气的额外阳光也提高了电力输出。但是,在其他季节,光伏板会使得下方土地的温度稍低。 3、韩国的食物垃圾回收 经过多年努力,韩国已经将食物垃圾的回收率,提高到了令人乍舌的95%。早在2005年,韩国就禁止食物垃圾倾倒在垃圾填埋场,必须专门回收。 2013年,韩国推行可生物降解的垃圾袋,强制居民必须把食物垃圾装进去,然后送到自动垃圾箱(上图)回收。而且,居民扔垃圾进去的时候,会按照重量收费,你扔的垃圾越重,支付的费用就越高。这促使居民去除水分,以减少垃圾的重量。据估计,食物垃圾的80%是水分。回收的食物垃圾将送往加工厂,分解成沼气和生物油,残渣可以变成肥料。 4、《人类简史》作者谈 AI 4月22日晚,在斯坦福大学可容纳2000人的大演讲厅,畅销书《人类简史》和《未来简史》的作者以色列著名历史学家尤瓦尔•赫拉利(Yuval Noah Harari),与斯坦福 AI 研究院领导者李飞飞,展开了一场人工智能对话。 赫拉利充分表达了他对 AI 的担忧,下面是他的一些精彩言论。 (1)大数据面前,自由意志、独立思考、民主决策都不存在,都是算法结果。 (2)AI 眼里的爱情,跟一场流感没有区别。 (3)AI 不透明,不跟我分享信息,而是跟广告商、大公司、政府组织联合来利用我,怎么办? (4)AI 的全球竞赛,比核竞赛更可怕。因为,核武器研发出来,没有人会随便去用。但是 AI 就不一样了,它是发展出来就马上会被用,不管三七二十一。 5、特朗普蠕虫 最近,巴拿马丛林发现了一种新的蠕虫,长度约10厘米,表皮光滑有粘液。它是一种穴居物种,几乎完全生活在地下,基本没有视力,眼睛只能分辨光暗。 一家建筑公司的老板以2.5万美元,拍卖得到该物种的命名权,然后他将该蠕虫命名为"特朗普蠕虫"。原因是特朗普拒绝承认气候变化,并且采取了很多极端化的措施,好像这种蠕虫只能看出黑白,无法看到更多的颜色。 6、带有人类基因的猴子 昆明动物研究所宣布,人类的 MCPH1 基因已经移植给了猴子。该基因跟大脑发育有关,研究人员想看看,猴子是否会变得更聪明。现在已经有11只带有人类基因的恒河猴诞生,科学家称,转基因猴比野生猴的记忆能力"明显提高"。 7、人工智能创造的游戏 设计公司 AKQA 宣布,世界上第一个人工智能设计的运动 speedgate 已经诞生。人工智能分析了400个人类游戏的规则,然后创造出了该游戏。 游戏时,每方有6个球员,三个前锋,三个后卫。球场有三个门,通过中间的门,攻入对方球门,就能得分。(@CharlesCCC 投稿) 8、一句话新闻 马斯克称,特斯拉汽车的自动驾驶技术极其先进,一年之内,人类就可能无法接管车辆的驾驶,因为人类驾驶比自动驾驶更危险。 币安交易所5月7日遭攻击,被黑客提走了7000个 Bitcoin,损失约人民币2亿多元。币安表示将全额承担这笔损失。 一家德国公司宣布,实现了一公斤电池储存一度电。这个能量密度前所未有,将可能使得电动汽车一次充电,行驶1000公里以上。 英国国家网络安全中心发布一项研究,分析2300万个密码之后,发现互联网最常使用的5个密码是:123456,123456789,qwerty,password 和 1111111。 一项研究发现,全世界范围内,热点事件引发的关注时间越来越短。2013年,推特的热点关注平均是17.5小时,2016年下降到11.9小时,即热点新闻引发关注的平均时间只有半天。 文章 1、为什么 SQL 如此成功?(英文) SQL 语言诞生已经25年了,生命力只有增强,没有丝毫减弱。即使不是关系型数据库的产品,都在设法提供 SQL 类似的查询语言。本文分析 SQL 为什么如此成功的几个原因。 2、Node.js 的简单 JWT 实现(英文) JSON Web Token 是一种令牌的生成机制,用于网站的授权和认证。本文介绍 Node.js 如何实现一个简单的 JWT。 3、50万行 Java 代码移植到 Go 语言的感想(英文) 本文作者将一个大型 Java 项目改为使用 Go 语言,详细比较了 Java 与 Go 的一些差异。 4、Nokia N9 的闹钟设计(英文) Nokia N9 手机的闹钟 App 的设计非常出色,作者介绍这个设计的优秀之处。 5、何时使用 TypeScript?(英文) TypeScript 正变得越来越流行,本文作者谈了自己的看法,何时应该使用 TypeScript,何时应该使用 Native JavaScript。 6、如何发现隐藏的摄像头?(英文) 现在隐藏的摄像头越来越难以发现,比如上图的"6"里面有一个摄像头。本文介绍如何发现这种摄像头,前提是摄像头必须跟你在同一个局域网里面,否则还是发现不了。 7、请不要用 JSON 作为配置文件(英文) 本文指出 JSON 的发明目的是"轻量级数据交换格式",根本不适合作为配置文件。 8、数据储存设备的历史回顾(英文) 本文通过图片介绍历史上的数据储存设备,上图是世界第一个超过1 GB的硬盘1980年的 IBM 3380,可以存储2.52 GB,重 250公斤,售价8万美元~14万美元。 9、浅谈机器学习中的文本摘要(英文) 本文介绍如何使用 Python 自动生成一篇文章的摘要。 10、微信公众号文章链接 GitHub 文章的方法(中文) 微信公众号不允许外部链接,如果想在文中插入 GitHub 链接,可以考虑采用本文的方法。作者提供了一个小程序,可以抓取 GitHub 页面,只要跳转到这个小程序就可以了。 11、全平台框架 Flutter(英文) 谷歌发布 Flutter for web,正式宣布 Flutter 成为全平台框架,支持手机、Web、桌面电脑和嵌入式设备。现在学跨平台应用开发,第一个要看的可能不是 React Native,而是 Flutter。(@ifrontend-xyz 投稿) 软件 1、fyne 跨平台的 Go 语言的图形界面库。 2、jimp 一个 Node.js 的图像处理库,为图像加特效。(@ifrontend-xyz 投稿) 3、GridManager 一个网页表格的 JS 库,支持多种操作。(@baukh789 投稿) 4、laravel-s 一个 PHP 的胶水项目,将 Swoole 用于 Laravel 项目。(@hhxsv5 投稿) 5、griffith React 的视频播放器组件。 6、Kroki 自动生成图形的开源服务,支持多种图形(PlantUML、GraphViz、Mermaid 等等)。 7、md2pdf 通过浏览器,将 Markdown 文本保存成 PDF 文件,并且可以定制页面。 8、scscmsMusic 一个 Chrome 浏览器扩展,用来听歌,支持远程音乐和播放列表。(@scscms 投稿) 9、mokia 一个 mock 网络服务的 JS 工具库。(@varHarrie 投稿) 10、asciiflow 一个画 ASCII 码框图的网站。(@bzhux 投稿) 11、avataaars generator 开源的卡通头像生成器,可以定制各种头像参数。(@ifrontend-xyz 投稿) 12、Windows Terminal 微软新发布的 Windows 终端,提供多标签、分割窗口、快捷键、完整的 Unicode 字符支持等功能。(@erdong 投稿) 资源 1、广东工业大学计算机学院课程攻略 该仓库收集该校从大一到大四各门课程的资料。(@brenner8023 投稿) 2、跟我写 JPEG 解码器 中文教程库,讲解 JPEG 图片压缩标准和理论,并带有配套源码(Rust 语言)。作者希望读者只要跟着学习,就能写出自己的 JPEG 图片解码器。(@MROS 投稿) 3、vue-unit-test-with-jest 教程库,介绍如何用 Jest 为 Vue 项目写单测。(@holylovelqq 投稿) 4、《HelloGitHub》第 36 期 分享 GitHub 上有趣、入门级的开源项目的月刊,帮你找到编程的乐趣。(@521xueweihan 投稿) 5、github-rank Github 中国用户排名。(@xurui3762791 投稿) 6、今日掘金 每15分钟抓取一次掘金首页数据,保留点赞数大于55的文章,过滤出质量相对较高的文章。(@ZY2071 投稿) 文摘 1、终生不婚率 以下摘自日本纪实书籍《无缘社会》(上海译文出版社,2014)。 社会学把五十岁时仍未结过一次婚的人的比率称为"终生不婚率",一般认为这个比率今后会呈增长趋势。 (日本)男子的终生不婚率2005年时为16%,预计2030年将上升到大约三个男子就有一个。女子2030年将为23%,虽然略低于男子,然而与2005年相比,则相当于增加了两倍以上。今后社会中,终生不结婚的现象将会司空见惯。 我们就终生不婚率急剧攀升,对专家进行了采访。藤森克彦是瑞穗信息综合研究所的首席研究员,他很早就关注单身化的进展。藤森君认为,不结婚者增加的原因,有以下几项: 一、便于独立生活的城市基础设施日趋完备(诸如便利店的普及等),独自一人生活的不方便越来越少; 二、终生职业急剧减少,收入不稳定的非正规雇佣越来越普遍。 三、生活方式发生了变化,到了某个年龄必须结婚的社会观念正在弱化。 四、人们对婚姻质量的要求提高,而且女性经济实力上升,不结婚也能够生活的人增加了。 他说其中第二项的原因尤为重要。大多数人要结婚成家时,会想到要增加住宅费用和子女教育费等支出。如果此人从事的是工资和待遇均不稳定的非正规雇佣工作,他势必会心中不安,担心将来这些费用无法筹措,从而想结婚也结不了婚。 2、那些没有发布的项目 作为一个程序员,我有100多个没有发布的个人项目。 它们通常是这样开始的:我对一个想法感到兴奋,估计可以在较短的时间内完成,比如一个周末或几周。结果也差不太多,我疯狂地工作一段时间,项目或多或少都写好了。 但是它能够发布了吗?它是否算完成了呢?有趣和令人兴奋的部分确实是基本完成了,能够证明某个概念是有效的。但是,又好像缺少了一些东西,不是特别能引起别人的兴趣,有一些乏味。项目缺乏设计或视觉呈现,这算不上很重要,功能才比较重要,项目确实能工作。 它也没有登陆页面和介绍页面,这些将对新用户非常友好。但我不是一个好的作家,写不出太多文字。我甚至讨厌写作,我害怕被别人评判,所以我选择不写。 最后一个缺失的部分是营销。世界上几乎没有任何事情,比一个内向的人想到一个创意更糟糕,因为他不得不向全世界推销自己的想法。如果世界批评你的项目怎么办?如果你了解到,别人已经做过了怎么办?世界也可能完全沉默不加理睬,就像以前的许多人一样,你的项目将沉没在互联网的深处。 这些缺失的部分不算多,可能还需要投入整个项目时间的20%。但是这最后的20%,对你来说,比80%用在编码的时间更难做到。因此,你可能会让项目就停在那里。何况世界上又出现了新的闪亮的东西,你又可以急切地在新东西上工作了。 再过一会,你就会去拥抱新项目,忘了旧项目。让那些没做完的事情继续保持没做完,让这样的周期变成永久化。 图片 1、世界最大灵骨塔 台湾新北市,一座白色巨塔矗立在三芝区,外形呈六角形,顶层为宫殿式的望楼塔造型。楼高达二十层的巨塔在翠绿的山峦中尤其突出!这座建筑其实是一个多层式的骨灰盒大楼──龙岩真龙殿生命纪念馆。 该大楼聘请了日本建築大師安藤忠雄事务所負責設計,2002年正式開幕。一共可以容纳38万个骨灰盒。二楼到四楼是三宝佛殿,四楼以上是骨灰盒放置场所。目前,所有位置几乎已经全部售出。 2、《黑客帝国》的片头 电影《黑客帝国》的片头非常著名,一阵绿色的"字符雨"从天而降。很多人很好奇,这些字符到底是什么内容? 现在答案终于揭晓。电影的设计师 Simon Whiteley 告诉大家,他的妻子是日本人,他接受了电影的设计任务回家后,发现妻子有一本寿司菜谱,里面有各种字符,而且这本书是直排版,文字都是从上到下。他觉得非常合适,就使用这本书里的字符,制作了"字符雨"。 言论 1、 我的工作压力很大,我能想到的唯一应对方法就是努力投入工作,这是我释放压力的唯一途径。 -- 艾伦·图灵。他的马拉松成绩是2小时46.03分钟,有人问他为什么刻苦地训练长跑,他做了上面的回答。 2、 20年前,每个人都使用 Windows,只有一小部分人在业余时间浪费生命编译 Linux。 Windows 用户看到以后,感到很困惑:"你们已经拥有了所需的一切,能够完成工作并且易于使用,为什么还要这样折腾?!" -- 《AWS vs K8s 是新形式的 Windows vs Linux》 3、 Stack Overflow 已经成立11年了,现在,世界上每个开发者实际上都使用它。我经常看到开发者编写代码时,他们就会在一个浏览器窗口中打开 Stack Overflow。 嘿!我们保证,你不用注册或付钱,就能看到答案。 -- Joel Spolsky,Stack Overflow 的联合创始人 4、 原型产品或者第一个版本,几乎总是不需要那些时髦的 Web 框架。你需要的是以最快的速度推向市场,忽略那些花哨的潮流,确保第一次出货。 -- 《你可能不需要时髦的 Web 框架》 5、 十六世纪,欧洲普及印刷术以后,一个意外不到的后果是,大学教授的薪水急剧上升,开始远远高于技术工人。 -- 《印刷术推动欧洲》 回顾 去年的本周:《每周分享第 3 期》 保险公众号推荐 最后,介绍一个优秀的保险公众号《保哥和八姐》,很感谢他们一直支持我的网站。其实,去年已经推荐过一次了,今天特别在周刊再推广一下。 保哥是主笔。他是中南财大毕业,保险公司工作十年,负责保险产品设计和核赔,所以很熟悉各种保单的猫腻。他的理想是公众号写满三年,然后结集出版自己的保险书。 八姐是保哥的老婆,日本名校早稻田大学金融学毕业,香港和大陆两地都管理过大型资产,偶尔兴起会在公号写点文章。 他们公众号的特别之处,在于对保险行业和产品的介绍比较深入,提供专业视角,注重实务,绝非纸上谈兵。此外,他们比较坚持自己的价值观,从来不跟风,也不拍脑袋,说一些不负责任的言论,任何知识点、产品资料,都要自己研究透了,才敢写。 这个公号属于是我少数订阅的金融号之一。如果你想要了解保险,或者最近想要购买保单,不妨关注看看。 订阅 这个专栏每周五发布,同步更新在我的个人网站、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年5月10日


HTTP API 认证授权术

2019-05-09 13:37:29 陈皓

我们知道,HTTP是无状态的,所以,当我们需要获得用户是否在登录的状态时,我们需要检查用户的登录状态,一般来说,用户的登录成功后,服务器会发一个登录凭证(又被叫... Read More Read More

tags: 程序设计,网络安全,HMAC,HTTPS,JWT,OAuth,Security,安全


五一游记

2019-05-04 07:30:30 Yisaer

爽到五一假期抽了当中两天去扬州玩了一趟,整体而言玩的还是比较令我满意的。比起以前去的其他城市玩,扬州有一个特点就是他的所有景区基本上都集中在主城区这一块,这样就基本上节约了弯弯绕绕的来回奔波,可以直接沿着一条线路直接玩下来,对安排旅程而言。这次决定五一去扬州玩是一个非常仓促的决定,一来是前段时间我一直在忙工作上的事情,基本上4月份的每个礼拜都有那么几天一直加班到八九点,另外一方面我女朋友也在着急肝毕设(在这里要特别谢谢小宝宝在邮肝毕设的情况下也愿意出来旅游!!)。所以真的开始打算五一决定出去玩的时候,已经是4月26/27这几天了。所以在五一前的最后一个周末,我们打开携程上的一个简略的高铁路线图。挑了几个离上海比较近的城市后,最终定在了去扬州玩。瘦西湖我和女朋友两人11点一起坐高铁从上海出发,坐到南京站后转乘动车来到了扬州站。出了站之后,我们就直接坐着旅游专线公交到了大明寺啦。本来按照原来的计划是先在大明寺玩,然后再从大明寺出来到瘦西湖的北门进去。可惜到达大明寺时都已经下午三点了,为了能更好地体验到瘦西湖的景色,于是我们俩就决定这次先不去大明寺了,而是直接从瘦西湖的北门进园区。同时去瘦西湖玩的话推荐提前一天在网上订购园区票,这样就不用到了园区再排队买票啦,可以直接刷二维码进去。比起五一的其他景点,扬州这里有个明显的好处就是没有其他景区的人山人海,虽然瘦西湖里也有不少的游客,但是整体程度还是比较让人满意的。来到瘦西湖里面以后,给我的感觉比起湖,自己更像是来到了某个园林。从北门进入园区,会先来是来到一片松树的盆栽园区,我们俩进去逛了逛还挺好玩的,各种松树盆栽修剪的确实各有特色。这棵盆栽我要特别的说说,我当时看到它的第一眼就觉得这颗盆栽就像一艘中世纪大帆船一样,不知道有没有人和我有同样的看法。从盆栽园区出来后继续往南走,路上还有许多其他的小花园和小溪流。有各种各样我叫不上名字的五颜六色的花以及小动物。可能是因为瘦西湖园区里面人不是很多,所以还有很多野生的动物能看到。可惜当时我和女朋友两个人都在那一个劲的哇,哇,哇了。都忘记拍下来了,结果现在写游记时发现都没有那时候的素材了。一直往南走走到西门这块,我俩到了西门这块的一个景点,石壁流淙这里。这里也是另外一处让我记忆深刻的地方,这里的亭子和游道都修的非常古色古风而且有很多座位可以让我们坐下来休息会,而不远处石山上的水流以极大的声势砸在池中漫起水雾的情景也挺好看的。从石壁流淙出来后,我们就往二十四桥这个景点去。虽然瘦西湖整个园区的人并不多,但是二十四桥这里景点人是真的多,而且大家都会想去走下二十四桥,结果就导致这个桥常年人满为患。其实玩到这里我和我女朋友俩就已经比较累和比较饿了,好在二十四桥这里还有观光船可以坐。所以后面的旅程就是我直接和我女朋友坐船从二十四桥坐船到南大门了。坐船前我们俩发现湖上有个小岛后很多小鸭子和一只黑天鹅,也是非常可爱了。扬州狮子楼从南大门出来的时候已经临近饭点了。在去扬州之前,我看了很多攻略都介绍说去瘦西湖玩推荐从西门往北走,一路玩到北门再去大明寺转转。然而我发现扬州的美食和特色街道都集中在南边这块,所以我当时做出决定从北门入园,这样我们从南门出来以后就能直接去吃晚饭以及体验其他项目啦。我们晚饭去的时候在扬州大学内部的扬州狮子楼,这个饭店也算是在扬州非常有名的一家饭店了,而且离我们出来的南大门并不远,走路5分钟就走到了!我们到饭店的时候还算早,所以就等了20分钟不到就能进去吃饭啦。来到狮子楼以后,肯定要点一下他们的特色狮子头啦,这个狮子头做的非常大也非常酥软,里面肉非常多量也非常足。其实非常适合三到四人去吃,我们俩吃了非常久最后都没彻底吃完…另外到了扬州怎么能不品尝一下当地的扬州炒饭!感受这比拳头还大的狮子头…心心念念的扬州炒饭!虹桥馆温泉坊在我查攻略的时候,一直听他们说扬州素来有“白天皮包水,晚上水包皮”,即是指白天要去体验扬州的早茶,晚上要去体验扬州的洗浴。所以吃完晚饭以后,我们俩就直接走到了虹桥坊这块。不得不夸的是,当时决定从南大门出来的决定简直太对了,因为虹桥坊就在南大门旁边,所以我们从狮子楼走到虹桥坊的整个过程不到二十分钟就到了。当时在大众点评上搜扬州的洗浴类目时,虹桥坊的温泉馆就是里面置顶的第一名,所以我们吃完饭后就直奔而去了。虹桥坊内部修的其实也非常漂亮,我们沿着大路左逛右穿,那个时候要接近落日了,路上的景色也十分漂亮。在经历了一天的奔波与逛景点后,尤其是我还背了一天比较重的斜挎包,没有什么能比体验一趟温泉和按摩更加爽的事情了。温泉馆里面能体验的项目非常多,有各种冲击的温泉,也有露天的岩泉和汤壶,我也第一次接触了一下搓澡和敲背,被老大爷熟练的手法痛并快乐的玩弄着。因为温泉馆里面男汤和女汤是分开的,所以和女朋友约定好7点半出来见面,结果我一不留神把自己放纵到了8点一刻才出来,出来以后被女朋友爆K了一顿,并且立下了下次再敢迟到就写检讨贴在博客上并广而告之。说道这个我是真的错了,希望大家以此为戒千万千万千万不要让你女朋友等你,尤其是你居然在里面享受,否则你会死的很惨。总之在经过了深刻我的认错检讨后,我们俩泡完澡以后躺在榻榻米上休息了半小时拍了非常多的沙雕自拍。一个假装自己有长发的傻子总结从温泉坊出来后就已经九点多啦,本来还打算逛一逛东关街的夜市了,然而扬州夜晚结束的太快,即使才晚上九点整个城市也像快要入睡了一般,我们怕打不到车就决定放弃夜逛东关街,早早的打车回酒店啦。总的而言这一天在扬州玩的非常开心,整个路线安排也是比较满意的,虽然大明寺和东关街没去比较可惜,但是能体验到瘦西湖和温泉坊真的让我非常惊喜!


每周分享第 54 期

2019-05-03 04:45:55 阮一峰

这里记录过去一周,我看到的值得分享的东西,每周五发布。 欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。 (题图:鸣号自动侦测系统,上海,2019。) 能够获得暴利的职业,都有一个共同特点:可扩展性(scaling):一次劳动可以服务成千上万的人。 软件、电影、游戏行业都具有可扩展性,作品的生产成本是固定的,但可以被消费无数次,所以有巨大的获利空间,创造出许许多多的富豪。另一方面,理发师、厨师、出租车司机一次劳动,只能服务少数几个人,就不具有可扩展性,很难获得暴利,生存得很辛苦。 最近,我读到美国一个风险投资家的文章。他说了一句发人深思的话: "写作是最具可扩展性的活动。你呆在家里,不去参加活动/会议,只是在网上写下自己的想法,然后你就具有了最好的可扩展性。" 我想了一下,还真是这样。你写了一篇文章,想让其他人看到,只要到处张贴就行了。每次转贴,就是扩展了一次。这比其他产品的扩展容易多了。面包师傅想要更多的人尝到自己的面包,只能多开面包店;网站要扩展,只能购买更多的服务器。相比之下,文字的扩展简直是零成本。 大公司每年花费数十亿美元用于广告,以求人们关注他们的产品。但是,一个好的作家可以免费获得这种扩展性。这就是为什么你应该把自己的想法写下来的原因,这么好的免费传播渠道,为什么不用呢?你以为,写下来不会有人看。错,其实是有人会看到的,如果他们觉得有价值,就会帮你传播出去。 新闻 1、实验小鼠的需求旺盛 随着中国生物科技的发展,对于实验小鼠的需求持续增长,从基因改造到药物实验都需要小鼠。据专门生产小鼠的公司说,中国一年的实验小鼠需求超过100亿人民币,最贵的小鼠超过10万元人民币一对。 该公司在广州工厂饲养了1万只小鼠,正在扩建上海工厂,可饲养10万只小鼠。下图是饲养车间。 2、世界最深的游泳池 波兰正在建造一个45米深的游泳池,预定今年晚些时候开放,这个游泳池包括水下洞穴和悬崖,用来训练专业的潜水员。同时,游泳池还会配备水下隧道,供那些不想下水的人参观。 目前,世界最深的游泳池是意大利的 Y-40 Deep Joy(下图),深度为40米。2020年,英国预计将建造一个更深的游泳池,深度为50米。 3、铅水管升级的新方案 很多以前的水管是铅水管,导致自来水的铅含量偏高,对人体有害。替换这些水管,往往需要很高的成本。美国的一个环境工程师提出了一个新方案,声称可以低成本地解决这个问题。 首先往自来水加入磷酸盐,然后在水管里面放置一根电线,水管和电线同时通电,让水管带有正电荷,电线带有负电荷。这使得水管迅速将带正电荷的铅离子释放到水中,与带负电荷的磷酸根离子形成固体磷酸铅晶体层。这种晶体层会凝结在水管内曾,将水与水管的铅隔离,防止铅溶解到水中。整个过程只需要几个小时。 4、樱花屋 每年三四月间,樱花盛开,日本赏樱的人数估计今年有6300万人(包含国内和国外游客),这已经日益成为一笔大生意。 三月底坐在樱花树下,还是比较冷的。一家日本公司于是推出"樱花屋"租赁服务,提供透明的塑料圆顶小屋,放在樱花树下,屋内暖气加热,并且还有一张咖啡桌。人们可以坐在小屋内,看着头顶的樱花飘落,又不会感到寒冷和潮湿。租赁一天的价格是80美元,相当于500多人民币。 5、两台显示器还是一台宽屏显示器? 程序员为了提高效率,往往需要较大的显示面积,可以同时显示多个窗口。最近有一项研究,调查哪一种情况效率比较高,两个显示屏,还是一个宽屏显示器?最后发现,两个显示器有助于提高效率,但是宽屏显示器可以减少扭头的次数和幅度,对颈椎健康有利。 6、锁定到2067年的 iPad(英文) 一个3岁小孩玩他爸爸的 iPad,由于不停地输错密码,iPad 被锁定2500多万分钟,相当于2067年才能再次使用。iPad 的设计是输错密码次数越多,就会锁定越长时间。 他爸爸上网征求网友意见,应该怎么办。目前来看,他好像只能进入DFU(设备固件更新)模式,重新刷新固件。 7、开车玩手机是新的酒驾 很多人开车的时候,会看手机。据统计,去年美国有6,227名行人,可能死于玩手机的司机。未来,玩手机成瘾的人可能会取代酒驾,成为公路上的最大威胁。 一项研究表明,玩手机的司机开车时,有10%以上的时间在看手机。这导致于他们反应速度大大下降,极容易导致事故。 8、一句话新闻 非洲猪瘟可能会使中国今年的猪肉产量下降30%(5亿头猪损失1.5亿至2亿头),这个数字相当于欧盟每年的猪肉产量。 富士康开始在印度组装 iPhone,据称印度工人的工资是中国的三分之一。 加州今年的监狱经费将达到114亿美元,平均每个犯人的成本是75,560美元,是全美最高的。如果罪犯不断增加的话,很快会连犯人也关不起。 美国停止公布核弹头的数量,上一次2017年公布时是3,822枚。据美国专家判断,俄罗斯有4,350枚核弹头。 文章 1、Arduino 入门(英文) Arduino 可以看做是一块可以编程的电路板。本文介绍它的基本知识,以及如何用它来控制 LED 发光二极管。 2、Python 图形界面开发(英文) Tkinter 是 Python 内置的 GUI 开发模块,本文一步步教你怎么使用。 3、为什么 request 项目进入维护状态?(英文) request 是最流行的 Nodejs 模块之一,用于发出 HTTP 请求。该项目现在进入了维护状态,不再开发了。作者解释说,这个模块历史太久了,又太流行,导致无法做重大修改,跟上语言的发展,现在是时候放弃它,尝试新的 API。 4、置信区间还是 P 值?(英文) 本文探讨了置信区间和 P 值,这两个统计学概念的异同。它们都用来评估统计发现的可信性。 5、创业公司如何才能不失败?(英文) 孵化器 YC 的创始人之一杰西卡·利文斯顿的演讲,列出她眼中创业公司成功的条件。 6、Quip 的历史(英文) Quip 是一个协同工作软件,2014年诞生,2016年被 Salesforce 以7.5亿美元收购。它的两个创始人,一个担任过 Facebook 的 CTO,另一个曾在Google领导工程和产品团队。 7、Evernote 为什么没能实现它的目标?(英文) 本文回顾了 Evernote 的历史,从诞生到快速发展,以及后来几个重大的决策失误,分析它的经验教训。 8、25年后重新采访 Linus Torvalds(中文) Linux Journal 杂志1994年创刊号采访了 Linus Torvalds,为了庆祝杂志诞生25周年又重新采访了他(英语原文)。上一次采访时,他还没结婚,现在有三个小孩,老大马上就要大学毕业。上一次,杂志问他有何梦想,他说希望 Linux 统治世界。现在,他说早就不开这种玩笑了,因为这话已经不像玩笑了。(@Y024 投稿) 9、什么是幂等?(英文) 幂等这个概念,指重复操作不会产生任何影响。比如,电梯重复按两次,不会有差异。分布式系统特别强调幂等,因为通信可能丢失,就会需要重复发信号。 10、使用 systemd 创建 Linux 服务(英文) 创建 Linux 服务相当容易:使用你喜欢的编程语言编写一个长期运行的程序,并使用 systemd 将其转换为服务。 11、访问 Chrome Dino 游戏的创造者(英文) Chrome 浏览器离线时,会出现一个恐龙跳跃的游戏。为了庆祝 Chrome 浏览器诞生10周年,谷歌官方博客采访了游戏的创造者,并且展示了恐龙头戴蛋糕的一个特别版。 软件 1、stylelint 一个 CSS 的 lint 工具。 2、ColorUI 专用于微信小程序的 UI 组件库,纯 CSS 组件。(@ifrontend-xyz 投稿) 3、leon 一个开源的个人助理,类似 Siri,可以与你英语对话。(@ifrontend-xyz 投稿) 4、cleave.js 一个对输入框中用户输入的内容,进行格式化的 JS 库。(@ifrontend-xyz 投稿) 5、mas Mac 应用商店的命令行界面,可以用来从命令行安装 MacOS App。(@ansiz 投稿) 6、AP Studio 一款新的 Android 开发 IDE。 7、datash 直接从浏览器发送和接收"端对端"加密的文件。 8、scrapydweb Python 爬虫框架 Scrapyd 集群管理的全功能 web UI,支持 Scrapy 日志分析和可视化、自动打包、定时器任务和邮件通知等特色功能。(@my8100 投稿) 9、dropcss 一个清理样式表里面无用的 CSS 代码的工具。 10、brickr 该软件可以生成 3D 的乐高积木图像,使用 R 语言编写。 11、Pock 把 Mac 电脑的 Dock 放到 TouchBar 的工具。(@Y024 投稿) 12、微软新闻 微软最新推出的个性化新闻的 App,有繁体中文版,底层是微软为旗下所有产品统一的新闻引擎。 资源 1、如何构建一个简单的数据库 英文的开源电子书,介绍如何用 C 语言实现一个类似 sqlite 的数据库。 2、简单逻辑 免费电子书,通过实例介绍如何通过 Prolog 语言实现智能推理。 3、libpku 北京大学各种课程资料收集,目前已经接近100门课,让你在网上读北大。(@Y024* *投稿) 4、Programming Notes for Professionals books 该网站提供各种免费计算机教程下载。(@zhjp0 投稿) 5、神经网络与深度学习 复旦大学邱锡鹏老师的开源电子书,主要介绍神经网络与深度学习的基础知识、主要的模型,以及在计算机视觉、自然语言处理等领域的应用。(@ifrontend-xyz 投稿) 6、创意共享图像搜索引擎 创意共享基金会推出的官方图像搜索引擎,索引了3亿张图片,都可以免费使用。素材主要来自 Flickr 和 Behance,下一步会把维基百科的图片放进来。 文摘 1、费曼的故事 有一天,物理学家艾伦·莱特曼和他的两个研究生,在加州理工学院的食堂一起吃饭,谈论他们刚刚做的计算:如果把一束光照向一个正在旋转的黑洞,根据计算,角度合适的话,光有可能从黑洞反弹出来,并且带有比进入黑洞时更多的能量。 费曼在旁边听到了谈话,插话说:"你们描述的那个过程,听起来非常像量子的受激发射。" 吃完饭,大家边走边谈,来到艾伦·莱特曼的办公室,一个小小的房间。费曼走到黑板前,开始研究黑洞发射能量的方程式。到目前为止,人们一直认为所有的黑洞都是全黑的,因为黑洞本身不会释放任何能量。但费曼在午餐时听了谈话之后假设,如果旋转的黑洞能够随着光的进入发光,那么根据量子力学,它也可以在没有任何物质的情况下发射能量。 几分钟后,费曼已经在黑板上,写出了黑洞释放能量的方程式。他没有兴趣抄下他写的东西。他只是想知道大自然是如何运作的,而他刚刚得出结论,考虑到量子效应时,孤立的黑洞能够发射能量。他完成了计算后,拍了拍手,把粉笔灰弄掉,然后走出了办公室。 费曼离开后,艾伦·莱特曼和学生看着黑板,一致认为这可能很重要,但是不知道有多重要。学生还有事,不得不离开了办公室。过了一会儿,艾伦·莱特曼也离开了。但是那天晚上,他意识到这是费曼的重大成果,他需要快点回到办公室,把方程式抄写下来。但是当第二天早上,他回到办公室时,清洁工已经把黑板擦干净了。 第二年,斯蒂芬·霍金发表了同样的结论,因此一举成名。没有人知道,费曼在一年前就得出了这个结论。 2、变压器里面的油脂 我在加州帕洛阿托市中心的一座漂亮的办公楼里工作,周围环绕着餐馆、酒店。我们是一家电脑公司,所在的办公楼需要大量电力,大约是100万瓦。 为了给办公楼提供100万瓦的电力,需要一个非常大的变压器,跟一辆小汽车差不多大小。由于这里是市中心,地面上没有空间,因此变压器被置于地下。马路下面挖了一个空间,放置变压器。 一百万瓦的变压器会产生大量的热量,为了保证通风散热,地面设置了一些通风口,加上了铁栅栏,不知道的人会以为那是下水道。 不久前,这条马路附近的户外休息区,出现一种难闻的气味。卫生部门接到了投诉,他们很快确定,气味是由渗入人行道的腐臭的油引起的。进一步的调查表明,臭油的来源正是放置变压器的地下空间。那里的油是熔化的食用油脂,变压器的热量使得那些油始终是液态的。整个地下空间完全装满了使用过的食用油脂,大约2000加仑,它们已经把变压器淹没了。 警方很快找到了原因。很多年以来,每天晚上,附近的一家餐馆都在夜深人静时,偷偷将用过的油倒入变压器的地下空间,以为油会流入下水道。当然,油脂倒入下水道是违法的,但那家餐馆可能认为不会被抓住。 变压器周围的油脂是非常危险的,一旦过热可能会引发火灾,油脂都是易燃品。 市政府不得不将周围三个街区停电,将油脂抽干净,更换了变压器。市政府表示,除了对肇事餐馆罚款,还会考虑密封变压器所在的地下空间。 图片 1、D21 无人机 D21 是美国的一种高空超音速无人侦察机,1962年开始生产,到1971年项目取消之前,一共生产了38架。 D21 的最后一次飞行是1971年3月20日,用于对中国进行高空侦察,最后坠毁在云南省,残骸被保留了下来。2010年,当作垃圾存放多年以后,终于在中国航空博物馆公开展出。 2、光学电报 伦敦到朴茨茅斯大约100公里。1796年,如果从朴茨茅斯传递一个消息到伦敦,猜猜需要多少时间?答案是十五分钟。这是用下面的设备完成的。 英国海军沿途设置了若干个信号站。每个信号站有六个旋转的板,可以通过绳索控制正面和反面,因此相当于提供一个6位二进制代码,允许传输63个非零状态。这些被分配为字母表中的26个字母,十个数字和一些有用的预设句子,例如"立即击败法国海军"。 上图是两个粗壮的士兵在绳索上传送消息,而右边的那个人接收来自下一站的信息。两个信号站的平均距离约为16公里。 这样的光学电报显然容易受到雾和其他天气影响。但是根据统计,每年至少200个白天,这套系统可以工作。 言论 1、 比特币其实只是一个计算机程序。这个程序连接到其他运行该程序的计算机,所有计算机都共享一个文件,该文件称为区块链。 -- 《什么是比特币?》 2、 我认为,2017年的时候,硅谷已经不再适合创业公司了。但是由于廉价种子资金的大量增加,使得这一点不那么明显。 -- Sam Altman,创业孵化器 YC 的总裁 3、 这八家公司(Facebook,苹果,微软,亚马逊,谷歌,腾讯,百度和阿里巴巴)每一家的市值,都超过了日本和欧元区任何一家公司的市值。 -- 《社会急需另一个互联网》 4、 根据我的个人经历,用来思考竞争对手的每一分钟,都是浪费掉的。 -- Paul Graham 5、 有些公司希望做能够在两三年内获利的事情,如果一件事在两三年内不见效,他们就会转向其他事情。所以,他们专注的主要是竞争对手,而不是客户。 -- Jeff Bezos 回顾 去年的本周:《每周分享第 2 期》 订阅 这个专栏每周五发布,同步更新在我的个人网站、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年5月 3日


CDC夜校回顾NO.1|奢侈品、心理学与Web动画

2019-04-28 09:39:24 CDCer

关于CDC夜校 关键词|专业 · 跨界 · 探索 · 成长 CDC 被称为腾讯用户体验设计界的“黄埔军校”,与我们不断求真求精求专的态度及多种学习成长措施有着密切的关联。CDC夜校至今已持续近10年,夜校题材不仅覆盖用户研究、品牌设计、体验设计、 ...

tags: 团队动态,CDC夜校,Web动画,奢侈品,心理学


每周分享第 53 期

2019-04-26 01:36:41 阮一峰

这里记录过去一周,我看到的值得分享的东西,每周五发布。 欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。 日本东京最近举行了一次"DNA 相亲会"。参加活动的男女互不认识,婚介公司根据双方 DNA 的相配程度,介绍他们见面。 这种相亲的依据是,根据 DNA 测序,如果基因高度相似或者互补,那么双方很可能就是相配的。报道说,参加者都认可这种想法,觉得比起其他方法,这样找相亲对象,可能效率更高一点,更可能找到合适的人,以后分手的可能性也会比较小。 如果这种方法可行,那么不久的将来,相亲节目和相亲网站也许都将不存在。只要 DNA 配型合适,你们就开始约会吧。 而且还不止于此,一家公司所有员工的 DNA,进行加总计算,就可以得到这家公司的"平均 DNA"。以后入学或者找工作,有可能都要测 DNA。要是你跟本单位的 DNA 不相配,对不起,只能请你另找别家了。 新闻 1、OpenStreetMap 获奖 2019年3月23日,自由软件基金会 FSF 正式将2018年的自由软件奖,颁发给 OpenStreetMap。理查德·斯托曼亲自颁奖。该奖项表彰显著造福社会、或者表达了自由软件运动理念的自由软件。 OpenStreetMap 是一个协作项目,用于创建可自由编辑的世界地图。它创立于2004年,目前拥有超过一百万社区成员参与编辑,已经有数千个网站、手机 App 和硬件设备上使用了它。它是唯一真正不受限制,可以自由使用的全球地图服务。 2、三个数的立方和问题 长久以来,数学家一直想知道,哪些整数可以写成 x^3 + y^3 + z^3 的形式,比如 29 等于 27 + 1 + 1,而 32 已经证明是不可能的。目前,小于 100 的整数里面,只有 33 和 42 无法确定能否写成三个数的立方和。 最近,一个澳大利亚数学家终于找出了三个整数,它们的立方和等于 33。 (8,866,128,975,287,528)³ + (-8,778,405,442,862,239)³ + (-2,736,111,468,807,040)³ = 33 3、加拿大政府资助"超循环"研究 加拿大运输部发布了一个招标公告,由政府出资,请研究机构评估所谓的"超循环"技术(hyperloop)。这种技术设想使用巨大的真空管,降低摩擦,从而高速移动人员和货物,预计速度可以达到1,000公里/小时,从加拿大东岸到西岸,只要三个小时,比飞机还要快。 加拿大政府想知道两个关键问题:该技术是否可行且安全?成本与传统高速铁路相比如何? 4、这张人像照片是伪造的吗? 现在的人像照片,已经无法确定真人还是假人。有人就收集了几十万张假人的照片,都是算法生成的,然后提供服务。你上传照片,系统返回长相相似的假人照片。上图左边是上传的照片,右边是系统返回的假人照片。 5、世界上最厚的流体和最久的实验 加拿大昆士兰大学的 Pitch Drop实验,是世界历时最久的实验,从1927年开始,到现在还没有结束。该实验由包含在玻璃漏斗中的黑色沥青组成,用来表明沥青实际上不是固体,而是一种非常粘稠的液体,是世界上最厚的流体,粘度约为水的1000亿倍。 沥青从玻璃漏斗里面,慢慢往下滴落。从1930年至今,一共滴下了9滴。最新的一滴是在2014年4月,预计第10滴将在2020年代的某个时候发生。 6、接听推销电话也能赚钱 英国一男子对于推销电话忍无可忍,注册了一个服务收费号码。这种号码要向拨入者收取服务费,常用于心理咨询之类的热线。该男子将这个号码,当作自己的联系电话,留作各种外部服务的联系电话。 这个号码的成本是10英镑,如果有人拨打这个号码,会被收取每分钟10便士。据该男子说,两年里面获利了300英镑。 7、一句话新闻 中国政府修订职业目录,新增13个职业,其中包括电子竞技员和电子竞技运营师。这意味着,玩电子游戏也是政府承认的正式职业。 美国科学家让已经死亡四个小时的猪脑,重新恢复了呼吸功能,但是没有出现意识。此事动摇了死亡的定义,如果死去的大脑是可以恢复生物功能的,那么这算死了吗? 丰田公司公开23,740项电动汽车和混合动力汽车的专利,供其他公司免费使用。由于大部分是混合动力汽车的专利,有人猜测丰田的动机是,使得混合动力汽车不会那么快被淘汰。 国家发改委发布《产业结构调整指导目录(2019年本,征求意见稿)》,将虚拟货币"挖矿"活动列入淘汰类行业。这意味着,中国可能禁止加密货币挖矿。 Game Boy 于1989年4月21日发布,今年是30周年纪念日。 Vue 免费视频课程 非常感谢 开课吧 赞助本期周刊。 2017年开始,Vue.js 迅速发展,用户数和粉丝量呈指数式增长。前端面试时,问题涉及 Vue 框架的次数已经不亚于当年的 jQuery。 对于那些不熟悉 Vue 的同学,这里有一份价值 1299元 的最新 Vue视频课程,可以 免费领取 。 课程内容包含 Vue 基础、Vue 高阶应用、Vue 项目实战 等部分。知识点比较全面,帮助你由浅入深的掌握 Vue 框架。下面是视频课程的完整内容,滑动查看 。 这套 Vue 视频由 开课吧 提供,属于精品付费课程《Web全栈架构师》的一部分。大家熟知的廖雪峰加盟开课吧,耗时半年研发了该课程,帮助初级前端工程师实现全方位进阶。课程深度对标百度P6+,适合有1-4年经验的前端程序员学习。 微信扫描下面二维码,领取视频课程,本期只有500个免费名额,欢迎添加。其他问题也可以微信咨询。 希望大家拿到课程后,能够认真看完,不要放着当做收藏。 文章 1、加强 Linux 服务器安全的七个步骤(英文) 自己架设 Linux 服务器的时候,按照本文的步骤,可以防止90%以上的攻击。 2、提高《星际迷航》的分辨率(英文) 机器学习已经可以将一幅低分辨率图像,提升为高分辨率图像。作者使用这项技术,尝试将早年一部 480p 的电视剧,提升为 1080p 高分辨率。 3、全文搜索的相关性评分(英文) 搜索结果一般按照相关性进行排序,某篇文章与你的搜索词相关性最高,就会排在第一位。相关性是怎么计算的,通常是使用 TD-IDF,但是更高级的算法使用 Okapi BM25。 4、Node.js 的多线程指南(英文) JavaScript 是单线程语言,但是 Nodejs v10.5.0 版本增加了 worker_threads 模块,使得 Node 也支持多线程。 5、如何无限延长一首歌(英文) 作者使用马尔可夫链将一首5分钟的歌,延长到了一个小时。多出来的部分都由软件自动生成。 6、Fuchsia OS 简介(中文) Fuchsia OS 是谷歌正在开发的下一代操作系统。本文是许中兴博士在开源开发工具大会 HelloGCC 2018上发表的一个关于 Fuchsia 的精彩演讲。 7、Nodejs 控制无人机(英文) 本文介绍如何编写 Nodejs 服务控制无人机,但是使用无人机品牌不是大疆。 8、日志记录的最佳实践(英文) 如果狗是男人最好的朋友,那么日志就是软件工程师最好的朋友。本文介绍日志的一些最佳实践,文后附有幻灯片,幻灯片比文章本身更有价值。 9、树莓派搭建空气质量监视器(英文) 本文是树莓派教程,附有示例代码,演示如何搭建一个空气质量监视器(需要自购传感器)。 10、芯片里面有什么?(英文) 芯片可以被认为是一个黑盒子,你通常不会看到它的内部。本文将展示如何打开芯片,看看里面是什么。 软件 1、freeciv-web 仿照《文明》的开源 Web 实时战略游戏,可以单人或多人在浏览器里面玩。 2、Kdenlive 一个功能强大的开源的视频编辑器,主要针对 Linux 系统,但是 Mac 和 Windows 也可以安装。 3、此简历不存在 该网站使用人工智能生成不存在的简历。 4、QuickDraw 谷歌 QuickDraw 功能的开源实现,可以识别随手画出的图形。 5、cloudconvert 在线文件格式转换工具,支持218种格式文件的转换。(@shallynever 投稿) 6、handtrack.js 一个在浏览器中进行实时手部检测的 JS 库。(@rolitter 投稿) 7、jsweet 一个 Java 工具,可以将 Java 代码转为 TypeScript/JavaScript 代码。 8、Pi API 谷歌推出的服务,可以获取指定位置的圆周率,比如圆周率的小数点后第10000位是7。 9、code-server 运行在服务器上的 VS Code 服务,支持大部分插件,可以在浏览器里面远程使用。 10、Commento 一个类似 Disqus 的开源评论服务。 11、Server酱 一个将服务器消息推送到微信的免费工具。(@Ming-Lei 投稿) 资源 1、manypixels 一个收集无版权插图的网站,提供 SVG / PNG 格式下载,并且允许更改颜色。 2、leetcode 记录个人 leecode 解题之路的笔记库,使用 JS 语言。(@azl397985856 投稿) 3、Automate the Boring Stuff with Python 免费电子书,Python 语言的入门和初级应用。(@nosarthur 投稿) 4、955.WLB 该仓库收集国内不加班的 IT 公司名单。(@ifrontend-xyz* *投稿) 5、I love PDF 该网站提供各种免费的 PDF 在线工具,比如合并、拆分、压缩、Office 文件转 PDF、PDF 转图片等。(@ifrontend-xyz 投稿) 文摘 1、美国互联网的中心位置 距离堪萨斯州威奇托市一小时车程的地方,有一个叫 Potwin 的小镇,那里是一个360英亩的农场,主人是现年82岁的 Joyce Taylor。 过去十年,她遇到了很大的麻烦,被指控为垃圾邮件发送者和诈骗犯,联邦调查局特工、联邦警察、州警察、国税局都找过她。有一次,有人在车道上留下了一个破损的马桶,这是一种奇怪的威胁。 这一切都是因为 MaxMind 公司的 IP 定位服务的一个错误。该公司提供每个 IP 地址的物理位置。有时候,只能知道 IP 地址属于某个大致的地理范围,得不到确切的地址。为了处理这种不精确性,MaxMind 决定在城市、州和国家的层面设置默认位置,以便反映 IP 地址的大致位置。如果它只知道某个 IP 地址在美国,并且无法弄清楚它在何处,那么它就显示美国的地理中心。 美国的地理中心位于堪萨斯州北部,确切地说,中心点的坐标为 39°50'N 98°35'W。MaxMind 决定简化这个坐标,采用 38°N 97°W 作为美国 IP 地址的默认地点。过去的14年中,每次有人查询无法识别的美国 IP 地址的位置时,它就会显示这个地点的坐标。现在有超过6亿个 IP 地址与该坐标相关联。如果有人发垃圾邮件或者从事互联网诈骗,MaxMind 的数据库就会现在他们的位置是38.0000,-97.0000。 这正是 Joyce Taylor 的农庄地址。得知这个问题以后,MaxMind 已经更新了数据,从而让农庄恢复平静。 2、谈谈 To B 业务的难点 为什么 To B (企业服务)业务在中国很难做? 首先,很多人可以影响企业客户的购买决策。一个企业要买一套管理系统,决策的可能是业务负责人,也可能是主管信息化的副总裁。他们的诉求很可能不是企业利益最大化,而是他自己及他的部门在企业内的话语权、存在感。如果你连诉求都没搞清楚,你怎么可能拿到订单? 再举一个例子,你认为销售部门使用了你的软件,老板能更容易地掌握他们的业绩和效率,因此销售部门会赞成购买你的软件。但是,销售骨干不一定希望老板掌握他的实际情况。为了自己的利益,他抵触你的系统,最终你就无法完成这个系统的实施。 一个大企业的决策负责人,往往是企业高管或中层。选择 To B 产品的时候,他并不只是从业绩出发,还会考虑自己的风险。我选择上市巨头A公司的产品,如果出了问题,那是 A 公司的问题,不是我的问题,因为人家是上市公司,行业领先者,老板不会说我什么。但如果我选了创业企业 B 公司的产品,如果出了问题,那肯定是我的问题,老板会觉得你怎么选这么一个不靠谱的产品,你是不是拿了人家好处什么的。所以,决策者评估这种信用风险的时候,他们宁可选择对他们而言,风险最低的产品和服务方案。 大部分 To B 产品都是为了老板服务的,而对员工来说,这意味着更多负担和约束,所以他们不喜欢、也不感兴趣你的产品。我知道有不少老板抱怨,他们员工非常不喜欢用钉钉。对于普通人而言,他们为了游戏、娱乐所投入的时间和精力,远大于为了工作和学习投入的时间和精力,也就是说,你不能指望公司职员用玩游戏的精神去研究你的产品。 图片 1、非洲最后的巨齿象 Tusker 象生活在肯尼亚草原。它是非洲最后一种有着巨大牙齿的大象。专家认为,这种大象现存可能不到20只。许多自然保护主义者认为,自己的使命就是让这些大象在偷猎者手中幸存下来,不要死于陷阱、子弹或毒箭。 2、第一款 iPhone 的原型 2007年6月,苹果公司发布 iPhone。此前的两年半,他们一直在秘密研发 iPhone,没有泄露任何消息。 现在,当初研发 iPhone 的原始开发板泄露出来了。你看到这块板子,绝对想不到苹果公司在研发手机。 言论 1、 软件行业是一个年轻的行业,谷歌和亚马逊的员工平均年龄是30岁。全球10万名程序员的2018年 Stack Overflow 调查发现,四分之三的人未满35岁。 尽管技术领域的起薪很高,但是年轻人的优势在就业的前十年就会减少一半。2017年的一份报告发现,50岁以上的技术工人的工资实际上低于年轻人。 -- 《老程序员的按计划淘汰》 2、 "JS 疲倦"发生在人们使用他们不需要的工具,来解决他们没有的问题时。 -- 《JavaScript 疲倦的终极指南》 3、 有些人说,他们更喜欢纸书,而不是电子书。这可能因为纸书是有机物质组成的,那些物质包含了热、光、水分,在生产过程中发生化学反应,产生独特的旧书气味。纸张释放出数百种挥发性有机化合物,让人觉得有大自然的感觉。 -- 《为什么旧书有味道》 4、 现在是2019年,你可以从亚马逊租用 CPU,每小时约2.5美分。换句话说,使用 CPU 每小时的费用,比美国最低工资雇佣一个人便宜约300倍。 -- 《为什么 CPU 时间不值钱?》 5、 以前在台湾拍电影,感觉跟学生时代差不多。一个原因是酬劳,付给你的钱不足以要求你去承担什么责任,我们只是凭着对电影的喜好,拼命去做。 后来为好莱坞拍电影,他们付的薪水,让我觉得真的可以养家糊口、能置产。拍完《理性与感性》后我才第一次在美国缴税,记得第一张支票是18万美元,我手软得都签不下去。 -- 李安《十年一觉电影梦》 6、 面向对象编程的问题是,默认带有环境。你只想要一个香蕉,但是得到了一只拿着香蕉的大猩猩,甚至还有整个丛林。 -- 计算机语言大师 Joe Armstrong,2019年4月20日去世。他非常不喜欢面向对象编程,发明了函数式语言 Erlang。 回顾 去年的本周:《每周分享第 1 期》 订阅 这个专栏每周五发布,同步更新在我的个人网站、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年4月26日


GitHub OAuth 示例教程

2019-04-21 08:54:50 阮一峰

这组 OAuth 系列教程,第一篇介绍了基本概念,第二篇介绍了获取令牌的四种方式,今天演示一个实例,如何通过 OAuth 获取 API 数据。 很多网站登录时,允许使用第三方网站的身份,这称为"第三方登录"。 下面就以 GitHub 为例,写一个最简单的应用,演示第三方登录。 一、第三方登录的原理 所谓第三方登录,实质就是 OAuth 授权。用户想要登录 A 网站,A 网站让用户提供第三方网站的数据,证明自己的身份。获取第三方网站的身份数据,就需要 OAuth 授权。 举例来说,A 网站允许 GitHub 登录,背后就是下面的流程。 A 网站让用户跳转到 GitHub。 GitHub 要求用户登录,然后询问"A 网站要求获得 xx 权限,你是否同意?" 用户同意,GitHub 就会重定向回 A 网站,同时发回一个授权码。 A 网站使用授权码,向 GitHub 请求令牌。 GitHub 返回令牌. A 网站使用令牌,向 GitHub 请求用户数据。 下面就是这个流程的代码实现。 二、应用登记 一个应用要求 OAuth 授权,必须先到对方网站登记,让对方知道是谁在请求。 所以,你要先去 GitHub 登记一下。当然,我已经登记过了,你使用我的登记信息也可以,但为了完整走一遍流程,还是建议大家自己登记。这是免费的。 访问这个网址,填写登记表。 应用的名称随便填,主页 URL 填写http://localhost:8080,跳转网址填写 http://localhost:8080/oauth/redirect。 提交表单以后,GitHub 应该会返回客户端 ID(client ID)和客户端密钥(client secret),这就是应用的身份识别码。 三、示例仓库 我写了一个代码仓库,请将它克隆到本地。 $ git clone git@github.com:ruanyf/node-oauth-demo.git $ cd node-oauth-demo 两个配置项要改一下,写入上一步的身份识别码。 index.js:改掉变量clientID and clientSecret public/index.html:改掉变量client_id 然后,安装依赖。 $ npm install 启动服务。 $ node index.js 浏览器访问http://localhost:8080,就可以看到这个示例了。 四、浏览器跳转 GitHub 示例的首页很简单,就是一个链接,让用户跳转到 GitHub。 跳转的 URL 如下。 https://github.com/login/oauth/authorize? client_id=7e015d8ce32370079895& redirect_uri=http://localhost:8080/oauth/redirect 这个 URL 指向 GitHub 的 OAuth 授权网址,带有两个参数:client_id告诉 GitHub 谁在请求,redirect_uri是稍后跳转回来的网址。 用户点击到了 GitHub,GitHub 会要求用户登录,确保是本人在操作。 五、授权码 登录后,GitHub 询问用户,该应用正在请求数据,你是否同意授权。 用户同意授权, GitHub 就会跳转到redirect_uri指定的跳转网址,并且带上授权码,跳转回来的 URL 就是下面的样子。 http://localhost:8080/oauth/redirect? code=859310e7cecc9196f4af 后端收到这个请求以后,就拿到了授权码(code参数)。 六、后端实现 示例的后端采用 Koa 框架编写,具体语法请看教程。 这里的关键是针对/oauth/redirect的请求,编写一个路由,完成 OAuth 认证。 const oauth = async ctx => { // ... }; app.use(route.get('/oauth/redirect', oauth)); 上面代码中,oauth函数就是路由的处理函数。下面的代码都写在这个函数里面。 路由函数的第一件事,是从 URL 取出授权码。 const requestToken = ctx.request.query.code; 七、令牌 后端使用这个授权码,向 GitHub 请求令牌。 const tokenResponse = await axios({ method: 'post', url: 'https://github.com/login/oauth/access_token?' + `client_id=${clientID}&` + `client_secret=${clientSecret}&` + `code=${requestToken}`, headers: { accept: 'application/json' } }); 上面代码中,GitHub 的令牌接口https://github.com/login/oauth/access_token需要提供三个参数。 client_id:客户端的 ID client_secret:客户端的密钥 code:授权码 作为回应,GitHub 会返回一段 JSON 数据,里面包含了令牌accessToken。 const accessToken = tokenResponse.data.access_token; 八、API 数据 有了令牌以后,就可以向 API 请求数据了。 const result = await axios({ method: 'get', url: `https://api.github.com/user`, headers: { accept: 'application/json', Authorization: `token ${accessToken}` } }); 上面代码中,GitHub API 的地址是https://api.github.com/user,请求的时候必须在 HTTP 头信息里面带上令牌Authorization: token 361507da。 然后,就可以拿到用户数据,得到用户的身份。 const name = result.data.name; ctx.response.redirect(`/welcome.html?name=${name}`); (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年4月21日


StackOverflow 2019 程序员调查

2019-04-21 04:29:13 陈皓

前些天,StackOverflow 发布了 2019年的年度程序员调查,这个调查报查有90000名程序员参与,这份调度报告平均花了20分钟,可见,这份报告有很多... Read More Read More

tags: 业界新闻,技术读物,杂项资源,编程语言,Programmer,程序员


开源社区贡献者协议介绍

2019-04-20 07:16:09 宋净超

很多从事开源人可能会注意到有些开源项目要求贡献者在提交 PR 前首先签署 CLA,只有签署了 CLA 之后 PR 才可以合并。 开源贡献协议简介 下面列举了开源贡献协


每周分享第 52 期

2019-04-19 02:32:07 阮一峰

这里记录过去一周,我看到的值得分享的东西,每周五发布。 欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。 据报道,汉王科技开发了一个"课堂呵护系统",已经在北京牛栏山一中、内蒙古赤峰四中等全国七所学校试点。 该系统在黑板上方安装了一个摄像头,上课时每秒对整个班级拍摄一张照片,然后进行人脸识别,判断谁在专心听课,谁在开小差,谁在讲悄悄话,以及谁在睡觉。 老师打开电脑或手机,可以查看统计结果。每个学生名字后面都有一个图形,红色的向上三角形,表示该学生本周专心听课时间上升,绿色的向下三角形表示下降。 该系统单个教室的安装成本是3万元人民币,学校不需要出钱,所有费用由当地教育局提供财政补助,作为在学校推广人工智能和大数据的体现。除了汉王公司,杭州的海康威视也开发了类似的"智能教室行为管理系统",采样频率低一点,每30秒才拍摄一次照片。 我想,以后不仅是学校,政府机关、公司、工厂应该也会安装类似系统,对员工进行不间断的人脸识别,评估他每天有多少时间在安心工作。这比上下班打卡,对企业更有利。 新闻 1、飞机上的摄像头 一位乘客发现,新加坡航空的座椅背面,液晶屏幕下面居然有摄像头。他把照片发到推特,引起一片哗然。新加坡航空不得不出面解释,这只是客机娱乐系统的标配,未来打算用于跟乘客互动,比如识别手势。新加坡航空称,从未启用摄像头,今后也不会用来监视用户。 但是,人们还是担心,黑客有可能控制这些它们,从而掌握乘客的一举一动。 2、开普勒望远镜的最后一张照片 2009年3月,美国发射了开普勒望远镜,用于观察太阳系外的行星。十年来,这架望远镜逐渐失灵,2018年9月25日,它拍摄了最后一张照片(上图),然后就不再工作了。 上图拍摄了水瓶座,缺少一些方格是因为相机的某些部分已经坏了。这个望远镜目前不再跟地球通信,从此永远围绕太阳公转。 3、种植肉 历史上,人类通过养殖动物得到肉类。现在越来越多的团队开始研究,能否像种植植物那样,把肉类种植出来。英国巴斯大学的团队,在叶子上种植了猪肉细胞;美国一家名叫 Just 的公司表示,它能够从鸡肉羽毛提取的细胞中,培养出鸡肉。 种植肉主要通过细胞分裂产生,最终产物是纯肌肉组织,基本上是瘦肉末。理论上,种植肉跟养殖肉的成分是一样的,但是为了得到相同的口味,需要添加脂肪细胞和结缔细胞。一旦种植肉证明在商业上可行,就会得到大规模推广。 4、横跨美国的列车 美国现在没有东西横穿全国的列车,19世纪淘金时代有,现在没有。如果你一定要坐火车,从东岸的纽约直到西岸的洛杉矶,并且愿意忍受中途换车,那么这2,448.8英里(相当于上海到乌鲁木齐)一共需要花费整整三天(67个小时),整趟行程的票价是1,089美元。 5、流媒体超过电视 美国电影协会 MPAA 宣布,2018年流媒体首次超过电视。美国人有52%的时间看网上视频,48%的时间看电视。 全球范围内,流媒体新增了1.312亿用户,用户总数达到6.133亿人,相比之下,有线电视用户下降了2%,达到5.56亿。另外,流媒体也挤压了 DVD 和蓝光光盘,美国的销售量2018年下降了15%。目前看来,五到十年内网络流媒体就会淘汰有线电视。 6、清江古生物化石 中国科学家在湖北省清江流域,发现了一处大型的古生物化石遗址,已经挖掘了2万多块化石。这些化石距今大约5.18亿年,其中是许多是软体生物。它们柔软的身体组织,包括皮肤、眼睛和内脏,都"精美地"保存完好。下图就是水母和节肢动物的化石,保存得极其完好,触须都清晰可见。 这些化石的珍贵之处在于,软体动物(比如水母和蠕虫)通常不会变成化石。大多数化石都是硬体动物,因为较硬的物质(比如骨头),不太可能腐烂和分解。清江生物群可能是由于突然的风暴,被迅速埋在沉积物中,才能使软组织得到很好的保存。 7、监控驾驶员 汽车的人工智能一般只用于判断车外环境,但是沃尔沃汽车反其道行之,将人工智能用于车内。2020年开始,每一辆出厂的沃尔沃汽车都会带有车内摄像头,专门观察驾驶员的眼睛。 如果发现驾驶员分心,没有专心开车,将以声音和视觉的形式发出警告,例如仪表盘闪烁和发出嘟嘟声。如果驾驶员继续不专心,汽车将自行减速。如果依然无效,汽车将自动靠边停车。另外,还有算法判断驾驶员是否饮酒,如果发现有饮酒迹象,将不允许驾驶。 8、一句话新闻 苹果公司宣布,终止对高通公司的所有诉讼,并向其购买 5G 芯片。随后,Intel 公司宣布放弃 5G 研发,因为它的 5G 芯片的唯一客户就是苹果公司,现在也没了。 全世界74亿人口如果都住在一起,最小需要多少空间?历史上,人口密度最大的地方是香港的九龙城寨,1平方公里住了120万人。据此计算,6000多平方公里就够了,相当于上海市的面积。 爱达荷州的太阳能发电创下美国价格最低记录,每度电2.175美分(相当于人民币0.146元)。该价格是发电厂的价格,居民支付的价格会更高一点。 挪威三月份的新车销售总共18,375辆,其中10,732辆为电动汽车,占比58%。电动车比例是全世界最高。 文章 1、魔兽世界的玩家去世以后(中文) Robert Steen (上图)的儿子患有重病,无法行走,不幸在2014年去世,只有25岁。去世以后,父亲发现儿子的笔记本上有《魔兽世界》的密码,才发现儿子是一个资深玩家,他用这个密码登陆,把死讯告诉儿子在游戏里面的好友,结果,葬礼上,欧洲各国的魔兽玩家都来了。 2、为什么亚马逊河不能架桥?(英文) 亚马逊是世界最长的河流之一,但是整条河没有一座桥,这是为什么? 3、什么是 Wayback Machine?(英文) Wayback Machine 是一个庞大的网页数字档案库,为全世界的网页存档。该项目于1996年启动,目前保存了100亿个快照,数据量达到 30PB,另外还有 30PB 备份。 4、类型正在向右移动(英文) 以前的编程语言,类型声明都是写在变量的左边,比如 int count 。但是,现在越来越多的编程语言,将类型声明写在变量的右边,比如 count:int ,这是为什么? 5、运动追踪的红外线加热器(英文) 作者自己动手,将一个普通的红外线加热器,接上了树莓派,加装了一个摄像头,实时捕捉和识别走动的人体。不管人走到哪里,加热器就会自动转到那个方向,对着人进行加热。 6、我作为工程师的报酬(英文) 一个美国工程师回顾自己的薪水增长,2007年他作为 IT 管理员,年薪是4.2万美元,2018年他变成了架构师,年薪是18.9万美元。许多网友看了他的文章,也纷纷留言,写下自己的年薪变化。 7、10个 Homebrew 软件包(英文) Homebrew 是 Mac 系统的软件包管理器,可用于安装 Unix 软件包。本文推荐10个值得安装的软件包。 8、Java 语言的 null 是一个设计错误(英文) Java 语言的 null 值导致了很多问题,本文解释为什么 Java 的设计是错的,而 Kotlin 的设计是对的。 9、如何安装 Alpine Linux 的桌面(英文) Alpine 是一个极度瘦身的 Linux 发行版,只有 5MB 左右,主要用于制作 Docker 镜像文件。本文介绍 Alpine 的基本知识,如何安装一个基于它的桌面开发环境。 10、未来没有 Webpack 的前端开发(英文) 现在的 Web 应用,一般都需要使用 Webpack 打包脚本。但是,浏览器已经支持 ES6 模块,能够自行处理模块的依赖,因此完全可以跳过打包这个步骤。 11、996.icu 事件的可视化(视频) 这段90秒的视频,帮你回顾 996.icu 事件的全过程。(@jdk137 投稿) 12、Edge 变成 Chromium 意味着什么?(英文) 微软的 Edge 浏览器内核从自研变成了 Chromium,现在 Windows 系统预览版已经发布了。与原来相比,到底新增了哪些功能? 软件 1、ink 使用 React 语法开发富交互的命令行应用的 JS 库。 2、QuickChart 通过 URL 生成图表的开源服务。 3、vuepress-theme-reco VuePress 的一个主题,为博客定制。(@recoluan 投稿) 4、koa-mapper koa-router 模块的替代品。(@helloyou2012 投稿) 5、GitPress 文档的 git 仓库直接发布成静态网站的工具。(@pad0van 投稿) 6、code-server 开源的 VS Code 在线版,支持大部分 VS Code 插件 。(@Y024 投稿) 7、UserLAnd 安卓手机安装 Linux 发行版的 App。 8、ArchiveBox 网页离线储存工具,可以将一个网页的所有资源(HTML、JS、 图片、PDF 等)都下载下来,打包成 Web Archive 格式。 9、instagram.css 一个 CSS 开源库,提供纯 CSS 的 Instagram 滤镜实现。(@ifrontend-xyz 投稿) 10、devices.css 一些主要的电子消费产品外观图片的 CSS 实现。(@ifrontend-xyz 投稿) 11、AutoPiano 自由钢琴,HTML5 技术开发的网页钢琴应用。可以自动演奏曲谱,同步显示琴键的位置。(@WarpPrism 投稿) 12、workbase-server 一个国产的开源企业通信套件,包括私有部署的邮件和聊天解决方案,并提供手机端。可以把它当做自建的 Slack。(@wanglian 投稿) 资源 1、中国哲学古籍电子化计划 免费的线上图书馆,提供中国古籍电子版,已收藏超过3万本著作,约50亿字。(@nosarthur 投稿) 2、Chrome 插件英雄榜 该项目收集优秀的 Chrome 浏览器插件,并为它们写中文说明书。(@zhaoolee 投稿) 3、Ops School 运维工程师的培训资料库,介绍各种运维的基础知识。 4、维米尔全部画作 17世纪荷兰画家维米尔以精确还原生活场景而著称,他一共留下了36幅作品,全部收集在这个网页。 5、好奇者的量子计算入门 英文的开源教程,介绍量子计算的基本概念。同时,网站中包含了上百道简单的练习题,可以帮助初学者检验自己的知识掌握程度。(@nosarthur 投稿) 6、2018年 JavaScript 明星项目 该网站列出2018年各个方向上最受关注的 JavaScript 项目。(@StephenWu5 投稿) 文摘 1、为什么隔着玻璃晒太阳没有用? 人体需要晒太阳,一个主要原因是,阳光里面的紫外线,可以让我们的身体产生维生素 D。这种维生素很难从食物中摄取,必须依靠阳光来合成。 维生素 D 可以促进钙元素的吸收,保证骨骼健康。 所以,长期不见阳光会导致缺乏维生素 D,就会产生骨质疏松,以及其他一些问题。 虽然晒太阳是必要的,但是多晒却不行,多晒太阳会导致皮肤损伤。因为紫外线包含两种,一种是紫外线 A(又称UVA),它们渗透到皮肤深层,可能导致过早老化;另一种是紫外线 B(又称 UVB),导致晒伤发红。研究表明,主要是紫外线里面的 UVB,触发了维生素 D 的合成,而 UVA 并不会产生维生素 D。 一般来说,每天晒十分钟太阳,就能产生足够的维生素 D。但是,在室内或车内晒太阳是没用的,因为玻璃会阻挡 UVB 射线。你无法通过坐在阳光明媚的窗前增加维生素 D 水平,而且玻璃会让大部分 UVA 辐射通过,可能会对你的皮肤造成有害影响。 2、测量地球的年龄 二战后,芝加哥大学的化学家帕特森,希望通过测定岩石里的铅,判断岩石的年代。但是,遇到了一个问题:他找不到无铅环境,到处都有铅污染,因为加铅汽油使得铅在空气无处不在。他试图去除样品中的铅污染,擦洗了玻璃器皿,使用蒸馏水。没有办法,铅仍然出现了。 帕特森从头到尾分析了实验的每一步,以确定铅的起源。当时没人知道,加铅汽油有这么严重的后果。"我发现我使用的所有东西都有铅。这是人们以前从未想过的一种污染。" 玻璃器皿、自来水、实验室墙壁上的油漆、桌子、空气中的灰尘、皮肤、衣服、头发,甚至头皮屑都含铅。如果帕特森希望得到准确的结果,别无选择,他只能成为世界上最洁癖的怪人。 (上图:帕特森竭尽全力将铅和其他污染物排出实验室。) 帕特森竭尽全力摆脱铅。他买了耐热玻璃器皿,洗净,用氢氧化钾热水浸泡,然后用双氧水冲洗。他擦了又擦,跪在地上,擦掉地板上任何铅的痕迹。他用干净材料覆盖了他的工作台面,并在实验室的通风橱里安装了额外的空气泵----甚至在它周围建造了一个塑料笼,以防止空气中的灰尘有铅。他戴着面具和长袍,后来用塑料披着他的身体。 这些措施在当时并不常见。当时还没有"超洁净实验室"实验室的概念。帕特森根本不知道典型的实验室周围漂浮着大约300万个微观粒子,每个粒子都是实验结果的障碍。 五年之后,帕特森终于完善了技术。1951年,他设法准备了一个完全未受污染的铅样品,并确认了一个十亿年前的花岗岩块的年龄,这一成就使他获得了博士学位。下一步是使用这种方法,找出地球的年龄。 帕特森后来去了加州理工学院,建立了世界上最干净的实验室。他拆掉建筑里面的铅管,并重新铺设电线(旧电线有含铅的焊料)。他安装了一个排气系统,用于净化空气,并建造了独立的房间,用于研磨岩石,清洗样品,净化水。地质系通过出售收藏的化石资助了本次大修。 1953年,超净实验室已准备就绪。帕特森着手测试岩石样本,目标是发现地球的年龄。他变得越来越挑剔,要求助手每天用小抹布擦洗地板。后来,他禁止普通服装,要求助手穿着科学连体衣。样本准备好之后,帕特森前往国家实验室使用他们的质谱仪。一天晚上,机器吐出了数字。帕特森独自一人在实验室中将它们代入方程式,得出了地球的年龄是45亿年。 图片 1、BMI 指数 BMI 指数是体重除以身高,用来衡量一个人的肥胖程度。过高的 BMI,几乎必然导致心血管疾病,以及糖尿病等。下图纵轴是身高,横轴是体重,可以用来速查你的 BMI,以及肥胖程度。 2、彩色窨井盖 日本的很多窨井盖都是彩色的,已经成为了一种艺术现象,甚至有专门的民间爱好者交流和收集这些窨井盖。 言论 1、 阿里和腾讯都是膨胀的大平台,将用户聚集在一起,创造一个生态系统。我们听多了创业和快速移动,但是实际上,企业集团正在卷土重来,在政府的支持下成为一个可怕的巨头。这样的互联网公司,正成为当今时代和未来的主导。 -- HN 读者评论 2、 我的工位几乎看不到外面,我觉得这座建筑物真的开始吃掉我整天盯着墙壁的灵魂。 -- HN 读者留言 3、 赚钱的商业方式只有两种,一种是捆绑(bundle),另一种是分解(unbundle)。 -- 马克·安德森,Netscape 浏览器创始人 4、 你想尽办法让孩子上贵族学校,他会骑马,会演莎士比亚剧,但就是不了解普通人的想法,那你确信他会过好这一生吗? -- 逻辑思维 5、 一般来说,帮企业赚钱的系统好卖,帮企业省钱的不好卖,因为省钱的系统基本上都要动到既得利益者。 -- 子柳 订阅 这个专栏每周五发布,同步更新在我的个人网站、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年4月19日


Go 语言中的 make 和 new

2019-04-18 01:02:00 Draveness

当我们想要在 Go 语言中初始化一个结构时,其实会使用到两个完全不同的关键字,也就是 make 和 new,同时出现两个用于『初始化』的关键字对于初学者来说可能会感到非常困惑,不过它们两者有着却完全不同的作用。


“努力就会成功”

2019-04-17 01:12:27 陈皓

那一年,我加入了某知名公司的某知名部门,在办公室中,我看到了到处都挂着——“努力就会成功”的条幅,这个部门中大多数员工的邮件签名都会有“努力就会成功”,我感到一... Read More Read More

tags: 技术管理,杂项资源,Programmer,程序员


为什么我们需要use_cases

2019-04-17 00:00:00 黄药师

我一直以为,在写rails的时候使用use_case是一种很常见的意识。但是我发现还是有一部分人从来没用过或者没听说过use_case,出于让自己也更仔细的思考这种用法的目的,记录一下。 事情的起因是因为一次code review, 我很庆幸我们团队内部的code review做的一直都不错,大家都很认真的给彼此的代码做认真的检查,并且都能从中学到很多东西。 我封装了一个use_case,并且在model的callback里面去调用了这个use_case。这个做法遭到了给我做code review同事的质疑,然后我才知道原来还有部分道友还不知道use_case的用法。 当然我也并不是说我这样的做法就是最好的,但是这种既不属于model,也很难成为一个公用lib class的,并且单一职责,逻辑简单的玩意儿,随着项目的成长随时可能改变的东西,封装为一个use_case绝对是一个不错的选择。 试想我们有一个表单,需要给用户发验证码,并且在用户输入验证码以后比对验证码,才能允许用户正常提交。假设这个方法叫做send_code,我们创建一个发验证码的module叫做Postman。 我们的发验证码的controller长这样: class AuthController < ApplicationController def create auth_code = AuthCode.create(sms_params) if svc.success? render json: { sid: auth_code.sid } else render json: { status: 500 }, status: 500 end end private def sms_params params.require(:verification).permit(:phone_number, :code) end end model长这样: class AuthCode < ActiveRecord::Base before_create :generate_code after_create :send_code def send_code Postman.new(phone_number, verify_code).perform end private def generate_code self.verify_code = rand.to_s[2..5].to_s end end 这样我的controller只用关心验证码的创建就好,发不发/怎么发都是model的事儿,AuthCode记录创建好以后会通过callback去发送,这里的Postman就是我们前面提到的一个use_case: class Postman include UseCase def initialize(phone_number, message) @phone_number = phone_number @message = message end def perform SMS::Client.new.messages.create( to: @phone_number, body: @message ) end end 而UseCase可以理解为一个接口定义,描述了所有use_case都需要遵循的规则,便于维护和自描述: module UseCase extend ActiveSupport::Concern include ActiveModel::Validations # extented class should contains these methods module ClassMethods # The perform method of a UseCase should always return itself def perform(*args) new(*args).tap(&:perform) end end # implement all the steps required to complete this use case def perform raise NotImplementedError end # inside of perform, add errors if the use case did not succeed def success? errors.none? end end 这里有几点需要注意的: 每个use_case只有一个public的实例方法 (perform) 每个use_case只有一个职责,也就是只做一件事(发短信) 因为上一条,所以测试也很容易写 有一个Gem叫做caze可以让use_case的调用更优雅一些,不必像我这样显式的调用: Postman.new(phone_number, verify_code).perform 具体可以看看caze的文档。 顺便发一下代码的结构: ├── app │   ├── controllers │   │   ├── application_controller.rb │   │   ├── auth_controller.rb │   │   └── users │   ├── models │   │   ├── user.rb │   │   └── auth_code.rb │   ├── use_cases │   │   ├── postman.rb │   │   └── use_case.rb 这样一来,我们就: 把程序有什么 models 比如user, auth_code 等等不怎么变化很稳定的东西。 和程序做什么 业务逻辑 和 use cases 会随着项目的成长不停改变。 分开了。 那问题来了, 我们什么时候需要 use_case 呢? 当你需要管理resources,你就必须用rails的方式,也就是面向resource的方式去做,model啦,presenter啦,抽象类啦,都是很方便且有道理的。 但是,当你的业务里面有一个很特殊的功能,它不属于你的主营业务逻辑,且职责单一,随时可以变化甚至移除,那么你就可以考虑使用use_case,就像上面的代码那样。 总结 一万个程序员眼里有一万种最佳实践,use_case不是所有的场景都适用。但是当你有这样的思维以后,对于如何组织你的use_case,如何保持代码结构整洁肯定是有一定帮助的。 Referreces Architecture the Lost Years by Robert Martin Clean architecture on rails by Fabiano Beselga caze gem use case examples

tags: Notes,use case,rails,ruby,cleancode


如何将一个开源项目加入CNCF?

2019-04-15 11:37:02 宋净超

前段时间看了一篇文章为什么中国没有 Apache 基金会这样的组织?,二叉树视频中采访了开源社的理事长老刘,他的一番话也让我很受启发,在关注和参与 CNCF 基金会