Skip to main content

挖到谷歌一个 XSS 漏洞

· 3 min read

程序员 Matan 挖到了一个 XSS 漏洞并报告给谷歌,奖励 3133.7 美金(约合人民币 22666 元

这是谷歌 Bug Hunter 的奖励规则:

👉 图片来自 https://bughunters.google.com/about/rules/google-friends/6625378258649088/google-and-alphabet-vulnerability-reward-program-vrp-rules

事情起因是这样的,Matan 看到了一篇揭露谷歌 SSRF 漏洞的文章,文章中提到谷歌的这么一个网站

📍 https://toolbox.googleapps.com

于是便开始探寻,先是查看 robots.txt 文件

#apps-toolbox
User-Agent: *
Allow: /apps/main
Allow: /apps/browserinfo
Allow: /apps/checkmx
Allow: /apps/dig
Allow: /apps/har_analyzer
Allow: /apps/loganalyzer
Allow: /apps/loggershark
Allow: /apps/messageheader
Allow: /apps/recovery
Allow: /apps/useragent
Allow: /apps/other_tools
Allow: /apps/encode_decode
Allow: /apps/screen_recorder
Disallow: *

robots.txt 是一份存在于网站根目录的文件,它会告诉网络爬虫应该哪些页面可以爬,哪些不可以,以此避免网站被爬虫过度请求,造成请求负担

在 robots.txt 文件中,一个链接对应一个工具网页

但是有一个例外,/apps/recovery 是不能被直接访问的

在经过简单搜索后,发现它存在子页面

recovery/domain_in_use
recovery/form
recovery/ownership

这些子页面都能够接收多个 URL 参数,比如

recovery/domain_in_use?visit_id=xxx&user=xxx&domain=xxx&email=xxx

如果输入这条继续跳转链接的话

https://toolbox.googleapps.com/apps/recovery/ownership?domain=example.com&email=email@example.com&case=45500368&continue=/apps/recovery/...

这条链接包含参数 domain=example.com,注意还有一个参数是 continue=/apps/recovery/...

输入该继续跳转链接会得到提示:

在这里,发现了问题,CONTINUE 按钮的链接居然是来自于 continue 参数

Matan 验证了下,注入 JavaScript 脚本代码:.../continue=javascript:alert(document.domain)

成功执行 ✅

这个网站没有 CSP 安全策略,也没有任何防护措施,因此可以从任意外部获取资源

继续尝试加载外部恶意脚本,该恶意脚本用于获取用户 IP 地址:

.../continue=javascript:fetch(%27https://api.ipify.org?format=json%27).then(response=%3Eresponse.text()).then(data=%3E{alert(data);%20})

也是成功执行 ✅

到这里,可以确定存在 XSS 漏洞。

回顾一下 XSS 知识

XSS(Cross-Site Scripting),跨站脚本攻击,没有做好校验,相信用户的输入,接收了攻击者的恶意输入(一般是 JavaScript 脚本代码),导致该恶意输入在其他用户页面上执行。XSS 一般分为三种:

  1. 存储型:恶意输入被永久储存在了后台服务中,无论用户什么时候打开网站,拿到该恶意输入,浏览器就会执行
  2. 反射型:恶意输入内嵌在 URL 或者其他输入中,立即被后台转发,用户只要访问构造好的 URL,浏览器就会执行
  3. 基于 DOM:攻击者操作用户的 DOM 结构,进而执行恶意代码

上诉 Matan 的例子,就是一个很典型的反射型 XSS。

但这个 XSS 太低级了,以至于 Matan 本人都难以置信,毕竟谷歌技术是业界有名的

不过谷歌惯常喜欢用自研框架,而这些框架没有做好安全策略,产品翻车也是难免。

Zed,有望打败 VS Code 吗?

· 3 min read

先说结论,不行

Zed,又一款新起的文本代码编辑器

👉 https://zed.dev

今年一月二十四号正式开源,短短不到三个月,GitHub 上已经冲上 3 万 star

正如 Zed 的口号所说「Code at the speed of thought 以思考的速度编码

实际体验下来,Zed 确实会比 VS Code 丝滑

⬇️ Zed

⬇️ VS Code

官网也给出了打字输入性能对比:

输入字母 z 并显示到屏幕,Zed 仅需 58 毫秒,而 VS Code 需要 97 毫秒

Zed 比 VS Code 快了 1.4 倍

在输入性能方面,Zed 胜出

其次就是 Zed 主打的另一个核心功能,多用户协同编程

额说实话,这个功能暂时想不到很好的落地使用场景。


到目前为止,Zed 仅仅是一个不错的文本编辑器。

甚至可以说,Zed 实质上并没有重大的突破,属于自嗨产品。

Zed 宣传的高性能,并没有质的飞跃,很难打到用户的马屁上。

「58毫秒」和「97毫秒」两个差距并不大

实际开发都知道,编程的瓶颈并不在于输入速度

另外是多用户协同,目前看这个场景不友好

如果是文档协同,国内的飞书文档、腾讯文档等哪一个不是佼佼者,按着 Zed 锤。

如果是代码协同,显然 Git 才是主流。


Zed 太年轻,目前很基础的 markdown 预览都没有实现

VS Code 珠玉在前,用开源、插件化形成的护城河,一开放拥有大批拥趸

而 Zed 虽然同样有插件机制,但是能指望多少人贡献呢?

《重来》一书讲到,第一次创业失败的人,第二次创业失败概率一样大

Zed 的团队原先做过 Atom 编辑器,而现在 Atom 名存实亡

团队做 Atom 失败过,而卷土重来的 Zed,还不行

Zed 大概率能够圈住一部分用户,但不会成为领域的成功。


Zed 如何能破局呢?最重要的还是要顺势而为

想想 VS Code 当时,互联网的繁荣,带动开源领域的发展,Eclipses 老旧、Jetbrains 高昂收费,前端分工细化,急需轻量的编辑器,这些都是 VS Code 的势头。

而目前 Zed 最好的势头,显而易见,就是 AI 方向

而 Zed 目前显然支持不足,仅有 Copilot 代码不足和 Chat 能力

而这些 VS Code 不仅有,而且功能更加完善。

Zed 团队应该思考下了,要做一款怎么样的编辑器,适应目前的 AI 潮流,开创新的赛道。

如果继续安于微不足道的性能提升、垂直的协同,继续在垂直赛道内卷,那我祝你成功。

100% 压榨 GitHub Copilot 指南

· 5 min read

早在 OpenAI 推出 ChatGPT 之前,OpenAI 就已经和 GitHub 合作推出了 GitHub Copilot。

下文统一简称 Copilot

Copilot 当时在编程圈引起轰动。

当时激进的说法是:Copilot 将会取代程序员

三年之后,冷静下来,Copilot 并没有如愿替代程序员。

相反,它是一个提高效率的强大助手,掌握它,可以让你的编程效率提高数倍

Copilot 的价格

国内开发者对价格相对来说还是比较敏感的。

Copilot 官方有两种订阅方式,一个是个人版,一个是团队版

团队就不说了,有公司支持就不需要考虑这一茬。

个人版的价格有两种:

  1. 月度订阅,每月 10 美刀,人民币 72.37 元
  2. 年度订阅,每年 100 美刀,人民币 723.7 元

个人版会有 30 天的免费适用期,可以先试用一下。

GitHub 比较友好,支持国内的信用卡绑定支付,招商、广发、建行等都可以。

非官方渠道的话,比如 x 宝、uTools 插件等,可能会不稳定,但胜在价格便宜。

Copilot 全家桶

Copilot 使用很简单,在 VSCode/JetBrains 上安装对应的插件,然后登录 GitHub 账号即可。

👉 VSCode: https://marketplace.visualstudio.com/items?itemName=GitHub.copilot 👉 JetBrains: https://plugins.jetbrains.com/plugin/17718-github-copilot

安装后,输入代码时,Copilot 会自动提示代码,按 Tab 键即可补全。

JetBrains 的 Copilot 插件集成提供侧边栏 Chat 功能:

对于 VSCode 用户来说,如果要开启侧边栏 Chat 功能,需要额外安装 Copilot Chat 插件:

安装之后,侧边栏菜单会多了一个「Chat」项,和 ChatGPT 一样的聊天界面:

VSCode 确实会稍微麻烦一点,不过有个优势

就是新的 Copilot 的新功能都会优先上架 VSCode,比如 Copilot Voice

在 VSCode 装一下这个插件 👇 就能体验动嘴编程

虽然目前仅支持英文,但相信多语言很快会支持上

Speech to text in Visual Studio Code Chat

不过就算只支持英语,相信从小就开始学英语的中国开发者们,英语能力都非常好

Copilot 代码补全

除了 Copilot 自动触发外,我们也可以使用 Option + \ 去主动触发代码补全。

Window 为 Alt + \

虽然主动快捷键比较少用到,但网络波动时可以测试下 Copilot。

触发代码补全后,按下 Tab 接受会接受全部的代码,但有时候我们只需要一部补全代码

可以使用 Command + → 去一步步接受补全代码:

Windows 为 Ctrl + →

如果对当前的补全代码不满意,可以按 Option + ] 或者 Option + [ 去切换下一个或者上一个补全代码:

Windows 为 Alt + ] 或者 Alt + [

对于 VSCode 来说,按下 Command + I 代码中唤起 Copilot Editor:

Windows 为 Ctrl + I

Copilot Chat 使用

Copilot Chat 相当于为编辑器直接配置一个 GPT-4,可以方便快速地快速问答项目问题:

对于 JetBrains IDEs,需要在文件右键显示引用:

JetBrains IDEs 目前比较笨,需要手动右键显式指明哪个文件,并且引用整个文件

而 VSCode 不需要显示指明,它会自行判断是引用文件全部,还是仅引用鼠标选中的:

Copilot 的一些小幸福

再来说一下 Copilot 的一些痒点功能,比如直接生成 Commit Message:

生成 Git Commit 这点确实很方便,它会检测所有文件变更,并且生成合适的 Message。

另外是重命名变量,不过目前这个功能不太稳定,暂时略过。

Copilot CLI

Copilot CLI 现在已经全面开放 Copilot CLI,可以在命令行中使用 Copilot。

比如我们可以让 copilot 解释 sudo apt-get 这条命令的意思:

不过目前 CLI 还是挺笨的,不如使用 Warp 的 AI 功能,参考之前文章 👉

好看好用 + 免费 AI 能力的终端工具,推荐 Warp!

三个开发者,支撑一万亿的活跃使用量

· 2 min read

对于很多开发者来说,SQLite 一定不陌生。

也知道它很强,但是没想到居然这么强。

SQlite 目前超一万亿(1e121e12)的活跃使用量。

它主要用于:

平台包含SQLite
移动设备每一台安卓设备,每一台 iPhone 和 iOS 设备
计算机每一台 Mac,每一台 Windows10 机器
网络浏览器每一款 Firefox、Chrome 和 Safari网络浏览器
通讯应用每一个 Skype 实例
媒体应用每一个 iTunes 实例,每一个 Dropbox 客户端
财务软件每一款 TurboTax 和 QuickBooks
编程语言PHP 和 Python
家庭娱乐大多数电视机和机顶盒
汽车大多数汽车多媒体系统
其他无数百万其他应用程序

👉 表格来源于:https://www.sqlite.org/mostdeployed.html

而 SQLite 的全部开发者,也就三个人:

👉 图片来源于:https://www.sqlite.org/crew.html

  • D. Richard Hipp2000 年 5 月 29 日开始 SQLite 项目,并继续担任项目架构师。理查德在北卡罗来纳州夏洛特出生、生活和工作。他拥有佐治亚理工学院(电子工程硕士学位,1984 年)和杜克大学(博士学位,1992 年)学位,并且是咨询公司 Hwaci 的创始人。
  • Dan Kennedy :澳大利亚人,目前居住在东南亚。他拥有昆士兰大学计算机系统工程学位,曾在多个领域工作过,包括工业自动化、计算机图形和嵌入式软件开发。Dan 是主要贡献者自 2002 年起使用 SQLite。
  • Joe Mistachkin(发音为“miss-tash-kin”):软件工程师,也是 Tcl/Tk 的维护者之一。他也是 TclBridge 组件和 Eagle 脚本语言的作者。他自 1994 年以来一直在软件行业工作。

另外一件有趣的事情是,SQLite 不接受任何外来的代码贡献。

也就是说,SQLite 开源,但是并不开放代码贡献。

在 SQLite 的版权声明有提到:

👉 图片来源于:https://www.sqlite.org/copyright.html

很多时候,都不得不感慨软件的边际成本

一份代码,可以分发给十个人用,也可以给十亿个人使用

三个开发者,就支撑一万亿的活跃使用量。

SQLite 创造的价值,无与伦比,科技改变世界。

REFERENCES

好看好用 + 免费 AI 能力的终端工具,推荐 Warp

· 2 min read

最近 Warp 声名鹊起,很多人推荐这款终端工具,于是便下载体验一番。

经过几天的深度体验,结论是确实可以平替原先的 iTerm

Warp 颜值可以,看着舒服,满足了前端工程师花哨的需求。

多种主题可选:

Warp 直接提供命令提示功能,不需要像 iTerm 那么折腾:

最好用的,当然是 AI 能力,在右上角即可打开「Warp AI」,忘记命令了,可以直接 chat:

对于 Free 用户,每天可以有 20 次免费额度,这对于个人来说足够了:

Warp 还提供叫做「Warp Drive」,可以在团队中保存和分享命令:

目前 Warp 仅支持 Mac 和 Linux,Windows 也很快会支持:

如果觉得 Warp 不错,不妨一试: 👉 地址:https://app.warp.dev/referral/Q9ZVGQ

不花一分钱,如何在 Mac 上跑 Windows(M1/M2 版)

· 2 min read

这是在 MacOS M1 上体验最新 Windows11 的效果:

VMware Fusion,可以运行 Windows、Linux 系统,个人使用 licence 免费

安装流程见 👉 https://zhuanlan.zhihu.com/p/452412091

从申请 Fusion licence 到下载镜像,再到安装避坑

这篇文章讲非常详细


Fusion 对 Windows11 支持非常好,不支持其他版本

这里推荐 UTM,这是 UTM 运行 Windows7 的效果:

UTM 也是一款免费虚拟系统运行软件

这是官网 👉 https://mac.getutm.app

注意,UTM 从官网可直接下载

但 App Store 下载需要付费,如果想要赞助 UTM,可以选择付费下载


UTM 安装比较简单

先下载想要的镜像,镜像地址可从 MSDN 下载 👉 https://msdn.itellyou.cn

接着从 UTM 中下载对应配置文件 https://mac.getutm.app/gallery/

下载之后是一个 .utm 后缀的文件,然后打开该文件

打开之后需要改系统镜像路径

在右上角改成对应的下载好的系统镜像即可:

改后重新启动即可

拯救 VSCode,试试这款高颜值代码字体

· 2 min read

Monaspace,由 GitHub 开源的代码字体,包含 5 种变形字体的等宽代码字体家族,颜值 ++。

这 5 种字体分别是:

1️⃣ Radon 手写风格字体

2️⃣ Krypton 机械风格字体

3️⃣ Xenon 衬线风格字体

4️⃣ Argon 人文风格字体

5️⃣ Neon 现代风格字体

👉 项目地址:https://github.com/githubnext/monaspace?tab=readme-ov-file#coding-ligatures

下载方式

MacOS

使用 brew 安装:

brew tap homebrew/cask-fonts
brew install font-monaspace

Windows

下载该文件:https://github.com/githubnext/monaspace/tree/main/fonts/otf

拖到 C:\Windows\Fonts 中,点击安装

下载好后,如果是 VSCode 文件,可以在设置中找到 font-family,改为:'Monaspace Radon', monospace

如何利用 AI 做乘法,制作一款龙年贺卡小程序

· 5 min read

2022 年底 AIGC 的出现,让 2023 年成为通用人工智能元年

这是最好的时代,利用 AI,之前仅能存在幻想中的事物落地成现实。

只需要寥寥几句话,就可以描绘一张斑斓的画,真实而又丰富的画。

目前 AI 生图的大模型不多,大名鼎鼎的有 Midjourney,不过它闭源,并且国内用户使用不方便

Stable Diffusion,一款免费开源,而又强大的 AI 生图模型,正在成为 AI 绘画的宠儿。

比如这张庆祝新年的图片,正是出自 Stable Diffusion 之手:

Stable Diffusion 支持文生图(通过提示词文字生成图片)、图生图(通过垫图+提示词文字生成图片)、文生视频视频生成视频

如下是一个图生图的例子,通过一张手绘的垫图(左侧),生成一张真实的苹果图片(右侧):

还有比如前阵子抖音比较火的 AI 变换视频:

为了探索 Stable Diffusion 想象力的边际,在临近甲辰龙年之际,我们决定开发一款龙年贺卡小程序,效果图如下:

我们选择了一个叫做 Comfy UI 的开源框架,基于工作流的交互,让 Stable Diffusion 的编排和出图更加方便和快捷:

Comfy UI 官方介绍称之为:“最强大的 Stable Diffusion 的图形化操作界面

👉 官网链接: https://github.com/comfyanonymous/ComfyUI

虽然有 Comfy UI 加持,但在一开始,就碰壁了,无法生成文字,如下:

左边这张「龙年大吉」是我们输入给 Stable Diffusion 垫图,右边是图片是基于垫图和提示词生成的图片。

可以看到,文字根本是混乱的。

这个痛点强如 Midjourney 也无法解决,这是由于文字的特殊性

就说汉字,书体有篆书、隶书、楷书、行书、草书等,排列有从左往右、从右往左、从上往下等。

另外一种解决思路是,我们把文字也作为垫图之一,比如这张「龙年大吉」的图片:

生成结果:

这个方案似乎能走得通,但是很快又遇到麻烦,对于稍微复杂的字,生成效果就不行了,比如「甲辰臻祥」:

为了解决这个问题,加上时间的有限性,只能在产品层面做出改动,贺卡图片由模板 + 主体图片组成,模板提前预制,主体图片则由 AI 生成,不包含文字:

另外一个问题,就是涉及到人物,像手部、面部比较复杂的内容时,生成效果较差,如下小女孩的手部:

这个解决方案较多:

  1. 可以选择合适的 Stable Diffusion 模型
  2. 利用插件做手部、面部的修正
  3. 添加负面提示词(Negative Prompt)

有了如上的探索,我们终于开始我们的乘法之路。

首先是选定关于新年的元素(Element),比如龙、财神爷、灯笼、白鹤等元素。

其次是风格(Style),我们探索了十多种 Stable Diffusion 生成的风格:

Stable Diffusion 稳如老狗,各种风格都驾驭得住。

通过 Element×StyleElement \times Style,我们为每一个元素生成对应的风格图片。

乘法的力量是不言而喻的,在几周时间,我们为了贺卡小程序生成了上万张图片。

AIGC 之前,这绝对实现不了,能做的,只是加法,并且还需要专业的设计师。

假设一个设计师 5 分钟出一张图,一万张图片,不眠不休,至少要 34 天:

10000×5÷60÷24=34.722222222210000 \times 5 \div 60 \div 24 = 34.7222222222

这种人力成本、时间成本,一下子就被 AI 打下来了

目前 AI 还处于早期阶段,相信随着时间推移,AI 能力会更强,应用的场景会更广,拭目以待。

目前小程序也以及正式上线,名字很有年味,叫做「画年

操作简单,选择一个钟意的模板,一键生成:

如果不满意,可以调整配图 or 祝福语:

如果你有拜年贺卡需求,不妨体验一下这款小程序,目前免费使用。

ChatGPT 创始人 Sam 有效提高效率的秘诀

· 5 min read

这是一篇 ChatGPT 创始人山姆·奥特曼(Sam Altman)在 2018 年写的一篇博客,关于如何提升效率的有效建议。

你在做什么?

长期主义的本质是复利公式

复利是一个金融术语,但它也适合在个人的职业上。如果你每天都在产出,那么 50 年后你的复利获益将会是巨大的。提高自己的效率是一件非常重要的事情,从原来每天的 1% 提升到 10%,复利获益会变得更大。

复利公式见 👉 长期主义的本质是复利公式

提高效率的核心:做你自己喜欢的事情

在错误的方向上前进就是在倒退,花点时间去深入思考你自己喜欢做的事情,只有自己热爱的事情,才能真正地提高你的生产效率。

把自己不喜欢的事情委托给喜欢的人

做自己喜欢的事情才能让自己效率倍增,但面对自己不喜欢的事情,那么尽量不要去做它,比如采取委托、避免,或者其他方式。委托给别人的时候要注意,要委托给那些喜欢做这件事情的人,因为从“做你喜欢的事情可以提高效率”这一原则来说,应该也要让被委托者高效地完成这件事情。

坚持自己的坚持

这些年能够留给我深刻印象的是那些有强烈信念的人,这种人在大众中很罕见。如果你发现你总是附和别人,那可不是一件好事。坚持自己的坚持,有时候可能会出错,但当其他人都在迷茫的时候,你却做了正确而重要的事情,那么你将会变得更加勇敢非凡。

避免和消耗你的人在一起

要完成一件伟大的事情,应该努力和那些聪明、积极、高效和开朗的人在一起,他们不会随意贬低你的理想和抱负,并且他们可以推动你前进,也能给你带来某些启发。在你能力范围之内,避免和让你陷入精神内耗的人一起,否则代价将会是巨大的。

找对问题并解决它

我们基本上都身处红海行业,竞争激烈,我们要做的就是聪明而勤奋地工作,找到正确的问题,并正确地去解决它,这方面没有太多的捷径。

优先级

三个基本原则

  1. 完成重要的事情
  2. 别把时间浪费在 SB 事情上
  3. 做大量的清单

强烈推荐使用清单

清单写下每年、每月和每天的任务,清单可以让你聚焦当下的任务,并且能够让你处理多个任务(因为你的大脑释放出来,不需要记住那么多的任务)。

可以把清单写在纸上,方便添加和移除,开会的时候进行记录也不会冒犯别人。

经常回顾清单,及时修改或者删除任务,不做分类和排序这样耗费时间的事情,重要的事情就打个“⭐️”。

优先做产生势头的事情

优先做那些可以产生“势头”的事情,你做完一件,产生成就感,继续去做下一件事情

学会冷酷无情

“为了要完成我最重要的项目,我会变得坚韧残酷——我发现只要我真心想要做成某件事,并且付出足够的努力,通常都能实现。”

I am relentless about getting my most important projects done—I’ve found that if I really want something to happen and I push hard enough, it usually happens.

“我尝试变得残酷,对于无关紧要的事情说不,对于非关键任务会以最快速的方式实现。我可能做得过头了—比如,我几乎可以确定在回复邮件时,我的简洁到了无礼的程度。

“I try to be ruthless about saying no to stuff, and doing non-critical things in the quickest way possible. I probably take this too far—for example, I am almost sure I am terse to the point of rudeness when replying to emails.”

维护一个开放的社交网络

努力避免会议和研讨会,因为这会浪费大量的时间和精力。但是日程上,也要保持一定的开放性,去接触一些新的人和想法,维护一个开放的社交网络是很重要的。在研讨会上,虽然 90% 都是浪费时间,但 10% 有价值的东西可以弥补这样的损失

物理方面

这一方面围绕睡眠、锻炼和营养展开,有些老生常谈,并且 Sam 是一个极度素食主义,这里忽略,感兴趣可以见原文。

其他方面

舒适的办公环境

办公室安静不会被人打扰,拥有自然光和一台漂亮的办公桌,以及很多台 4K 显示屏。

一些小妙招

  • 写一些自定义的小工具,让它们去干那些烦人、琐碎重复的工作。

  • 提高打字速度

  • 学习快捷键

糟糕的大姨妈

像很多人一样,偶尔会有一两周丧失斗志,对任何事情都提不起劲

暂时没有什么好的解决方法,但是相信“大姨妈”总是会过去,过去之后又是精神抖擞,继续奋斗。

另外,在心情很差的时候,避免和其他人接触,这是一个良心建议。

重视爱人和家庭

不要为了效率去忽略你的爱人和家庭,你提高了效率,却失去了快乐

最后

Sam 的提高效率的观点值得参考,同时他也强调了:不要掉入提高效率陷阱中,提高效率不是目的,我们的目的是为了快速、质量地完成任务

程序员提高效率的 10 个方法

· 6 min read

1. 早上不要开会 📅

每个人一天是 24 小时,时间是均等的,但是时间的价值却不是均等的,早上 1 小时的价值是晚上的 4 倍。为什么这么说?

因为早晨是大脑的黄金时间,经过一晚上的睡眠,大脑经过整理、记录、休息,此时的状态是最饱满的,适合专注度高的工作,比如编程、学习外语等,如果把时间浪费在开会、刷手机等低专注度的事情上,那么就会白白浪费早上的价值。

2. 不要使用番茄钟 🍅

有时候在专心编程的时候,会产生“心流”,心流是一种高度专注的状态,当我们专注的状态被打破的时候,需要 15 分钟的时候才能重新进入状态。

有很多人推荐番茄钟工作法,设定 25 分钟倒计时,强制休息 5 分钟,之后再进入下一个番茄钟。本人在使用实际使用这种方法的时候,经常遇到的问题就是刚刚进入“心流”的专注状态,但番茄钟却响了,打破了专注,再次进入这种专注状态需要花费 15 分钟的时间。

好的替换方法是使用秒表,它跟番茄钟一样,把时间可视化,但却是正向计时,不会打破我们的“心流”,当我们编程专注度下降的时候中去查看秒表,确定自己的休息时间。

3. 休息时间不要玩手机 📱

大脑处理视觉信息需要动用 90% 的机能,并且闪烁的屏幕也会让大脑兴奋,这就是为什么明明休息了,但是重新回到工作的时候却还是感觉很疲惫的原因。

那么对于休息时间内,我们应该阻断视觉信息的输入,推荐:

  • 闭目养神 😪
  • 听音乐 🎶
  • 在办公室走动走动 🏃‍♂️
  • 和同事聊会天 💑
  • 扭扭脖子活动活动 💁‍♂️
  • 冥想 or 正念 🧘

4. 不要在工位上吃午饭 🥣

大脑经过一早上的编程劳累运转之后,此时的专注度已经下降 40%~50%,这个时候我们需要去重启我们的专注度,一个好的方法是外出就餐,外出就餐的好处有:

  • 促进血清素分泌:我们体内有一种叫做血清素的神经递质,它控制着我们的睡眠和清醒,外出就餐可以恢复我们的血清素,让我们整个人神经气爽:
    • 日光浴:外出的时候晒太阳可以促进血清素的分泌
    • 有节奏的运动:走路是一种有节奏的运动,同样可以促进血清素分泌
  • 激发场所神经元活性:场所神经元是掌控场所、空间的神经细胞,它存在于海马体中,外出就餐时场所的变化可以激发场所神经元的活性,进而促进海马体活跃,提高我们的记忆力
  • 激活乙酰胆碱:如果外出就餐去到新的餐馆、街道,尝试新的事物的话,可以激活我们体内的乙酰胆碱,它对于我们的“创作”和“灵感”起到非常大的作用。

5. 睡午觉 😴

现在科学已经研究表现,睡午觉是非常重要的一件事情,它可以:

  • 恢复我们的身体状态:26 分钟的午睡,可以让下午的工作效率提升 34%,专注力提升 54%。
  • 延长寿命:中午不睡午觉的人比中午睡午觉的人更容易扑街
  • 预防疾病:降低老年痴呆、癌症、心血管疾病、肥胖症、糖尿病、抑郁症等

睡午觉好处多多,但也要适当,15 分钟到 30 分钟的睡眠最佳,超过的话反而有害。

6. 下午上班前运动一下 🚴

下午 2 点到 4 点是人清醒度最低的时候,10 分钟的运动可以让我们的身体重新清醒,提高专注度,程序员的工作岗位和场所如果有限,推荐:

  • 1️⃣ 深蹲
  • 2️⃣ 俯卧撑
  • 3️⃣ 胯下击掌
  • 4️⃣ 爬楼梯(不要下楼梯,下楼梯比较伤膝盖,可以向上爬到顶楼,再坐电梯下来)

7. 2 分钟解决和 30 秒决断 🖖

⚒️ 2 分钟解决是指遇到在 2 分钟内可以完成的事情,我们趁热打铁把它完成。这是一个解决拖延的小技巧,作为一个程序员,经常会遇到各种各样的突发问题,对于一些问题,我们没办法很好的决策要不要立即完成, 2 分钟解决就是一个很好的辅助决策的办法。

💣 30 秒决断是指对于日常的事情,我们只需要用 30 秒去做决策就好了,这源于一个“快棋理论”,研究人员让一个著名棋手去观察一盘棋局,然后分别给他 30 秒和 1 小时去决定下一步,最后发现 30 秒和 1 小时做出的决定中,有 90% 都是一致的。

8. 不要加班,充足睡眠 💤

作为程序员,我们可能经常加班到 9 点,到了宿舍就 10 点半,洗漱上床就 12 点了,再玩会儿手机就可以到凌晨 2、3 点。

压缩睡眠时间,大脑就得不到有效的休息,第二天的专注度就会降低,工作效率也会降低,这就是一个恶性循环。

想想我们在白天工作的时候,其实有很多时间都是被无效浪费的,如果我们给自己强制设定下班时间,创新、改变工作方式,高效率、高质量、高密度的完成工作,那是否就可以减少加班,让我们有更多的自由时间去学习新的知识技术,进而又提高我们的工作效率,形成一个正向循环。

9. 睡前 2 小时 🛌

  1. 睡前两小时不能做的事情:
    • 🍲 吃东西:空腹的时候会促进生长激素,生长激素可以提高血糖,消除疲劳,但如果吃东西把血糖提高了,这时候生长激素就停止分泌了
    • 🥃 喝酒
    • ⛹️ 剧烈运动
    • 💦 洗澡水过高
    • 🎮 视觉娱乐(打游戏,看电影等)
    • 📺 闪亮的东西(看手机,看电脑,看电视)
    • 💡 在灯光过于明亮的地方
  2. 适合做的事情
    • 📖 读书
    • 🎶 听音乐
    • 🎨 非视觉娱乐
    • 🧘‍♂️ 使身体放松的轻微运动

10. 周末不用刻意补觉 🚫

很多人以周为单位进行休息,周一到周五压缩睡眠,周末再补觉,周六日一觉睡到下午 12 点,但这与工作日的睡眠节奏相冲突,造成的后果就是星期一的早上起床感的特别的厌倦、焦躁。

其实周末并不需要补觉,人体有一个以天为单位的生物钟,打破当前的生物钟周期,就会影响到下一个生物钟周期,要调节回来也需要花费一定时间。

我们应该要以天为单位进行休息,早睡早起,保持每天的专注度。

参考

以上大部分来源于书籍 《为什么精英都是时间控》,作者桦泽紫苑,是一个脑神经专家。