跟随,学习,进步

开源软件合规实践5:开源法务支持

2019-06-09 03:13:19 宋净超

这篇文章是 Recommended Open Source Compliance Practices for the Enterprise 电子书(可从 Linux Foundation 网站免费下载)的中文连载第五篇。 开源软件合规实践1:总体概述 开源软件合规实践2:成立开源审查委员会


开源软件合规实践4:开源代码溯源

2019-06-09 02:23:19 宋净超

这篇文章是 Recommended Open Source Compliance Practices for the Enterprise 电子书(可从 Linux Foundation 网站免费下载)的中文连载第四篇。 开源软件合规实践1:总体概述 开源软件合规实践2:成立开源审查委员会


开源软件合规实践3:开源代码审查

2019-06-09 01:13:19 宋净超

这篇文章是 Recommended Open Source Compliance Practices for the Enterprise 电子书(可从 Linux Foundation 网站免费下载)的中文连载第三篇。 开源软件合规实践1:总体概述 开源软件合规实践2:成立开源审查委员会


Golang 并发编程与 Context

2019-06-08 14:50:00 Draveness

Context 是 Golang 中非常有趣的设计,它与 Go 语言中的并发编程有着比较密切的关系,在其他语言中我们很难见到类似 Context 的东西,它不仅能够用来设置截止日期、同步『信号』还能用来传递请求相关的值。


开源软件合规实践2:成立开源审查委员会(OSRB)

2019-06-08 12:13:19 宋净超

这篇文章是 Recommended Open Source Compliance Practices for the Enterprise 电子书(可从 Linux Foundation 网站免费下载)的中文连载第二篇。 开源软件合规实践1:总体概述 开源软件合规实践2:成立开源审查委员会


开源软件合规实践1:总体概述

2019-06-08 10:13:19 宋净超

开源软件合规(Compliance)实践,从狭义上讲就是企业使用开源软件许可证(License)的合规。Recommended Open Source Compliance Practices for the Enterprise


每周分享第 59 期

2019-06-07 11:10:26 阮一峰

