这儿记录每周值得分享的科技内容,周日发布。
本刊物开源[1],欢迎投稿[2]。周刊另有《谁在招人》[3]服务,发布程序员急聘信息。合作推广请短信联系[4](yifeng.ruan@gmail.com[5])。
封面图
上图是2022年世界旅行类摄影师大赛的得奖者。Najin是美洲中部残存的两头白犀牛之一,早已33岁了,为了保护它不被猎捕者杀死,马来西亚政府专门为它安排了守卫。她们形影不离,晚上一起在南非大草原上休息。(via[6])
本周话题:一次难堪的服务器被黑
本周三晚上(2月13日),我的个人网站服务器被黑了。
因为入侵者没有触发报案机制,我也没察觉。午觉醒过来,看见很多网友的电邮,让我快去瞧瞧网站,访问任何一个网页,就会跳转到xxx的外部网址,令人极其难堪。
我查了一下服务器,发觉果然这么。局势很严重,对方领到了网页目录的写入权限,将我的所有HTML网页都删掉了原始内容,写入了他的跳转代码window.onload="..."。
然而苹果服务器是什么意思,数据库没有受到破坏,加上没有SSH的异常登陆报案,因而我判定,对方没有领到服务器的登陆权限,只是借助了Web服务的漏洞。
我的第一觉得不是恐慌,也不是愤怒,而是无奈。害怕已久的事情,总算发生了。
好多同学晓得,我的个人网站起码有10年没有更改过款式了。不是不想改,而是无法改,或则说改上去很麻烦。
缘由是我的后台软件采用了初期知名博客软件MovableType,它的历史比WordPress还要悠久。前者早已是老古董了,你就晓得它有多老了。其实,这说明我也老了,当初选择它的时侯,我还是中学生。
MovableType早就停止发展了,出售给了一个美国公司,所有用户都要交费,就能收到代码补丁。我没交费,所以我的个人网站的后台早就老化了。
软件老化本身不是大问题,只要能够正常运行,但是你也不须要新功能,这么能够平安无事地过下去。真正的问题是它的依赖都过时了。
它依赖的底层系统和组件,都严重过时。我试过把它迁移到新系统,结果各类报错,不得不仍然运行在很老的系统上。
我仍然晓得老系统不安全,而且又不敢升级。害怕的事情最终还是爆发了。
前三年,我早已被功击过一次,当时心存侥幸,只做了一些服务器加固,还是没升级,直至现今。
此次被功击,我就想如法炮制。网站有定期快照,被黑后,我回滚到近来一次快照,又改了一些服务器设置,礼拜一早晨就把网站恢复上线了,心想最好此次也能蒙混过关。
然而,对方大约仍然在线盯住我,上线一小时之内,又被一模一样地黑了。
这时,我晓得大事不好,只能将网站再度下线。好在先前被功击时,我做过一个临时公告页面,此次能够用,把域名指向它即可。
随后整整三天,我一筹莫展,做好了最坏准备,个人网站可能要长时间下线。在此期间,只能通过临时页面发布内容。
到了礼拜二晚上,我越想越胸闷,最后还是不死心,一咬牙决定升级服务器,死马当成活马医。
我一口气把底层系统和依赖组件,都升级到了近来的版本,整整装了一个多小时。此次很神奇,网站没有奇怪的报错,竟然能正常运行。惊喜之余,我就把网站恢复上线了,到目前为止都是正常的。
说实话,我不肯定漏洞早已被修补了。假如接出来,服务器再度被黑,我就没辙了,只能长时间下线网站了,之后推动本来就准备明年要做的事情:自己重画博客构架,改成彻底的静态网站。
此次的教训有好多,假如你们也想做一个独立博客,我有两点建议。
(1)不要自己管理服务器。服务器管理是一个十分繁杂的专门工种,倘若不是专业的运维工程师,很难做好。退一步说,就算你拥有这方面的专业知识,也不值得把大量时间和精力投入在自己的博客服务器上。网路世界是一个黑暗森林,四处都有人向你打冷箭,防不胜防,解决方式就下一条。
(2)使用专业的云服务商。现今大部份云服务器商,都有静态网站托管服务,把静态网页托管在它们那儿,省时省心。假如你须要前端动态生成内容,那就使用云函数(称作FaaS),通过服务商提供的边沿估算、而不是你的主机自带的CPU算力。
科技动态
1、老客机的模拟飞行[7]
谷歌公司有一款知名的游戏《微软模拟飞行》,玩家可以模拟操纵各类客机,在世界各地实景飞行,疗效十分逼真。
游戏制做团队近来盯上了博物馆上面的老客机,其中就有知名的休斯H-4大力神巨型水上运输机。
这是有史以来最大的客机,跟篮球场差不多大小。它只在1947年飞行过一次,短暂脱离海面数十秒,之后就置于库房里,直至报废后移入博物馆。
谷歌公司把这架客机搬入了游戏,玩家如今可以模拟驾驶它,体验一下这架传奇客机的驾驶体会。右图就是游戏画面。
制做团队下一步打算把更多的老客机搬入游戏,“复活”那些再也不可能上天的客机。目前,早已完成了大概300架老客机的扫描。
2、迪斯尼的年纪调整算法[8]
迪士尼公司发布了一个影视专用的年纪调整算法,可以让艺人显得更年青或更年老。
这些算法可以让老年艺人饰演年青人,反之亦然。
现今的听众必须明白,你看见的一切都可能是假的。外貌可以美肤,年纪可以加减,背景可以绿幕,没有哪些是做不到的。
3、儿童游乐场[9]
儿童游乐场一般都是一些传统设施,例如滑梯、秋千、双杠、跷跷板等。
一位美国建筑师觉得,这种设施都没有乐趣,模仿大自然的环境才是更好的选择。
他就设计了一个类似野外环境的儿童游乐场。
游乐设施都搭建在巨石之上,但显然没有看上去这么危险,巨石都由钢棒进行固定,地面采用有弹性的橡胶地板,不会受伤。
开业一个月以来,女儿们很玩儿,没有人重伤。
4、智能布条[10]
传统布条未能晓得创口结疤情况,有时解开布条,才发觉抗生素无效,创口还在发炎。
为了解决这个问题,一个国际研究团队开发了智能布条。
这些智能布条采用纤薄、可弯曲的电路板,会手动探测创口结疤程度,按照真菌的饲养情况释放药物或其他抗生素。
它带有无线模块传送数据,为了纤薄,它不带有电瓶,通过天线接收能量。
文章
1、Next、Nuxt、Nest的区别[11](英语)
Next.js、Nuxt、NestJS是三个流行的JS框架,本文解释它们的区别。
2、为什么业界转向显存安全语言[12](英语)
本文介绍大公司使用显存安全语言(Java、Rust和Kotlin)取代C/C++的情况。
3、如何使用360单反生成航拍图象?[13](英语)
作者介绍怎样使用OpenDroneMap这个软件,为360单反拍摄的视频建模,合成为航拍视角的空间图象模型。
4、打造我的家庭办公环境[14](英语)
作者详尽介绍,自己如何在家里布置一个舒适的笔记本工作环境。
5、我如何以SerenityOS谋生[15](英语)
作者是开源软件SerenityOS的作者,2021年开始,全职投入开源开发。他介绍自己如何谋生。
6、我的个人IT基础设施[16](英语)
Mathematica软件的创始人StephenWolfram介绍自己家里的IT基础设置,他长期在家办公。
他还自制了一个“步行桌”(上图),可以在遛弯的时侯,使用电脑笔记本。
7、Playwright怎么绕开登陆验证码[17](英语)
Playwright是一个无头浏览器框架,可以编撰脚本,对网站UI进行手动化测试。有些网站的登入,须要身分验证器的一次性验证码,如何绕开去呢?
8、使用Ruby语言理解网路堆栈[18](英语)
本文使用Ruby语言示例,解释网路基本概念。第一部份解释UDP合同,写得挺好。
工具
1、Convex[19]
一个类似Firebase的状态管理服务,后端状态可以存在它的服务器上,之后你的所有顾客端都可以得到状态的实时更新。
2、兔年订制头像[20]
上传相片,合成一张兔年头像,多种款式可选,代码开源[21]。(@xiaoli1999[22]投稿)
3、ElasticView[23]
一款ElasticSearch的桌面顾客端,拿来监控ES状态和操作。(@lin2415016[24]投稿)
4、RATH[25]
开源的数据剖析和数据可视化工具,只须要导出数据,它手动进行数据剖析,找出规律,生成可视化视图。(@AntoineYANG[26]投稿)
5、tl-rtc-file-tool[27]
一个Web应用,演示了基于WebRTC的各类媒体流传输功能,代码开源[28]。(@iamtsm[29]投稿)
6、EasyNode[30]
简易的个人Linux服务器管理面板(基于Node.js),前后端都开源。(@chaos-zhu[31]投稿)
7、vscode-gptcommit[32]
VSCode插件,使用GPT模型手动生成Git递交说明。(@pwwang[33]投稿)
8、TweekCalendar[34]
一个最简化的任务管理WebApp,十分简约精巧。
9、BetterDisplay[35]
一个开源的MacOS应用,可以精细调节苹果笔记本的各类显示参数。
10、berty[36]
一个群聊应用,最大特征就是不须要互联网,通过低帧率蓝牙通讯,很适宜小范围内的现场广播。
资源
1、MasteringBitcoin[37](第二版)
免费的中文电子书,介绍加密货币的原理。
2、satellite-track[38]
基于Web的卫星轨道可视化项目,可以查看不同类别的卫星,代码开源[39]。(@jiangteng2019[40]投稿)
3、tabler-icons[41]
这个网站提供免费的图标,目前有1900多个,所有图标都是统一风格,简单美观。
4、SomeAssemblyRequired[42]
一份图文并茂的汇编语言中文介绍,针对零基础的初学者,半小时可以读完,并附有代码示例,便于进一步学习。
5、快速涂鸦[43]
一个微软推出的小游戏。系统告诉你一个成语(例如单车、眼镜、轮船……),让你在网页上把它画下来。人工智能会猜想你画的是哪些,只要猜对了,就说明你画得很像。
图片
1、奥尔梅克头像[44]
1930年代,墨西哥发觉了埋在地下的巨大头像,高度都在2米到3米。
考古学家觉得,它们是唐代奥尔梅克人制做的,时间大概距今3000年到5000年之前。
经过几六年的开掘,目前一共发觉17个头像,如今都陈列在博物馆[45]。
文摘
1、苹果竞购NeXT的旧事[46]
二十五年前的1996年12月20日,我在NeXT公司兼任系统工程师。该公司是乔布斯在1985年成立的,我是该公司在美国仅有的三名职工之一。
当时我们都没有手机,公司给我们的大多数信息都通过一个称作Audix的语音短信系统传送。我们接受消息时,就拨通1-800-345-5588这个号码,收听语音邮箱上面的公司留言。
这天,我们忽然收到了一条紧急消息,所有职工都必须在晚上2点拨通这个号码,要公布一个重大风波。当时我正在街上,不得不四处找寻一个可靠的固定电话,最后找到了一个博物馆的付费电话。
到了晚上2点,我们被告知NeXT已被苹果公司以4亿港元的价钱竞购。(事后回想,正确的说法应当是苹果付给NeXT4亿港元,让前者去竞购自己。几年后,大概70%的苹果总工裁都来自NeXT。)
我吃惊了,没想到事情会这样。
当时,NeXT公司虽然很困难。创始人乔布斯虽然把所有的时间,都花在他的另一家公司Pixar。其实NeXT还有一些赢利,但主要来自销售WebObjects(一个Java应用服务器)。乔布斯对外声称的革命性新工作站和操作系统都实现不了,如今他只能靠销售价钱为5万港元企业服务器软件维持公司,这一定让他倍感很失望。
苹果公司虽然也深陷了死亡旋涡,而且早已十分接近资金枯竭。
苹果最感兴趣的是NeXT的NeXTSTEP操作系统,该操作系统最初与NeXT工作站一起提供,但已被移植到英特尔CPU。说实话,我们在NeXT的人虽然不怎样用这个系统。
NeXT的每位人都不清楚此次合并是否会奏效,好在结果很不错。合并发生在苹果的历史高点,一旦乔布斯重新兼任苹果CEO,一场无法置信的技术和业务转变就开始发生了。
NeXT的软件和硬件成为苹果一切产品的基础。NeXTSTEP操作系统取代了MacOS,成为了MacOSX的基础;NeXT的ProjectBuilder和InterfaceBuilder弄成了Xcode;NeXT对Objective-C语言的热爱最终创造了Swift。
合并时,NeXT大概有400名职工,而苹果只有几百人。明天,苹果有16万职工,我很好奇多少NeXT工作人员还留在苹果,我晓得十几个,可能还有更多苹果服务器是什么意思,会到100人吗?
言论
1、
我是React用户,最让我苦恼的是,React团队对开发者面对的实际问题,虽然一无所知,只关注一些不这么重要的事情。
她们设计了好多新的做法(例如风波处理、数据获取等等),确实可以更快地加载网页。并且让开发者关注那些东西,对于中级用途来说,这是完全错误的。
--《拯救React》[47]
2、
领导者的作用不是行使权利,而是分配权利。
有效的领导者通过设定方向、确定人员(找到具有正确技能和背景的人)、授权别人、确保决策执行,来节约自己的时间,并扩大自己的影响。
--《我的创业箴言》[48]
3、
在程序员心里,她们觉得自己是建筑师。当她们来到一个新地方,她们想做的第一件事就是推平这个地方,并建造一些宏伟的东西。
程序员对渐进式翻新不感兴趣:修修复补、改进、在花圃种上盆栽……他们不想做这种事,她们总是想丢弃旧代码并重新开始,诱因并非是觉得旧代码透顶,而是编程的一个基本法则:阅读代码比编撰代码更难。
--JoelSpolsky[49]
4、
开发Chrome浏览器时,有一次我们讨论,应当准许网页重定向多少次。有人提出设为10次,超过这个数字,Chrome都会舍弃加载网页。之后,另一个人说不行,必须设为30次,否则《纽约晨报》网站都会停止工作。于是,Chrome的重定向上限就是30次。
--《我在Chrome团队的10年》[50]
5、
以前有一段时间,成为一名全栈开发人员是可能的,可以做到对中等复杂系统的每一层都有挺好的熟悉度。
然而,明天的系统涉及太多的组件,想要把握每位堆栈的每位组件,是不切实际的。正如一位开发者所说:“程序员如今不得不在数百个API之间充当某种巨大的自动管理层。”
--《更快的马》[51]
历史上的本周
(2022No.195)
(2021No.145)
(2020No.93)
(2019No.43)
鸣谢
周刊得到国外新一代知识管理与协作平台FlowUs[52]的帮助,深表谢谢。
FlowUS[53]=文档+表格+云盘。你可以用它写文档、做主页、管理数据、存储文件等等。
每一期周刊同时发布在FlowUs专栏[54],欢迎你们也去开通自己的专栏和主页。
(完)
References
[1]开源:
[2]投稿:
[3]《谁在招人》:
[4]短信联系:mailto:yifeng.ruan@gmail.com
[5]yifeng.ruan@gmail.com:mailto:yifeng.ruan@gmail.com
[6]via:
[7]老客机的模拟飞行:
[8]迪士尼的年纪调整算法:
[9]儿童游乐场:
[10]智能布条:
[11]Next、Nuxt、Nest的区别:
[12]为何业界转向显存安全语言:
[13]怎么使用360单反生成航拍图象?:
[14]塑造我的家庭办公环境:
[15]我如何以SerenityOS谋生:
[16]我的个人IT基础设施:
[17]Playwright怎么绕开登入验证码:
[18]使用Ruby语言理解网路堆栈:
[19]Convex:
[20]兔年订制头像:
[21]开源:
[22]@xiaoli1999:
[23]ElasticView:
[24]@lin2415016:
[25]RATH:
[26]@AntoineYANG:
[27]tl-rtc-file-tool:
[28]开源:
[29]@iamtsm:
[30]EasyNode:
[31]@chaos-zhu:
[32]vscode-gptcommit:
[33]@pwwang:
[34]TweekCalendar:
[35]BetterDisplay:
[36]berty:
[37]MasteringBitcoin:
[38]satellite-track:
[39]开源:
[40]@jiangteng2019:
[41]tabler-icons:
[42]SomeAssemblyRequired:
[43]快速涂鸦:
[44]奥尔梅克头像:
[45]博物馆:
[46]苹果竞购NeXT的旧事:
[47]《拯救React》:
[48]《我的创业箴言》:
[49]JoelSpolsky:
[50]《我在Chrome团队的10年》:
[51]《更快的马》:
[52]FlowUs:
[53]FlowUS:
[54]FlowUs专栏: