带你开发和调试 VS Code 源码

上文 给大家介绍了如何在本地从源码启动 VS Code,笔者在更换电脑后重新安装依赖时又遇到了文中插曲里提到的问题,VS Code 依赖的很多资源都在 Github 上,而且有好几个模块都需要下载源码重新编译,安装依赖失败的概率还是略大的。如果依赖的包构建失败,不用担心,等到启动的时候它会提示详细错误:[92850:1031/221458.947969:INFO:CONSOLE(17)] Error: The module '~/vscode/node_modules/spd

Github 的 Go to Definition 功能实现剖析

Github 的源码阅读已经支持 Go to Definition 了,目前还在 beta 阶段,且需要用户手动开启,仔细研究了下它的实现方式,从逻辑上看是存在 bug 的,整体策略大概是:仓库进入 Navigation 模式(initialization),Github Server 端对该版本(取 commit hash)的源码进行词法分析,保存关键 token 信息,并记录关键 token 的初始定义位置和被引用的位置;用户进入网页,若 initialization 未

Google 的 Code Review 实践经验

Google 的 Code Review 目标是不断提高 codebase 的质量,同时要求审阅者在代码的高质量和业务的推进之间做好权衡,两边的极端都不要走,并给出了一些 实战经验,下面我总结了下:1. 设计新增的几块代码是否有意义?代码的结构是否合理,应该放在 codebase 里还是抽离成组件?对系统的持续集成是否会造成印象?等等。2. 功能站在用户的角度和开发者的角度,从功能和代码块上去审阅功能的合理性,除此之外,还要考虑单从代码上看不到的问题,比如并发问题、UI 交互

换一种视角理解 awk 命令

awk 是使用频度非常高的一个超级有用的命令,如果你做过应用的线上运维,想必已经是十分熟悉了,但是对大多数人来说,它仍然是个陌生的东西,即便看过很多次文档,依然记不住它的模样,还是得翻文档、查 Google。下面我就带着你,换一种视角重新理解 awk。它是什么?我觉得它就是一个表单筛选工具,往下看。一个例子下面是我截取 cat /etc/passwd 的部分内容,root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/s

Git 约定式提交规范实践

约定式提交规范 提供了一个轻量级的提交历史编写规则,它的内容十分简单:<type>[optional scope]: <description>[optional body][optional footer(s)]举个简单的例子:feat(config): 允许 config 对象直接从其他 config 继承BREAKING CHANGE: 在 config 对象中增加 `extends` 字段,用于从其他继承 configclose issue #

本博客的配置和发布

分享下我个人博客(https://www.barretlee.com)的配置和发布:1. 域名在 DNSPod 上配置的域名,默认解析到 coding pages,国外解析到 github pages,DNSPod 支持 D 监控,当域名不可用时会邮件警报。coding 支持绑定多个域名,也支持给所有绑定的域名自动配置证书,github 只能绑定一个域名,这就会导致 www.barretlee.com 和 barretlee.com 只能有一个是 https,比较坑,貌似 G

让 VSCode 在本地 Run 起来

Visual Studio Code 是微软推出的一款轻量级编辑器,与它一起在市场争锋的相似软件还有 Atom 和 Sublime Text,面世第二年的它只占据 7% 左右的市场,后来在短短三年时间雄踞了半壁江山,不可谓不哇塞。发育如此强势的软件,背后到底是如何设计的,未来一段时间,我将带着你一点一点拨开她的面纱,再撩开她的裙摆。下载源码Visual Studio Code 简称 VSCode,需要注意的是,平时我们使用的 VSCode 那是产品,而下面我们要介绍的是源码,

VSCode 是怎么运行起来的?

之前有基于 VSCode 做二次开发的经验,约摸全投入持续了 5 个多月,开发了一个 Editor,算是超级魔改吧,虽然保留了 VSCode 的样子,但是整个板块都有比较大的调整,新增了 Webview 预览面板、Devtool 调试工具、顶部控制区、插件市场等等。当时由于需求的实现不需要了解全部的 VSCode 源码,但是也把大部分的源码啃得差不多了,包括:整个项目的工程部分,包括项目结构、软件构建、插件构建、持续集成等等Workbench 部分的所有逻辑,整个窗体 UI

两个月减 10kg,聊聊这件事

还记得刚进大学的时候也就 120 斤,那会儿还不到 18 岁,身体处于自然增长阶段,可能与生活不规律有点关系吧,四年下来,增重也有 25 斤,一米七四的个头,倒也显得还好,不胖不瘦。毕业的随后四年里,依旧保持着极度不良好的生活作息和饮食习惯,体重一路飙升到 167 斤,肚子和脸蛋都开始圆了起来,因此也有了我常年使用的圆咕噜嘟的头像。说起 我的头像,大概是三年多前,淘宝绘画兴趣小组的一次绘画课程中,我作为模特,同事亚城帮我绘制的,其实是个半成品,很多细节还没有处理完(那堂课只教

破局 - 纯粹的执行者

不管是大公司还是小公司,你都可以看见这类主管:他不断地从外面接活儿进来,然后排好时间、分好任务指派给你。在这样的主管下,你的角色更像是一个单纯的执行者,稍微好一点的情况是,他会给你安排大块的事情,糟糕一点的情况是,他指派给你的任务特别离散,不聚焦,让你东搞一下西搞一下。明白自己处境的人,会忧虑,不明白的人,还觉得自己很充实。如果你恰好有这样的感觉,我可以告诉你几个破局的思路。1、不要把自己当成执行者很大一部分原因还是因为,你自己把自己当成了执行者,你不愿意去分析需求或者不懂得