这里记录过去一周,我看到的值得分享的东西,每周五发布。 欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。 (题图:浦东滨江,上海,2018年) 关于未来有很多预测,最新的一种预测是,未来你很难交朋友。 那种可以交流内心的朋友,未来会越来越少。理由是,人们的生活变动和活动范围越来越大,很难与他人持续的、深入的接触。 一项调查发现,美国人成年后的20年中,平均要搬家6次,每个地方就住三年多。刚刚与别人熟悉了以后,你就要离开了,除非刻意,以后就很难再见面了。一位教授感叹:"我的曾祖父一生的生活圈是40平方公里,就在小镇过完一生。祖父的生活圈是400平方公里,最远就去了城里。父亲是4,000平方公里,我自己是40,000平方公里,不仅生活在东海岸和西海岸,足迹遍布全世界。" 深厚的友谊不是一蹴而就的,需要多次接触和反复交流。但是由于生活圈子越来越大,变动越来越快,结交好朋友的难度正在不断加大。这么说吧,友谊是一个静态累积的过程,但是我们的生活正变得越来越动态。 事实上,25%的美国人一个好朋友也没有。 未来人与人的直接接触将极其稀少,大多数时候都是跟机器打交道。现在,付款和点餐就已经是自助式,不需要人类接触了。未来我们与他人接触将越来越多在网上,你大多数交到的朋友将是网友。 这意味着,为了一个健康的、有着丰富社交的生活,你需要多在网上展示自己、接触他人。对于那些互联网上沉默寡言的人,未来的人生将会非常孤独。 新闻 1、德国的电力卡车高速公路 重型卡车耗能大,燃油多,造成的污染也大,如果改用电动,需要太多电池,实际上不太可行。今年五月,德国开始尝试一种新的解决方案:在公路上方架设电线。 卡车经过改造后,顶部有一个向上的导电架,可以从电线上取电,从而变成电力驱动。卡车本身是混合动力,没有电线的地方,依然使用传统的柴油发动机。这种方案的一个好处是,由于不需要电池和充电设备,所以成本较低,缺点 是需要对现有公路进行改造,第一期已经完成了法兰克福机场到工业区的道路施工。 2、窗边读信的少女 《窗边读信的女孩》是一幅世界名画,完成于1657年~1659年,作者是荷兰著名画家维米尔(Vermeer)。收藏它的德累斯顿美术馆,进行 X 光扫描后发现,墙上原来有一副爱神丘比特的画像,居然被涂掉了。据信应该是作者本人涂掉的,因为几百年来,从来没有人提到过这件事。该美术馆正尝试去掉涂料,还原丘比特画像。 3、中国在亚马逊成功 亚马逊最近宣布,将退出中国的网上零售市场。这是亚马逊在中国的失败,但中国却在亚马逊成功。欧洲有一项新的法律,要求在线零售平台披露卖家的统计信息,因此亚马逊的欧洲各国分站披露了各自市场的前10000家大卖家的分布。结果,欧洲各国大卖家的最大来源,几乎都是中国。 比如,2018年英国亚马逊的大卖家,主要不是英国公司,而是中国公司,占到市场份额的40%(上图)。如果以公司家数衡量,英国亚马逊的中国卖家占到总家数的34%,德国亚马逊28%,法国亚马逊47%,意大利亚马逊45%,西班牙亚马逊52%。美国亚马逊不受该法律管辖,因此没有公布数据,但据估计中国卖家也能占到40%。 4、路灯植物 麻省理工学院的科学家创造出一种发光植物,希望以后用植物替代路灯。科学家将一种含有荧光素的酶,包装成纳米粒子,然后将这种纳米粒子注入植物的叶子,一旦荧光素氧化,就有一部分能量以光的形式释放出来,从而达到发光的效果。 这种粒子的照明效果,可以用来阅读书籍,大约持续4个小时。下一步,研究人员会设法提高光亮,不仅让它可以用作街道照明,还可以用作室内照明,甚至是台灯。 5、AirPods 耳环 AirPod 是现在最流行的无线耳机,特点就是完全没有耳机线。有人就发明了 AirPod 耳环,为它加上了线,可以把耳机挂在耳朵上,想听的时候就塞进耳朵,不想听就挂着,预订价是20美元。 有人说这样不好看,但是如果能够接受,有人整天耳朵塞着 AirPod,为什么不能接受,让它挂在耳朵下呢? 6、如果登月失败 1969年7月20日,阿波罗计划第一次将人类送上月球。整个计划的安排是,宇宙飞船先进入月球轨道,再发送登月舱,让两名宇航员登上月球。但是有一个风险点,就是登月完毕以后,登月舱需要从月球起飞,将宇航员送回宇宙飞船。没人知道月球起飞能否成功,因为无法测试。万一无法起飞,两名宇航员只能在月球表面等死,因为没有为这种情况设计任何救援计划。 美国政府完全了解这种风险,尼克松总统还为两名宇航员死在月球,事先准备了一份演讲稿。几十年以后,这份演讲稿才披露出来,里面的内容是:"命运已经决定,那些前往月球探索的人将会在月球上安息。这些勇敢的宇航员知道他们的获救没有希望,但他们也知道人类将从他们的牺牲中看到希望。对于每个在未来的夜晚仰望月球的人来说,会知道有人长眠在那里的某个角落。" 7、智能汤匙 帕金森症在老年人中越来越常见,单单在美国,就有1000万患者。这种疾病的特征是,患者的手会不停颤抖,导致吃饭很困难,因为手一抖,食物就会掉下来,必须有人喂。这对病人和家属都很痛苦,而且目前无药可治。 有人发明了一种智能汤匙,试图解决这个问题。这种汤匙可以判断手抖的频率和幅度,从而产生反向震动,抵消手的抖动,使得汤匙尽量平稳。它的售价接近200美元,并不便宜,但是销售量已经超过了1000个。 8、一句话新闻 美国国务院正式要求,所有申请美国签证者,都要提供过去五年使用过的社交媒体帐号。 SpaceX 公司为了实现"星链"计划,建立低轨道卫星宽带服务,5月15日通过一艘火箭发射了60颗卫星,成功完成"一箭六十星",每颗卫星的重量是227公斤。 W3C 宣布与 WHATWG 达成协议,HTML 和 DOM 标准都以 WHATWG 为准,也就是说以后只有一套 HTML 标准了。 苹果公司发布自己的第三方登陆服务,所有苹果商店上架的应用,只要提供第三方登陆,都强制要求接入该服务。 三星公司发明了一种技术,只用一张普通照片,就可以对人脸建模,生成各种表情的视频。(@wangweiX 投稿) 文章 1、如何评价 Erlang 语言之父 Joe Armstrong(中文) Joe Armstrong 是 Erlang 语言的发明人, 单单他的论文《面对软件错误构建可靠的分布式系统》就足以载入史册,他提出面向对象编程本质上不是并发的正确处理方法。 (@YongHaoWu 投稿) 2、SHA-256 哈希算法(英文) 一篇通俗教程,一步步解释了 SHA256 的计算方法,并有图例和 JavaScript 实现。(@xwu64 投稿) 3、你用不惯 RxJava,只因缺了这把钥匙(中文) 帮助读者理解 RxJava 操作符,并给出了一个示例项目。(@KunMinX 投稿) 4、前端框架的性能比较(中文) 本文将一个 App 用18个前端框架实现,然后比较它们的性能,翻译自英语原文。(@ahuigo 投稿) 5、如何将 gif 转成视频?(英文) GIF 动画格式有很多缺点,最大问题就是体积过大。本文教你如何将 GIF 转成视频,嵌入网页,并且兼顾 浏览器兼容问题。 6、什么是暗网(英文) 针对新人的暗网基本知识,不涉及技术细节。 7、十四亿人的口腹之欲,是如何被满足的?(中文) 本文翻译自剑桥大学博士在 Quora 的回答,中国如何使用农业科技,生产出足够便宜的农产品,满足14亿人的消费。(@arezl 投稿) 8、树莓派 GPIO 介绍(英文) 树莓派的功能扩展,往往都要通过板载的通用输入/输出模块 GPIO。本文介绍 GPIO 的基本知识。 9、JavaScript 开发者的 Vim 配置指南(英文) 本文详细介绍几个对于 JavaScript 开发非常有用的 Vim 插件。 10、从虚拟主机到 Kubernetes(英文) 一位后端架构工程师以自己的亲身经历,详细介绍公司基础架构的变化。 11、Dependabot 服务介绍(英文) 最近,GitHub 收购了 Dependabot,并将它的服务完全免费了。本文介绍如何使用这个非常好的依赖管理工具。 软件 1、MineTime 一个跨平台的桌面日历应用,具有人工智能的分析功能。 2、BasicCAT 一个计算机辅助翻译软件,特点是将文章分解成句子,然后判断新的句子与原有语料的相似程度,自动生成翻译。(@xulihang 投稿) 3、Fika Chrome 浏览器插件,可以将网页转成可以专心阅读的样式,内置四种主题。(@yueyericardo 投稿) 4、git_curate 项目的 Git 仓库有很多分支,你都忘记了哪些分支是有用的,导致不敢删除。这个工具可以显示每个分支的详细情况,以及是否已经合并了,帮助判断是否应该删除这个分支。 5、excelize 一个读写微软 Excel 文件的 Go 语言库。 6、Benchmarks Game 常用编程语言(27种)的两两性能对比,发现哪种语言最快。(@NeoTse 投稿) 7、Base web uber 公司开源的 React 组件库,风格比较简单干净。 8、Cedreo 一个 3D 的家居建模渲染软件,还可以生成平面图,免费注册使用。 9、Screen Record 一个浏览器里面的录屏工具,非常简单好用。 10、impression.js 监测网页元素是否出现在视口内的 JS 库,用于监测广告的曝光。(@vivaxy 投稿) 11、booster 滴滴推出的针对移动应用的质量优化工具包。(@johnsonlee 投稿) 12、halo 优秀的开源 Java 博客系统,国产软件,有良好的中文支持。(@ruibaby 投稿) 资源 1、龙猫学术导航 一个外文期刊检索与下载的网站,里面有很多资源链接。类似网站还有"大木虫学术导航"。(@Andrew5c 投稿) 2、MOOC 课程搜索引擎 该引擎可以搜索全世界的开放课程,目前包含1.2万门课程,里面也有中文课程。(@ketra21 投稿) 3、开放的招聘信息网站 一个开放式的张贴工程师招聘信息的网站,该网站本身也是代码开源。(@timqian 投稿) 4、awesome-uikit 该仓库收集前端各种JS框架,Web组件库和后台管理模板。(@jaywcjlove 投稿) 5、SAFE 这个项目在印度尼西亚婆罗州的热带雨林里面,放置了十几个录音设备,然后将每个小时录到的声音放到网上,让访问者听到每天不同时辰的大自然的声音。 6、任正非思想 该仓库收集了1994~2018年任正非400余篇讲话。这里是可下载的合集。(@wikiios 投稿) 7、Dork-Admin 这是一个中文仓库,盘点世界上比较重大的数据泄漏事件。(@No-Github 投稿) 图片 1、深圳电动出租车 深圳的2万辆出租车都是电动的,每天都要充电。下图是出租车停车场,司机等着电动车充电完毕。 2、Manolo 的绘画 阿根廷艺术家 Manolo Gamboa Naon 是色彩、构图和复杂性的大师。他的作品具有探索性和复杂的构图,好像软件生成的一样。 文摘 1、安卓设备极低的升级率 安卓 9.0 是2018年8月发布的,结果发布后81天,9.0的设备只占到0.1%。 安卓 8.0 Oreo 是2017年8月发布的,发布后431天,8.0的设备只有21.5%。7.0 Nougat 发布后的795天,低于7.0的设备依然占到50.3%。也就是说,有一半的安卓设备至少在2年内没有更新。 安卓设备不及时更新,用户就无法从系统的升级中受益。尽管谷歌多次尝试改善这种情况,但多年来情况一直在恶化。相当一部分安卓设备一旦出厂,就再也不会升级了,直到设备报废。 因此,安卓设备的特点就是,系统几乎不升级,或者升级的速度非常慢。谷歌正在加快新版本的发布,而老版本的比例却在不断上升。下表是各个版本的安卓,一年后的设备采用率。 影响系统升级的因素有三个:(1)制造商向设备发送更新包的速度,(2)制造商发布新系统设备的速度,(3)用户购买新设备的愿望。由于安卓平台本身的复杂性急剧增加,以及各个制造商在系统上又增加了自己的层,导致更新旧设备变得越来越困难。用户想要彻底升级,往往只有购买新设备,但是用户更换手机的速度也在放慢。 此外,除了手机和平板电脑,安卓设备还包括电视和车载系统,这类设备极少更新系统。 安卓厂商的快速变化,也有一定的影响。HTC、索尼和摩托罗拉都发布过很多安卓设备,随着这些公司的衰落,它们的设备就没有更新了。三星已经吞噬了许多较小公司的市场份额,这些小企业可能对基础操作系统的定制程度较低,而三星的系统定制程度较高,这也使得无法更快地发布系统更新。 总之,安卓的老版本将长期地困扰着厂商、消费者和开发者。 2、自行车日 1943年4月,瑞士生化学家阿尔伯特·霍夫曼在实验室工作时头晕目眩,感到非常不舒服,他觉得自己可能是某种化学品中毒了。三天后,病情不见好转,他决定使用一种新的物质麦角酰二乙胺(缩写 LSD),进行自我实验。这种物质是他在1938年首次合成的,当时认为具有兴奋剂的作用。 4月19日早上,他合成了0.5毫升的 LSD,将其溶解在10毫升水中,并在下午4点20分服用250微克(0.000025克),这是他认为可能会生效的最小剂量。 下午5点,他感到有点头晕,就决定骑自行车回家。途中,症状变得越来越强烈,后来他在1979年回忆道:"我很难描述,我的视野出现了波动,像一张扭曲的镜子,看到的东西都在游泳。"到家后,他立刻打电话给邻居,请邻居帮忙叫最近的医生。 这时,他的症状继续发展。"眩晕,视觉障碍,在场的人的面孔都像在做鬼脸。我的头部,身体和四肢都感觉很重,好像装满了金属;小腿痉挛,手冷,没有感觉;舌头上有金属味,干燥和收缩的喉咙,一种窒息的感觉。" 医生到达后,症状的高峰已经过去了。医生的笔记保留了下来,上面写道他被霍夫曼的"运动障碍和焦虑情绪"所震惊,但没有发现任何严重的问题。"客观地说,他心跳规律,脉搏稳定,呼吸平静。" 霍夫曼自己的感觉是,"现在,一点一点地,我开始享受前所未有的色彩和形状,在我闭着的眼睛后面持续存在。万花筒般的,奇妙的图像突然出现在我身上,交替,杂色,开放,然后以圆形和螺旋形闭合,在彩色喷泉中爆炸。" 第二天早上,他更是有一种奇妙的感觉。"我充满了幸福,仿佛开始了新的生活。世界仿佛是新生。"但是,当年的医生报告只是说,他醒来后"有点疲倦,感觉完全恢复了健康,但在医生的建议下,又躺在床上休息了一天"。 这是人类第一次发现迷幻药 LSD 的效果,由于霍夫曼当时在骑自行车,这一天就被叫为"自行车日"。每年4月19日,全世界都会举行"自行车日"纪念游行和派对。 言论 1、 React hooks 发布以后,同事们很想重写公司 App 的大部分代码,只是因为现在有了新的 API。 -- HN 读者留言 2、 2006年1月19日,新视野号宇宙飞船发射,飞向遥远的冥王星。经过三十亿英里的飞行,九年后的2015年7月14日11点49点,到达预定地点冥王星。这只比2006年的预测慢了1分钟,达到了99.99998%的准确度。 -- 《了不起的 NASA》 3、 对于强者来说,失败会激励他们。对于弱者来说,失败会使他们更加失败。 -- 罗伯特 T. 清崎,《富爸爸,穷爸爸》的作者 4、 生命是一个实验。实验越多,您对自己和世界的发现就越多。 -- 爱默生,19世纪美国著名作家 5、 ORM (对象-关系映射)对于简单的 CRUD 操作比较有用。但是,我宁愿不用 ORM,而是多花一点时间写 SQL 语句,这样可以节省我阅读 ORM 文档、优化查询、调试 ORM 的时间。 -- 《ORM,用还是不用》 回顾 去年的本周:《每周分享第 7 期》 订阅 这个专栏每周五发布,同步更新在我的个人网站、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年6月 7日


