俄乌战争
这是一个技术、踩坑记录、日常吐槽的博客,我本不想给它蒙上太多政治色彩,但原谅我实在是憋不住了。
2022 年 2 月 24 号,俄罗斯入侵乌拉克,与此同时,国内的媒体出现了铺天盖地的假信息、在微博、抖音上网友们更是发表了各种极度令人恶心的言论,让我备受震撼。
你们到底有没有意识到,这可是战争,是要死很多人的!或许你们认为这不关你的事、或许你们认为这只是开开玩笑、又或许你们认为这本就是一场正义的战争。
每个人都可以有自己的政治立场,但我希望你们积点口德,不要拿这种事情来口嗨。
我想在此引用几句在网上看到的几句话,也正是我想说的:
我们,强烈反对俄罗斯对乌克兰发动的战争。无论俄罗斯有千种理由,万般借口,以武力入侵一个主权国家都是对以联合国宪章为基础的国际关系准则的践踏,是对现有国际安全体系的破坏。
我们,坚决支持乌克兰人民保家卫国的行动。我们担忧俄罗斯的武力行为将导致欧洲乃至整个世界局势的动荡,引发更大范围的人道主义灾难。
我们,强烈呼吁俄罗斯政府和普京总统停止战争,用谈判解决纠纷。强权不仅会使文明进步的成果和国际正义的原则毁于一旦,还会给俄罗斯民族带来巨大的耻辱和灾难。
和平始于人心的渴望。我们,反对不义战争。
没有任何一个战争的挑衅者,值得歌颂。
也没有任何一个战争的发起者,值得赞扬。
民族主义在现实世界值得提倡,但沦为民粹时就会反噬自己。
宏大叙事是审美的一种需要,但如果全民歌颂将让集体万劫不复。
根据 The Kyiv Independent 报道,下面是目前双方的战损情况:
这一串数字的背后,是无数家庭的血和泪!
请珍惜来之不易的和平,任何为战争欢呼的人都是傻逼!
分享文章
一些本周阅读过的好文章、以及我的一些总结和个人思考;非常建议你直接阅读原文,毕竟一千个读者就有一千个哈姆雷特,而且我的理解可能是错的。
Yes, I can connect to a DB in CSS
原文地址:《Yes, I can connect to a DB in CSS》 | kamelåså
招聘人员会说:
我们正在寻找可以使用 CSS 连接到数据库的人。
这能做到吗?是的,这篇文章的作者就做到了。
首先需要了解两个东西:
- CSS Houdini:可以通过 JavaScript 访问并控制 CSS 模型,其最大的特点就是 PaintWorklet,它可以以编程方式生成一个图像,也与我们所熟悉的 Canvas 类似。
- sql.js:它是一个 JS 库,允许你在浏览器中创建并查询一个关系型数据库,使用一个存储在浏览器内的虚拟数据库文件,所以数据的存储和修改都不是持久化的;不过它还支持将 SQLite 编译成 Wasm,也就意味着可以在浏览器访问现有的 SQLite 数据库文件。
做法就是:在 JS 中通过 Houdini 获取 CSS 变量,然后传递给 SQLite 的 DB 实例。
最终效果看这里:https://sqlcss.xyz
我为什么说 Vim 比 VSCode 更好用
原文地址:《Why Vim is better than VSCode》 | Sean
随着微软开始全面拥抱开源世界,推出了一个又一个大型开源项目,例如 VSCode,就已经在代码编辑器中占据了一个重要的位置,并且随着 Codespaces 和 Open VSCode Server 的推出,可以轻松在浏览器上进行远程开发。
除此之外,微软还开源了一个项目叫做 xterm.js,用于 VSCode 的终端,这也让浏览器实现终端功能变得更加简单。
作者认为相比于 VSCode,还是 Vim 更胜一筹,因为它轻巧快熟,可以在服务器上通过 SSH 写代码,所有事情都可以在终端中完成,可移植性和可配置性都非常高,并且基于 xterm.js 也可以轻松实现在浏览器上使用 Vim 进行远程开发。
它并不像很多人想象得那么难以上手,它甚至让代码写起来就像打游戏一样,因为它的控制方式与游戏相似,都是通过各种命令的组合操作。
大多数命令有两个、三个或四个部分。三部分结构的一个版本是这样的:操作符(operator)- 文本对象(text object)- 动作(motion)。
操作符包括删除(delete)、更改(change)、视觉选择(visual select)和替换(replace),每次选一个使用。
所以可以这样组合:
- di’ —— 删除(delete)“单引号”内(inside)的内容。
- da” —— 删除“双引号”周围(around)的内容。
- dit —— 删除 html 标签(tag)内的内容。
- ci[ —— 改变(change)[方括号] 内的内容。
个人思考
对于 Vim,我一直在想要学习、放弃之间反复横跳,以至于到现在也只会一些简单的编辑,没有感受过 Vim 命令组合的强大。
但此文只是举了几个例子,就让我更加了解 Vim 的命令组合,重新燃起我想要学习 Vim 的热情。
CSS :not() 伪类选择器已支持复杂参数
原文地址:《CSS :not() 伪类选择器已支持复杂参数》 | 张鑫旭
新特性:
- 支持多个选择器:
:not(.a, .b)
- 权重的区别:无论 :not() 内部有多少个选择器,最终只计算 :not() 本身这一个标签选择器
Facebook 工程师文化独特之处
原文地址:《Facebook 工程师文化独特之处》 | Cat Chen
作者在 Facebook 工作了 7 年,结合 Facebook 之前和之后的其它公司的经验,本文就分享了一些作者觉得属于 Facebook 的独特文化的地方。
- 工程师对产品结果负责任
- 工程师考评不只看技术,从高级工程师开始,考评主要看对产品结果的产出
- 假如产品的留存率没有得到提高,则工程师、产品经理的考评都会得到惩罚
- 鼓励下属自行定义「什么叫做成功」,而不是告诉下属「做什么才能成功」
- 基础架构被视为内部产品
- 基础架构在公司内部推广
- 救火比防火更容易获得回报
- 如果你做的事无法量化,即便它是非常有用的,公司也会认为这是无意义的
- 举个例子:如果在小镇未发生火灾前,即便消防队长在背后默默做了很多事情防范,大家也不会认为这是你的功劳;相反,只有在发生过一次非常严重的火灾后,你做的事才能体现价值。
- 这就是为什么 Facebook 内部那么多问题处于起火状态,因为不起火就没有救火英雄。
有趣的链接
- NPM RunKit:直接在浏览器中尝试任何 npm 软件包,如果你也曾有过与我一样的经历,想尝试一下某个库的运行结果,由于无法直接在浏览器 console 中运行,最终只能选择在项目内随便找个地方运行的话,那就可以试试这个工具,非常简单快捷,只需在 url 后面补上你想要的 npm 包名,如 dayjs。