跟随,学习,进步

科技爱好者周刊:第 69 期

2019-08-16 02:00:54 阮一峰

这里记录每周值得分享的科技内容,周五发布。 本杂志开源,访问 GitHub 的 ruanyf/weekly 仓库获取源文件。欢迎提交 issue 投稿或推荐你的项目。 封面图片:上海世博源,2019。 刊首语 一件事"做得好"比较好,还是"做得快"比较好? 鱼和熊掌不能得兼,你怎么选择:做得好,付出的代价可能是耗时长、成本高;做得快,意味着完成度低、不是精品。 我很赞同一篇文章的结论:做得快更好。 做得快不仅可以让你在单位时间内完成更多的工作,而且 因为你工作得很快,所以你会觉得成本低,从而倾向于做更多。 写一篇博客,你可能需要两天。这是很高的时间成本,你觉得太贵了,于是你很少写。但是,做好一件事的唯一方法,就是多做这件事。 做得越快,这件事的时间成本就越低,你会愿意做得更多。 人们总是倾向于,多消费时间成本低的东西。网站很快,就会多访问;搜索很快,就会多搜索;文章很容易读懂,就会多读几篇。做得快的核心,就是要让时间成本降下来,从而多做。 家庭保障规划 周刊第 60 期介绍了 孙明展老师 公众号。当时参与活动的朋友挺多的,现在活动搞第二期了,孙老师团队就联系我,想再发一次消息。 孙老师毕业于广州中山大学,现在还是金融系、统计系的(兼职)硕士导师。他曾经在一家世界500强保险公司担任精算师,设计各种产品。 他发现很多人不了解保险,容易上当,就开办了自己的公众号,专门揭露各种理财骗局和保险套路。目前,已经有500多篇原创文章,介绍理财知识、保险案例分析等等,值得一看。 他创立的谱蓝公司,主营业务就是财务咨询,普及保险理财知识,解决家庭保障需求。进一步的情况,可以搜索"谱蓝"。 这次的推广活动,免费向大家赠送 家庭保障定制化服务 。如果你被保险代理人坑过,心有余悸,或者对各种保单或险种感到很难懂,拿不定主意,再或者就是单纯想增加家庭财务保障,都可以参加这个活动。活动内容主要是,根据报名情况进行电话或网络沟通,了解家庭背景资料以后,回答保险理财咨询。 个人及家庭成员 保障责任综合评估 现有保险产品的 性价比分析比较 基于家庭状况和需求的 综合保障规划构建 微信扫描关注下面的公众号,然后输入 "阮一峰 + 你的手机号码" ,就可以参加这个活动了。参加者都可以获赠一份价值 800元 的免费保障规划。 资讯 1、变色纹身 德国科学家开发出一种特殊颜料,会随着人体内葡萄糖、白蛋白或 pH 值的变化而改变颜色。它们纹在身上以后,就可以让患者和医生通过颜色,实时监测糖尿病和肾脏疾病等慢性疾病。 你可以对着纹身拍照,然后让手机 App 解读颜色变化。不过,该颜料尚未在人体实验,纹身都是在猪身上进行的。 2、屏幕最多的汽车 本田公司最新的电动车"本田 e",驾驶台上安装了五块触摸屏。如果算上头顶的中央后视镜,一共有六块屏幕,是世界上屏幕最多的小汽车。 五块触摸屏之中,左右两侧是两块后视镜,驾驶盘前是仪表盘(8.8英寸),旁边则是两块娱乐用的触摸屏(12.3英寸),分别供司机和前排乘客使用。 3、新西兰计划清除食鸟害虫 新西兰由于地理的孤立性,保存了大量珍稀动物。但是,这些珍稀动物,尤其是鸟类以及鸟蛋,常常被其他动物捕食,使得新西兰大约80%的珍稀野生鸟类面临灭绝的危险。 因此,新西兰决定在野外消灭这些鸟类的天敌,主要是白鼬、老鼠和负鼠。目前,首都惠灵顿的郊外已经基本消灭了这些害虫。 4、Fortnite 世界杯 热门游戏 Fortnite 最近举行自己的世界杯比赛,共耗资3000万美元。美国16岁少年 Kyle 夺得冠军,奖金300万美元。 这个奖金已经超过了温布尔登网球赛的冠军,只比美国公开赛的冠军少80万美元。这就是说,电子竞技的奖金已经跟顶级的职业体育运动不相上下了。Fortnite 世界杯最后一天的决赛在 YouTube 直播,有近900万人观看。 5、更高效率的光伏电池 加州大学伯克利分校的研究人员宣布,他们研发出了更高效率的光伏电池,可以让超轻型无人飞机连续飞行数天。 目前,商用光伏电池的光能转化效率是23%,该团队将效率提高到29%,还声称不久的将来有望达到50%。 6、Megapack 特斯拉虽然是汽车公司,但是核心技术是电池。它在推出家庭电池包 Powerpack 以后,又推出了企业级电池包 Megapack,类似集装箱大小,一次可以储存3000度电。 300多个 Megapack 就可以组成一个电能储存厂,保存100万度电,能够满足旧金山6个小时的用电需求。这种电能储存厂的安装速度也很快,只要用卡车把 Megapower 拉到现场以后,可以快速建厂。 7、软体机器人 清华大学和加州大学伯克利分校的研究人员,研发了一种新型软体机器人。它就是上图左下角的那个金属片,长3厘米宽1.5厘米,看起来像一张弯曲的纸条,但每秒能够前进60厘米,而且被踩踏也没关系,可以说就是一只电子蟑螂。 这种机器人可以经受自身重量100万倍的踩踏,可以爬上15度的坡,还可以背负一颗花生米前进。 8、Tumblr 被甩卖 8月13日,博客平台 Tumblr 以 300万美元卖给了 WordPress 的母公司。2013年,雅虎收购 Tumblr 花了11亿美元,这意味着仅仅六年时间,Tumblr 变得一钱不值。 雅虎公司创造了一项记录,他家收购的所有优质产品都被毁掉:GeoCities、Delicious、Flickr、Tumblr 等等。当年,谷歌创始人找上门要求被收购,雅虎拒绝;微软提出高溢价收购雅虎,雅虎拒绝。该公司的最成功一件事,是把雅虎中国卖给阿里巴巴,换来后者39%的股份。 9、一句话消息 软银集团的远景基金(Vision Fund)宣布筹集到第二期的1080亿美元资金。第一期已经有1000亿美元,这些天文数字的金钱都会投入高科技产业,主要是人工智能、芯片、机器人等方向。 日本批准第一例人体细胞移植入小鼠胚胎,长大以后就是带有人类细胞的老鼠。实验目的是让人类细胞在老鼠身上发育,长出人体器官,最后再移植回人体。 美国庆祝北美大陆横贯铁路建成150周年,世界最大的蒸汽火车头7月26日举行了纪念性行驶。该铁路从纽约到旧金山,1869年建成。 文章 1、面向对象编程:一万亿美元的错误(英文) 这篇长文详细解释了,面向对象编程的一些缺点。比如,OOP 引入了太多的层,大项目很快就会变得非常复杂,而且由于对象内部有状态,不能保证同样的输入得到同样的输出,因此很难测试。 2、我盖了一栋自己的房子(中文) 台湾网友的长篇帖子,海量图片,记录他在老家的土地上,请建筑师设计了一栋三层钢结构的民宅,然后再请施工队盖出来,完成各种内外装修,直到入住。 3、如何在 Bash 提示符显示动态信息(英文) Zsh 的命令行提示符会显示当前目录的 Git 分支名(上图),这在 Bash 中如何做到? 4、如何使用 AWS S3 和 Cloudflare 托管免费网站(英文) 本文一步步介绍如何将静态网站托管在 AWS S3 上面,然后用 Cloudflare 建立 CDN,这都是免费的。 5、CSS 的 background-image 属性是反模式 作者提出,如果图像是内容一部分,就不应该设置成 CSS 的背景图像,而应该使用标签加上 CSS 的object-fit属性。 6、如何用 Puppeteer 破解滑块验证(英文) 很多网站现在都有滑块验证,识别用户是否为真人。但是,其实它们都可以用 Puppeteer 的自动化脚本破解,本文展示怎么做到这一点。 7、ping 的故事(英文) ping是最常用的网络命令之一。这篇文章是ping的作者介绍他怎么写出这个工具。他以前的工作是研究声纳和雷达,声纳发出的声音脉冲就叫做ping。 8、从图片优化说起(中文) 谈谈如何使用 Node.js 进行各种图片操作,优化 Web 图片体验。(@cj1128 投稿) 9、lerna 入门教程(英文) 对于大型项目,多个模块放在一个代码仓库里面会比较方便。lerna 是管理这种多模块复合仓库的流行工具,本文介绍 lerna 的最简单用法。 10、iOS 和 Android 共享代码的隐藏成本(英文) Dropbox 一直使用C++编写手机代码,同时支持iOS和安卓,这样只写一次代码就够了。 现在它也放弃了,不得不改用Swift和Kotlin各写一次。主要原因之一是,招不到同时懂前端和C++的程序员。 工具 1、hostyoself 一个开源工具,可以架设服务,连接本地计算机,让其他人可以通过互联网访问本地的文件夹和文件。 2、listmonk 一个开源的新闻邮件和邮件列表发送服务,带有管理后台。 3、go-pry Go 语言互动式的 REPL 环境,可以直接运行 Go 脚本。 4、Dato MacOS 菜单栏系统时钟的替代品,显示月历和时区,免费软件。 5、osgood 一个专门运行 JavaScript 脚本的 HTTP 服务器。你可以把它想象成内置了 Express 框架的 JS 运行时。 6、BitMatrix 矩阵数据结构的 JavaScript 库,使用了底层的二进制接口,性能较好。(@cnwhy 投稿) 7、Vugu 一个使用 Go 语言写 HTML 前端页面的工具。完全不用 JavaScript,就能写出前端页面。未来的全栈将不再限于 JS,后端语言都可以写前端。 8、video-object-removal 这个工具使用机器学习算法,去除视频里面的运动物体。 9、TabNine 基于深度学习的代码补全工具,号称支持所有语言。(@ifrontend-xyz 投稿) 10、licia 这个库收集 Web 开发的各种 JavaScript 小工具,使得开发者只用加载它一个库即可,跟 lodash 的思路有点像。(@surunzi 投稿) 11、civitas 一个 JavaScript 写的网页策略模拟类游戏。 资源 1、《使用 Julia 语言学习统计学》(PDF,英文) 免费电子书,大学本科的统计学入门教材,其中的示例使用简单的 Julia 语言。 2、爱丽丝和鲍勃:密码学最著名的两个人 爱丽丝(Alice)和鲍勃(Bob)通常用来解释加密协议,指代用户 A 和用户 B。该网站收集密码学发展过程中,使用这两个人作为例子的各种历史资料。 3、astronaut.io 很多上传到 Youtube 的视频,从来没有人观看。该网站会随机选择那些很少人观看(接近零观看)的视频,播放给你看。 4、bootlin 快速查看和搜索 linux 内核源代码的网站。(@kele1997 投稿) 5、leetcode 多线程同步题 Leetcode 新增的多线程同步的题目。(@DoctorLai 投稿) 6、家庭关系称谓查询 根据对亲戚关系的描述,返回正确的称谓。(@DoctorLai 投稿) 图片 1、英国没有入侵的国家 英国历史上是"日不落帝国",殖民地遍布全球。历史学家统计以后发现,现在全球近200个国家和地区,只有22个从来没有被英国入侵过(上图白色的部分)。 2、孟菲斯集团的家具 上个世纪80年代,意大利米兰的孟菲斯集团招聘了很多年轻的设计师,他们设计了很多后现代主义风格的家具。 椅子。 桌子。 沙发。 架子。 柜子。 文摘 1、三氟化氯 我们知道,沙子可以灭火。有一位读者提问,是否存在某样东西会让沙子着火。 事实上,这种物质是存在的,它碰到沙子,沙子会烧起来。它就是三氟化氯。 三氟化氯是人类已知的最强氟化剂,比任何一种氧化剂的效果都更强烈。它与大多数无机和有机材料都会产生激烈的化学反应,可以在没有任何火源的情况下,让许多不易燃烧的材料发生燃烧,甚至爆炸。 由于它的氧化能力比氧更强,因此可以让已经烧到无法再烧的东西,继续燃烧下去,比如沙子、砖块和石棉瓦片,它都能让它们烧起来。它甚至还会点燃,已经在氧气中烧成灰烬的材料。一次工业事故中,900公斤的三氟化氯泄漏,使得30厘米的混凝土和90厘米的砾石层被烧穿。除了使用氮气和惰性气体外,没有已知的方法能够抑制该种物质的燃烧。 第二次世界大战期间,德国人曾经想把它用于火焰喷射器,后来发现太难控制,只能放弃。目前,它主要用于半导体工业,清除电路板表面的氧化物。 它能让玻璃烧起来,所以不能放在玻璃容器中,只能保存在钢、铜、铝等金属容器中,因为这些金属表面会形成一层金属氟化物薄膜,防止金属与它发生化学反应。一位化学家写道:"如果这种涂层熔化或被擦掉,操作者就会面临金属氟化物火灾的风险。这时,我推荐一双好的跑鞋。" 2、为什么飞机窗户都是圆角的? 如果你曾经坐过飞机的靠窗座位,可能已经注意到窗户是圆角的。你有没有想过这是为什么? 答案很简单:保证飞行安全。 要了解背后的原因,我们需要回到1954年。那时,飞机制造业开始制造专门的民用客机。 自从莱特兄弟发明飞机以来,几乎所有的飞机都使用螺旋桨,这已经被证明适用和可靠。但是,螺旋桨无法令飞机飞得更快,而且具有巨大的噪音和振动,使得飞机的行程极不舒适。对于战斗机,这不是一个问题,但是对于民用航空,乘客舒适性是一个优先事项。 人们把目光转向喷气发动机,由于喷气发动机包含在外壳里面,因此不用考虑空气阻力,可以推动飞机穿过声障。而且,喷气式飞机相对安静,对乘客没有打扰。 1949年,英国航空业先驱 de Havilland 开设了自己的飞机公司,制造了第一架民用的喷气式客机,称为彗星飞机(comet)。 彗星飞机的机翼内装有四个喷气发动机,比传统的螺旋桨飞机速度高出近50%。而且,它具有增压舱设计,可以在高空保持跟平地一样的气压,带给乘客平稳舒适的乘坐体验。但是,有一个地方,它的设计跟传统飞机一样:它的窗户是方形的。 这架飞机立即在世界各地取得了成功,各国纷纷订购。可是,意想不到的事情出现了。在服役的第一年,就发生了两起飞机坠毁事故。1953年3月3日,加拿大航空公司的一架飞机坠毁,机上11人全部遇难。1953年5月2日,另一架飞机在印度坠毁,造成43人死亡。最初的调查都认为,这是飞行员错误引起的,而不是彗星飞机本身的问题,可以照常飞行。 接下来的1954年,又发生了两起坠毁事故。1954年1月10日,一架从罗马飞往伦敦的飞机坠毁,35人遇难。1954年4月8日,一架南非的飞机坠毁,21人遇难。 经过四起坠机事故,英国政府终于决定对彗星飞机展开彻底调查。调查人员怀疑,事故原因与气压有关。高空没有足够的氧气供人们呼吸,因此飞机内部是加压的,这就要求飞机是密封的,防止氧气泄漏。如果在高空,飞机有裂缝,内部的空气就会冲出来,力量之大,有时甚至会引起机身撕裂。 调查人员经过了各种测试,甚至将整个机舱浸没在一个巨大的水箱中,然后反复地加压和减压。他们终于找到了原因,一切都跟那些方形窗户有关。 当飞机内部反复加压和减压,数月之后,飞机金属机身的强度就会逐渐减弱,这叫做金属疲劳。机身的方形窗口会带来尖角,就会有叫做应力集中的过程,那些尖角处会变得比其他地方更脆弱,最终裂缝开始在那些角落形成。其中一个裂缝变得足够宽时,机舱内的压缩空气就会冲出来,从而撕裂飞机。 以前有过加压舱的飞机,但由于它们是螺旋桨驱动的,只能在较低的高度飞行,机身应力不那么严重。直到喷气动力的彗星飞机出现,飞机才能飞到更高的高度,使得机身应力超过了断裂点。可以这样说,彗星飞机的悲剧从第一天试飞就注定了。 彗星公司立刻将所有窗户改成了圆角,并且采取了其他安全措施。但为时已晚,它的声誉受到了致命的打击,航空公司不再愿意购买它的飞机。彗星公司最终在1960年将自己卖掉了。美国的波音公司和洛克希德公司虽然进入喷气式客机市场较晚,但​​被认为更加安全,从而带来了属于美国的喷气机时代。 言论 1、 软件的运行速度快,说明这个软件是专注的。 -- 《快的软件,最好的软件》 2、 我们要把社会责任感强烈的人培养成领袖,还要把个人成就感强烈的人培养成英雄。 领导者的责任就是要使自己的部下成为英雄,而自己成为领袖。 -- 任正非,1998年 3、 面向对象编程的问题是,每个对象都有自己的状态,开发程序时,必须记住当前所有对象的状态。 为了让我们的生活更轻松,最好只有一小部分代码库处理状态,其他代码都是无状态和纯的。实际上,这就是前端的 Redux 库取得巨大成功的主要原因。 -- 《面向对象编程:一万亿美元的错误》 4、 20世纪50年代,建造月球基地是一项工程和技术挑战。 今天,它基本上是一个政治和经济挑战,难点是说服足够多的人,花时间和精力去做这件事是值得的。 -- HN 读者 招聘信息 周刊讨论区的程序员招聘帖,有大量工作/实习岗位,欢迎查看。 同时,欢迎企业免费张贴招聘信息。如果希望发在周刊上,可以联系我(Email: yifeng.ruan@gmail.com ),每条价格 250 元。 1、秘猿科技 区块链创业公司,为加密经济提供区块链基础设施和服务,主要产品有 Nervos、火币金融公链、CITA 等,全部开源。 工作地点:杭州 或者 remote。诚意招聘以下岗位: 高级区块链工程师:需要熟悉 Rust 语言。 高级后端工程师:熟悉分布式系统开发。 首席安全官:5年以上安全从业经验。 高级测试经理:从事区块链底层的自动化测试。 点击这里,查看详情。简历投递:zhouyun@cryptape.com (一天内回复) 回顾 去年的本周:《周刊第 17 期》 订阅 这个周刊每周五发布,同步更新在阮一峰的网络日志、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年8月16日