SOFAStack Cloud Native Workshop由蚂蚁金服主办

2019-06-05 02:03:54 宋净超

日期:2019年6月24日,星期一 时间:9:00 – 16:30 地点:上海世博中心 注册费:免费 注册地址:https://www.lfasiallc.co


HTTP Referer 教程

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

HTTP 请求的头信息里面,Referer 是一个常见字段,提供访问来源的信息。 很多开发者知道这个字段,但是说不清它的具体细节。本文详细介绍该字段。 一、Referer 的含义 现实生活中,购买服务或加入会员的时候,往往要求提供信息:"你从哪里知道了我们?" 这叫做引荐人(referrer),谁引荐了你?对于公司来说,这是很有用的信息。 互联网也是一样,你不会无缘无故访问一个网页,总是有人告诉你,可以去那里看看。服务器也想知道,你的"引荐人"是谁? HTTP 协议在请求(request)的头信息里面,设计了一个Referer字段,给出"引荐网页"的 URL。 这个字段是可选的。客户端发送请求的时候,自主决定是否加上该字段。 很有趣的是,这个字段的拼写是错的。Referer的正确拼写是Referrer,但是写入标准的时候,不知为何,没人发现少了一个字母r。标准定案以后,只能将错就错,所有头信息的该字段都一律错误拼写成Referer。 二、Referer 的发生场景 浏览器向服务器请求资源的时候,Referer字段的逻辑是这样的,用户在地址栏输入网址,或者选中浏览器书签,就不发送Referer字段。 主要是以下三种场景,会发送Referer字段。 (1)用户点击网页上的链接。 (2)用户发送表单。 (3)网页加载静态资源,比如加载图片、脚本、样式。 上面这些场景,浏览器都会将当前网址作为Referer字段,放在 HTTP 请求的头信息发送。 浏览器的 JavaScript 引擎提供document.referrer属性,可以查看当前页面的引荐来源。注意,这里采用的是正确拼写。 三、Referer 的作用 Referer字段实际上告诉了服务器,用户在访问当前资源之前的位置。这往往可以用来用户跟踪。 一个典型的应用是,有些网站不允许图片外链,只有自家的网站才能显示图片,外部网站加载图片就会报错。它的实现就是基于Referer字段,如果该字段的网址是自家网址,就放行。 由于涉及隐私,很多时候不适合发送Referer字段。 这里举两个例子,都不适合暴露 URL。一个是功能 URL,即有的 URL 不要登录,可以访问,就能直接完成密码重置、邮件退订等功能。另一个是内网 URL,不希望外部用户知道内网有这样的地址。Referer字段很可能把这些 URL 暴露出去。 此外,还有一种特殊情况,需要定制Referer字段。比如社交网站上,用户在对话中提到某个网址。这时,不希望暴露用户所在的原始网址,但是可以暴露社交网站的域名,让对方知道,是我贡献了你的流量。 四、rel属性 由于上一节的原因,浏览器提供一系列手段,允许改变默认的Referer行为。 对于用户来说,可以改变浏览器本身的全局设置,也可以安装浏览器扩展。这里就不详细介绍了。 对于开发者来说,rel="noreferrer"属性是最简单的一种方法。

三个标签可以使用这个属性,一旦使用,该元素就不会发送Referer字段。 xxx 上面链接点击产生的 HTTP 请求,不会带有Referer字段。 注意,rel="noreferrer"采用的是正确的拼写。 五、Referrer Policy 的值 rel属性只能定制单个元素的Referer行为,而且选择比较少,只能发送或不发送。W3C 为此制定了更强大的 Referrer Policy。 Referrer Policy 可以设定8个值。 (1)no-referrer 不发送Referer字段。 (2)no-referrer-when-downgrade 如果从 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,其他情况发送(包括 HTTP 网址链接到 HTTP 网址)。这是浏览器的默认行为。 (3)same-origin 链接到同源网址(协议+域名+端口 都相同)时发送,否则不发送。注意,https://foo.com链接到http://foo.com也属于跨域。 (4)origin Referer字段一律只发送源信息(协议+域名+端口),不管是否跨域。 (5)strict-origin 如果从 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,其他情况只发送源信息。 (6)origin-when-cross-origin 同源时,发送完整的Referer字段,跨域时发送源信息。 (7)strict-origin-when-cross-origin 同源时,发送完整的Referer字段;跨域时,如果 HTTPS 网址链接到 HTTP 网址,不发送Referer字段,否则发送源信息。 (8)unsafe-url Referer字段包含源信息、路径和查询字符串,不包含锚点、用户名和密码。 六、Referrer Policy 的用法 Referrer Policy 有多种使用方法。 (1)HTTP 头信息 服务器发送网页的时候,通过 HTTP 头信息的Referrer-Policy告诉浏览器。 Referrer-Policy: origin (2)标签 也可以使用标签,在网页头部设置。 (3)referrerpolicy属性