科技爱好者周刊:第 68 期

2019-08-09 01:50:59 阮一峰

这里记录每周值得分享的科技内容,周五发布。 欢迎投稿,或推荐你自己的项目,请前往 GitHub 的 ruanyf/weekly 提交 issue。 封面图片:松江方塔,上海,2018。 该塔高九层,始建于宋朝,清朝重修,沿袭了唐代砖塔风格。 刊首语 一个月之前,我在周刊讨论区发了一个帖子《谁在招人?》,欢迎企业免费张贴招聘/实习信息。现在已经有30多家公司的100多个岗位,找工作的朋友可以关注。 有的读者私下问我:"大部分公司没写报酬,工资会不会给得低?"我心想,你怎么会有这种担心!普通程序员的工资能有多大差别呢? 程序员是一个高度流动的行业。一家公司如果待遇偏低,肯定留不住人。普通程序员的待遇,公司与公司之间的差别不会特别大。 程序员分为两种:普通程序员需要找工作,高级程序员不需要找工作,企业争相邀请他加入。 对于大多数人来说,要操心的不是找一份工资高的工作,而是设法让自己尽快变成高级程序员,可以在这个行业里面为自己定价,而不是让别人给你定价。 Vue 源码解析视频 目前,Vue 和 React 已经成为前端工程师的基本技能。Vue 3.0 很快就会发布,但是有些 Web 前端工程师对 Vue 2.0 都没有做到熟练掌握。 如果你想深入学习 Vue,现在有一个很好的机会。国内领先的在线教育平台"开课吧"联系我,愿意给周刊读者提供了一个特别优惠。 定价1988元的视频课程《Vue 源码解析》,限时免费领取 ,适合所有想提升技术水平的前端学习者。 他们给了我400个名额,微信扫描下面的二维码领取。 另外,大家熟知的IT技术大牛 廖雪峰 已加盟开课吧,耗时半年研发了精品付费课程---- 《Web全栈架构师》 ,来帮助初级前端工程师实现全方位进阶。课程深度对标百度T6--T7,适合有1-4年开发经验的前端程序员们学习。 《Web全栈架构师》 开课时间: 12月底 讲课老师:盛鑫(专家),前百度和360前端架构师 课程价格:7980元(前50名) 课程的其他问题,可以加上面微信了解。 资讯 1、新加坡进口澳大利亚太阳能 新加坡由于国土面积太小,无法发展太阳能。上图是世界最大港口之一的新加坡港,已经拥挤不堪,紧邻住宅区了。另一方面,澳大利亚地广人稀,内陆地区有着大片阳光普照的荒漠。 一家私人公司提出了一个计划,在澳大利亚建设一个大型太阳能电厂,然后通过太平洋的海底电缆,将电能输送到新加坡,两国政府都已经表示有兴趣。按照计划,该电厂可以满足新加坡20%的电力需求。如果可行,世界上的荒漠国家就多了一条发展道路。 2、淘汰纸制教科书 美国主要的教科书出版公司 Pearson 宣布,将逐步淘汰纸制教科书,向电子书转变。这家公司目前数字业务的收入,已经超过总收入的一半。 大家都知道,美国的大学教科书是非常贵的,很多学生买不起,只能选择购买二手书或者租用教科书。为了保证收入,书商不得不每三年推出教科书的新版,这是行业的通用做法。Pearson 公司认为,改成电子书以后,对收入更有利,因为可以持续不断地更新教科书,不再是三年一个版本,而是每个月都有新内容,能够推动学生付钱购买。 3、儿童的职业选择 阿波罗11号飞船登月50周年纪念日(7月20日)前夕,乐高公司委托一家民意调查公司,调查了中国、英国和美国的3,000名儿童,让他们选择最想从事的职业。 中国儿童的选择依次是:宇航员、教师、音乐家、体育明星、网络红人。 英美儿童的选择依次是:网络红人、教师、体育明星、音乐家、宇航员。 4、北极大火 根据卫星照片,北极圈内多个地点,从阿拉斯加、西伯利亚到格陵兰,目前都是烟雾缭绕,表明那些地方都正在发生森林大火。 今年6月,北极圈的气温是有史以来最高的,很多地方超过30度,异常闷热,干燥高温导致了这些森林火灾。更糟糕的是,火灾会释放大量二氧化碳,进而引起气温进一步升高,而更高的气温又引发了更多的火灾。那些地点都是人迹罕至,不太可能去扑救,只能听任大火燃烧。 5、FaceApp 受调查 最近,FaceApp 非常受欢迎,它使用人工智能,给出用户变成老年人的样子,正在病毒式传播。这是一家俄罗斯公司开发的 App,据估计,它至少已经有了1.5亿人的面孔数据。 美国一个前参议员认为,这已经构成了对国家安全的威胁,要求联邦调查局介入调查,美国公民的面孔和其他个人数据是否将被发送和存储到俄罗斯。 6、AI 绘制地图 人工绘制地图,通常很慢,标识道路、高速公路、桥梁等,需要大量的投入。Facebook 开发了一个人工智能系统,可以从卫星照片自动生成地图。上图中,白色线条是现有道路,粉红色线条是人工智能识别出来的道路。 这套系统可以识别出上图中的河边小道,因此对地理信息不全的农村地区尤其有用。该系统已经补全了泰国和印尼现有地图缺失的道路,将泰国地图的道路总里程,从28万英里增加到了60万英里。传统方法需要三到五年,它只用了18个月。 下图是用来训练的卫星照片,白色线条是需要发现的道路。 7、软件外包的风险 西门子公司的很多软件都是外包开发的。一个外包程序员在软件里面留下了一个逻辑炸弹,设置在指定日期后触发,会使得软件崩溃。 结果,2014年开始,软件就发生故障了。西门子只能打电话找那个外包程序员,付费让他修复。这种情况发生了多次,直到2016年5月,才有西门子员工发现这是故意留下的逻辑炸弹。目前,该外包程序员已经认罪,等待法庭判决,面临最高10年的监禁,罚款25万美元。 8、一句话消息 哥斯达黎加是中美洲的岛国,500万人口,已经完全使用可再生能源运行了300天。目前,全国所有电力都来自水力、地热、风能和太阳能。 世界第一个商用的核聚变反应堆,官方宣布已经取得重大进展,将于2025年12月正式运营。 炸弹无人机的实物被贴到了推特,可以编程指定飞行轨迹,具有12分钟飞行时间,或20分钟滞空时间。难以想象,这种武器普及的后果。 澳大利亚珀斯造币厂在纽约华尔街的马路上,展示世界最大的金币,重达一吨,价值4500万美元。 文章 1、如何识别无头浏览器(英文) 命令行抓取网页,往往使用无头浏览器,比如 Puppeteer 这样的工具。怎样才能区分正常的访问与无头浏览器呢?本文提供了一个方法。 2、太空中如何大小便? (中文) 太空没有重力,所有东西都是漂浮的,大小便成了棘手的问题。本文介绍美国宇航局如何在零重力的太空环境,解决宇航员的大小便问题。 上图是国际空间站的马桶,这里的关键是屁股与马桶之间不能有空气泄漏,这样就可以用气压吸走排泄物。 3、如何识别 Chrome 浏览器的隐身模式(英文) 隐身模式用来防止网站追踪用户。有时,开发者可能希望识别,哪些用户正在使用隐身模式。本文介绍可用的方法。 4、华为基本法(中文) 华为公司1998年通过的一份公司纲领性文件,详细阐述了公司的原则和管理方法,长达1.7万字。第一条就明确写明,华为是一家信息设备供应商,永远不进入信息服务业。 5、什么是 CGI 脚本?(英文) CGI 是"通用网关接口"的缩写,用来将任意脚本接入 Web 服务器,处理 HTTP 请求。它属于诞生于互联网早期的一种技术,如果网站访问量不大,现在依然可以使用。学习它有助于深入理解后端的 Web 实现。 6、什么是 CVE 漏洞?(英文) 软件漏洞经常有一个 CVE 编号,比如 CVE-2018-8589,这个编号是什么意思?它是怎么来的?请看这篇英语的简单介绍。 7、谷歌表格的27个诀窍(英文) 谷歌表格(Google Sheet)的功能非常强大,本文介绍27个很有用、但是你可能不知道的使用诀窍。 8、制造美少女卡通头像自动售货机(英文) 一个旧金山的动漫团队,在动漫展览会上搭建了一个美少女卡通头像的"自动售货机"(上图)。 用户付款后,可以选择一个头像,然后对头像进行发型和颜色的调整,最后打印出来,拿到头像证书。 9、运动平滑正在破坏电影(英文) 电影每秒是24帧,电视机的刷新率是 60Hz ~ 240Hz,这导致电视机播放电影时,有时会产生不连贯的现象。为了减轻这个问题,现在的电视机都默认开启了"运功平滑"功能,会在电影的每帧之间自动插入新的帧。很多电影工作者认为,这种功能对电影艺术的破坏,大于它带来的好处。 10、如何使用 JavaScript 写一个扫雷游戏(英文) 作者讲解如何用 JavaScript 写一个网页的扫雷游戏。 11、JetBrains IDE 基本快捷键(中文) IntelliJ 的快捷键绝大部分同样适用于其他 JetBrains IDE,包括前端开发常用的 WebStorm 和 Android 开发常用的 Android Studio。掌握这些快捷键能使你成为一个更娴熟的软件开发者。(@Alice-sos 投稿) 工具 1、hub GitHub 官方的命令行客户端。 2、Zen Flowchart 简单好用的在线流程图工具。 3、autosetup 一个 Bash 脚本,可以在 Debian 系的发行版上,让用户通过图形界面,一次性选择所要安装的应用程序,主要用于新系统的装机。 4、foliate 一个使用 GTK 图形框架的 Epub 桌面阅读器,只支持 Linux 系统。 5、pixelfed 照片分享服务 Instagram 的开源替代品,基于 ActivityPub 协议,可以与其他平台交换信息。 6、面包多 创造者出售数字作品的平台。你上传作品,设定价格,在这个平台出售。(@wdkwdkwdk 投稿) 7、哈利路亚英文输入法 这是 Mac 平台上一款智能英语输入法,可以提示单词拼写和中文解释。(@dongyuwei 投稿) 8、rc-leaflet 一个基于 Leaflet 地图引擎的 React 地图组件库。(@Coder-JJ 投稿) 9、SoloPi 支付宝推出的安卓应用自动化测试工具。公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。(@ifrontend-xyz 投稿) 10、那样记账 一个安卓的记账 App,有报表和图表功能,支持多个账户。(@Chloe-Y 投稿) 11、守望先锋 UI 组件库 一个《守望先锋》游戏风格的组件库,基于 Vue.js。(@Haixiang6123 投稿) 资源 1、favorite-link 笔记仓库,收集各种开发工具和资源的链接,每日更新。(@machunyugit 投稿) 2、腾讯云软件源 腾讯云提供的各种开源软件的下载镜像,更多类似的镜像请看这里。(@CmderQ 投稿) 3、植物画册 1865年,英国著名女插画家 Elizabeth Twining 出版了二卷本的《植物画册》,包含160幅全彩色的植物插图。该网站将这160幅画都上线,可以下载。打印出来,挂在墙上是很好的装饰品。 4、简单英语指南 美国政府的官方网页,有几百条单词建议,指导你怎么写出简单的文章,不要用复杂的单词。比如说,"a 和 b 可以同时使用,也可以单独使用",不要用a and/or b,而要用a or b or both。 5、数字隐私档案 该仓库收集互联网上保护用户隐私的各种工具和方案。(@No-Github 投稿) 6、今日热榜 这是一个信息聚合服务,聚合各站热点,包括微信、今日头条、百度、知乎、V2EX、微博、贴吧、豆瓣、天涯、虎扑、Github、华尔街见闻等,有 Web 版和 App 下载。 图片 1、DOS 图形界面 下面是上个世纪90年代前期,Windows 3.1 发布之前,典型的 MS-DOS 图形界面。20多年前的大众软件就是长这个样子。 2、iOS 13 的全局变量 iOS 13 有一些非常冗长的全局变量,用于联系人标签,比如下图这个变量,长达82个字符,翻译成中文,意思是"表妹或堂妹"。 文摘 1、为什么北极融化不会导致海平面上升? 北极都是海冰,漂浮在水中。我们知道,冰山质量的90%都在水下。当冰融化变成水时,体积会缩小,所以不会导致海平面变化。 但是,南极完全不一样,冰山基本都在陆地上。当陆地冰川融化时,就会导致海平面上升。南极洲的冰量是世界上其他陆地冰川总和的50倍。 有研究称,过去2000年,海平面保持稳定。但是从1990年以来,海平面上升速度增加了一倍。据估计,到本世纪末,海平面预计将上升2英尺(61厘米)。 2、新能源的极限 目前,石油、天然气、煤等碳氢化合物,提供了全世界84%的能源。风能和太阳能提供了全世界2%的能源。 尽管如此,许多人还是主张尽快把所有碳氢化合物都替代掉,并称其为"新能源经济"。 但是,风能,太阳能和电池存储技术有其极限,全世界近期几乎不可能向"新能源经济"过渡。原因如下: (1)碳氢化合物有低成本、高能量密度、稳定性、安全性和便携性等卓越的优点,科学家尚未发现跟它们一样优秀的替代物。 目前,在风力涡轮发电机或太阳能电池板上投入100万美元,每年产生约5000万度电,但是在页岩钻井平台上花费100万美元,生产的天然气可以产生2亿度电。 (2)硅光伏电池有物理极限,称为 Shockley-Queisser Limit,即最多只有 34%的光子可以转换为电子。今天最好的商业光伏技术,转化率已经超过26%。 (3)风力发电机的物理极限是 Betz Limit,即最多只能从移动的空气中捕获 60% 的动能。今天的商用风力涡轮机,转化率已经超过 40%。 (4)世界最大的电池工厂特斯拉的 Gigafactory,一年生产的电池只能支撑全美国的用电需求三分钟。连续生产1000年的电池,可以支撑美国两天的电力需求。与此同时,每生产一磅电池,需要开采、移动和加工50-100磅的各种材料。 言论 1、 美国癌症协会、FDA 和许多其他组织强烈反对食用鱼翅,或者食用鲨鱼肝油,认为效果跟吃自己的指甲差不多。 -- 《没有鲨鱼的世界会怎样?》 2、 多年使用 Vim 之后,我有一个顿悟:如果坚持使用默认配置,就可以在任何环境中毫无困难地使用 Vim。 -- HN 读者留言 3、 人生所有的事情之中,后悔是最可怕的。失败是一种答案,拒绝也是一种答案,但后悔却是永远得不到答案。"要是我当初......"、"如果我那样选了......"、"不知道如果走了那条路会怎样......",你永远、永远都不会知道答案,而且这些疑问会纠缠你一辈子。 -- [南非] 特雷弗·诺亚《天生有罪》 4、 只有落后者才说抓住机会,发达国家是创造机会,引导消费。 -- 任正非 5、 每节课的时间,对于老师来说太短,对于学生来说太长了。 -- 《如何创建一个有效的课程》 招聘信息 以下公司正在招聘,欢迎应聘。 本栏目为收费服务,每条价格 250 元人民币,用于资助周刊。如果你的公司正在招人,欢迎联系我(Email: yifeng.ruan@gmail.com)。 讨论区有更多职位,欢迎大家访问。 1、秘猿科技 区块链创业公司,为加密经济提供区块链基础设施和服务,主要产品有 Nervos、火币金融公链、CITA 等。工作地点:杭州 或者 remote。 诚意招聘以下岗位: 高级区块链工程师:需要熟悉 Rust 语言。 高级后端工程师:熟悉分布式系统开发。 首席安全官:5年以上安全从业经验。 高级测试经理:从事区块链底层的自动化测试。 详细招聘要求,欢迎点击这里。 简历投递:zhouyun@cryptape.com (一天内回复) 回顾 去年的本周:《周刊第 16 期》 订阅 这个周刊每周五发布,同步更新在阮一峰的网络日志、微信公众号和语雀。 微信搜索"阮一峰的网络日志"或者扫描二维码,即可订阅。 (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年8月 9日


xargs 命令教程

2019-08-08 04:58:40 阮一峰

xargs是 Unix 系统的一个很有用的命令,但是常常被忽视,很多人不了解它的用法。 本文介绍如何使用这个命令。 一、标准输入与管道命令 Unix 命令都带有参数,有些命令可以接受"标准输入"(stdin)作为参数。 $ cat /etc/passwd | grep root 上面的代码使用了管道命令(|)。管道命令的作用,是将左侧命令(cat /etc/passwd)的标准输出转换为标准输入,提供给右侧命令(grep root)作为参数。 因为grep命令可以接受标准输入作为参数,所以上面的代码等同于下面的代码。 $ grep root /etc/passwd 但是,大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数。举例来说,echo命令就不接受管道传参。 $ echo "hello world" | echo 上面的代码不会有输出。因为管道右侧的echo不接受管道传来的标准输入作为参数。 二、xargs 命令的作用 xargs命令的作用,是将标准输入转为命令行参数。 $ echo "hello world" | xargs echo hello world 上面的代码将管道左侧的标准输入,转为命令行参数hello world,传给第二个echo命令。 xargs命令的格式如下。 $ xargs [-options] [command] 真正执行的命令,紧跟在xargs后面,接受xargs传来的参数。 xargs的作用在于,大多数命令(比如rm、mkdir、ls)与管道一起使用时,都需要xargs将标准输入转为命令行参数。 $ echo "one two three" | xargs mkdir 上面的代码等同于mkdir one two three。如果不加xargs就会报错,提示mkdir缺少操作参数。 三、xargs 的单独使用 xargs后面的命令默认是echo。 $ xargs # 等同于 $ xargs echo 大多数时候,xargs命令都是跟管道一起使用的。但是,它也可以单独使用。 输入xargs按下回车以后,命令行就会等待用户输入,作为标准输入。你可以输入任意内容,然后按下Ctrl d,表示输入结束,这时echo命令就会把前面的输入打印出来。 $ xargs hello (Ctrl + d) hello 再看一个例子。 $ xargs find -name "*.txt" ./foo.txt ./hello.txt 上面的例子输入xargs find -name以后,命令行会等待用户输入所要搜索的文件。用户输入"*.txt",表示搜索当前目录下的所有 TXT 文件,然后按下Ctrl d,表示输入结束。这时就相当执行find -name *.txt。 四、-d 参数与分隔符 默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。 $ echo "one two three" | xargs mkdir 上面代码中,mkdir会新建三个子目录,因为xargs将one two three分解成三个命令行参数,执行mkdir one two three。 -d参数可以更改分隔符。 $ echo -e "a\tb\tc" | xargs -d "\t" echo a b c 上面的命令指定制表符\t作为分隔符,所以a\tb\tc就转换成了三个命令行参数。echo命令的-e参数表示解释转义字符。 五、-p 参数,-t 参数 使用xargs命令以后,由于存在转换参数过程,有时需要确认一下到底执行的是什么命令。 -p参数打印出要执行的命令,询问用户是否要执行。 $ echo 'one two three' | xargs -p touch touch one two three ?... 上面的命令执行以后,会打印出最终要执行的命令,让用户确认。用户按下回车以后,才会真正执行。 -t参数则是打印出最终要执行的命令,然后直接执行,不需要用户确认。 $ echo 'one two three' | xargs -t rm rm one two three 六、-0 参数与 find 命令 由于xargs默认将空格作为分隔符,所以不太适合处理文件名,因为文件名可能包含空格。 find命令有一个特别的参数-print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。 $ find /path -type f -print0 | xargs -0 rm 上面命令删除/path路径下的所有文件。由于分隔符是null,所以处理包含空格的文件名,也不会报错。 还有一个原因,使得xargs特别适合find命令。有些命令(比如rm)一旦参数过多会报错"参数列表过长",而无法执行,改用xargs就没有这个问题,因为它对每个参数执行一次命令。 $ find . -name "*.txt" | xargs grep "abc" 上面命令找出所有 TXT 文件以后,对每个文件搜索一次是否包含字符串abc。 七、-L 参数 如果标准输入包含多行,-L参数指定多少行作为一个命令行参数。 $ xargs find -name "*.txt" "*.md" find: paths must precede expression: `*.md' 上面命令同时将"*.txt"和*.md两行作为命令行参数,传给find命令导致报错。 使用-L参数,指定每行作为一个命令行参数,就不会报错。 $ xargs -L 1 find -name "*.txt" ./foo.txt ./hello.txt "*.md" ./README.md 上面命令指定了每一行(-L 1)作为命令行参数,分别运行一次命令(find -name)。 下面是另一个例子。 $ echo -e "a\nb\nc" | xargs -L 1 echo a b c 上面代码指定每行运行一次echo命令,所以echo命令执行了三次,输出了三行。 八、-n 参数 -L参数虽然解决了多行的问题,但是有时用户会在同一行输入多项。 $ xargs find -name "*.txt" "*.md" find: paths must precede expression: `*.md' 上面的命令将同一行的两项作为命令行参数,导致报错。 -n参数指定每次将多少项,作为命令行参数。 $ xargs -n 1 find -name 上面命令指定将每一项(-n 1)标准输入作为命令行参数,分别执行一次命令(find -name)。 下面是另一个例子。 $ echo {0..9} | xargs -n 2 echo 0 1 2 3 4 5 6 7 8 9 上面命令指定,每两个参数运行一次echo命令。所以,10个阿拉伯数字运行了五次echo命令,输出了五行。 九、-I 参数 如果xargs要将命令行参数传给多个命令,可以使用-I参数。 -I指定每一项命令行参数的替代字符串。 $ cat foo.txt one two three $ cat foo.txt | xargs -I file sh -c 'echo file; mkdir file' one two three $ ls one two three 上面代码中,foo.txt是一个三行的文本文件。我们希望对每一项命令行参数,执行两个命令(echo和mkdir),使用-I file表示file是命令行参数的替代字符串。执行命令时,具体的参数会替代掉echo file; mkdir file里面的两个file。 十、--max-procs 参数 xargs默认只用一个进程执行命令。如果命令要执行多次,必须等上一次执行完,才能执行下一次。 --max-procs参数指定同时用多少个进程并行执行命令。--max-procs 2表示同时最多使用两个进程,--max-procs 0表示不限制进程数。 $ docker ps -q | xargs -n 1 --max-procs 0 docker kill 上面命令表示,同时关闭尽可能多的 Docker 容器,这样运行速度会快很多。 十一、参考链接 Linux and Unix xargs command tutorial with examples, George Ornbo 8 Practical Examples of Linux Xargs Command for Beginners, Himanshu Arora (完) 文档信息 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 发表日期: 2019年8月 8日


Web Components 入门实例教程

2019-08-06 09:39:44 阮一峰

组件是前端的发展方向,现在流行的 React 和 Vue 都是组件框架。 谷歌公司由于掌握了 Chrome 浏览器,一直在推动浏览器的原生组件,即 Web Components API。相比第三方框架,原生组件简单直接,符合直觉,不用加载任何外部模块,代码量小。目前,它还在不断发展,但已经可用于生产环境。 Web Components API 内容很多,本文不是全面的教程,只是一个简单演示,让大家看一下怎么用它开发组件。 一、自定义元素 下图是一个用户卡片。 本文演示如何把这个卡片,写成 Web Components 组件,这里是最后的完整代码。 网页只要插入下面的代码,就会显示用户卡片。 这种自定义的 HTML 标签,称为自定义元素(custom element)。根据规范,自定义元素的名称必须包含连词线,用与区别原生的 HTML 元素。所以,不能写成。 二、customElements.define() 自定义元素需要使用 JavaScript 定义一个类,所有都会是这个类的实例。 class UserCard extends HTMLElement { constructor() { super(); } } 上面代码中,UserCard就是自定义元素的类。注意,这个类的父类是HTMLElement,因此继承了 HTML 元素的特性。 接着,使用浏览器原生的customElements.define()方法,告诉浏览器元素与这个类关联。 window.customElements.define('user-card', UserCard); 三、自定义元素的内容 自定义元素目前还是空的,下面在类里面给出这个元素的内容。 class UserCard extends HTMLElement { constructor() { super(); var image = document.createElement('img'); image.src = 'https://semantic-ui.com/images/avatar2/large/kristy.png'; image.classList.add('image'); var container = document.createElement('div'); container.classList.add('container'); var name = document.createElement('p'); name.classList.add('name'); name.innerText = 'User Name'; var email = document.createElement('p'); email.classList.add('email'); email.innerText = 'yourmail@some-email.com'; var button = document.createElement('button'); button.classList.add('button'); button.innerText = 'Follow'; container.append(name, email, button); this.append(image, container); } } 上面代码最后一行,this.append()的this表示自定义元素实例。 完成这一步以后,自定义元素内部的 DOM 结构就已经生成了。 四、