Notion 编辑器是怎么实现的?

Notion编辑器

本文写于 2020 年 12 月,当你读到本文时文中提到的部分 Notion 内容可能已经过时,望读者知晓 Notion 是一款 All in one 的协作工具,集个人笔记,知识管理以及项目管理于一身。作为一个笔记软件爱好者自然早闻大名,早在两年前就开始使用 Notion…

使用 Telegram Bot + Beancount 记账

BeancountTelegramBot

由于最近听的捕蛇者说的这期播客节目,去了解了一下经常听到但是从来没去了解过的 Beancount,看了几篇网上的博文 初步使用了几天。Beancount 的记账模式我非常的喜欢,但是美中不足的是基于文本很难能够进行随手记录。 发现了一款需要注册的 Beancount…

二〇二〇年终总结

年终总结

不知道是因为疫情的关系还是因为年龄增长的关系,感觉这一年过得非常的快。这一年对我来说有几件事情比较值得提一提,跳槽回到了广东、重新开始捡起篮球、开始进行知识管理...

写给 VS Code 用户的 Vim 入坑指南

VimVS Code

现实当中使用 Vim 来写前端的人是少之又少,大多数人基本上都是使用 VSCode。但作为「编辑器之神」,不管使不使用 Vim 进行编码,学习 Vim 的编辑模式都是有好处的。 本文会从最基本的使用和配置开始介绍作为前端工程师怎么从零到一到开始使用 Vim…

使用 TiddlyWiki 进行个人知识管理

TiddlyWikiPKM

近一段时间在研究个人知识管理,期望能够找到一个好用并且能够长期使用的「非线性笔记」软件来进行管理。近期比较火的 Roam Research 与 Notion 都尝试过,但可惜的是两者都有些地方我不是特别满意。最后我选择了 TiddlyWiki…

用 RIME 定制输入法

RimeIME

一直以来我都希望能够有一款输入法能够让我高度的进行自定义,就像 Vim 一样能通过配置文件来进行配置。发现 Rime 正好符合我的需求,加上最近在学习双拼,便折腾了起来。 什么是 RIME? RIME…

RE: 2019 年终总结

年终总结

2019 年对于我来说是平平淡淡的一年,没有什么非常精彩的地方,也没有做成什么了不起的事情。

为网站添加 dark mode 支持

CSS

本文主要介绍如何通过 prefers-color-scheme 来为网站添加 dark mode 支持,另外还赠送一些 prefers-color-scheme 在 tailwind.css 与 React 中的实践。 那么 prefers-color-scheme…

如何实现一个 Babel Macros

Babel

通过 babel 插件,我们很容易的就在编译时将某些代码转换成其他代码以实现某些优化。例如 babel-plugin-lodash 可以帮我们将直接 import 的 lodash 替换成能够进行 tree shaking 的代码;通过 babel-plugin-preval…

关于 tapable 你需要知道这些

Webpack

在阅读 webpack 前如果不了解 tapable 的话,很有可能会看得云里雾里,那么 tapable 到底是什么,又有什么用呢?本文主要介绍 tapable 的使用以及相关实现,通过学习 tapable 能够进一步的了解 webpack…

你可能不知道的 Node.js util 模块

Node.js

作为 Node.js 的内置模块,其实 util 模块中包含了许多实用的工具函数。这篇文章主要介绍其中的两类函数:函数转换类(callbackify/promisify/deprecate)与调试辅助类(debuglog/inspect)。 函数转换 callbackify…

如何使用 Hammerspoon 实现剪贴板历史

hammerspoonlua

写在前面 Hammerspoon 是一款 macOS 下的自动化工具,软件本身几乎没有什么功能。所有的功能都需要以 lua 脚本的形式编写,放置在 ~/.hammerspoon 下。Hammerspoon 会通过 lua 脚本直接调用 macOS 本地提供的 API…

从 @babel/register 到 node.js require()

Node.jsBabel

通常我们会用 babel 来将浏览器未兼容的新语法编译为兼容的代码,以便在旧浏览器或者环境下运行。 除了编译运行外,babel 还提供了 @babel/register 来即时编译运行。 如何使用 @babel/register 使用 @babel/register…

2018 年终总结

年终总结

一眨眼 8102 年都快结束了,年终总结也拖了好几天。今天晚上终于可以静下心来写一写了。

React 初始化渲染

React

本文将阅读 React 初始化渲染相关的代码,并实现一个简单的将 JSX 渲染到页面的功能。(不包括组件生命周期与事件处理相关部分) 源码解析:渲染过程 JSX 解析 我们知道在 React 组件render() 返回的是 JSX,而 JSX 将会被 babel 转换。JSX…

开始使用 Neovim

Vim

很久之前就听说过 Neovim,但一直没有怎么了解过。昨天下午折腾了一下,彻底转投 Neovim 了。 虽然说这两货的差别目前还不是很大,但是 Neovim 实现了嵌入式终端模拟器,Excited! 各种 REPL 插件统统都可以卸载了! 迁移配置文件 Neovim…

Vim 折腾记

Vim

昨天在微信读书上面看到了池建强的《MacTalk 人生元编程》,然后花了差不多一天看完,其中有篇有关于 Vim 的文章提起了我对这个编辑器的再一次兴趣。

从零开始制作 Hexo 主题

Hexo

写在前面 本文将会从零开始开发一个简单的博客主题。样式主要参考 Hexo theme 中的 Noise 主题。 开始之前你需要了解: 模板引擎 CSS预处理器 Hexo 文档 本文使用的模板引擎为 ejs,使用的 CSS 预处理器为 stylus。这也是 hexo…

如何减少浏览器回流

JavaScriptBrowser

什么是浏览器回流 浏览器在显示网页时,需要计算每一个元素应该放置的位置,这个计算过程就称为浏览器回流(browser reflow)。回流会重新计算页面的布局,在回流中会重新计算元素的尺寸与位置,并且也会触发对子元素的回流。 触发浏览器回流的操作: 在 DOM…

从 optimizeCb 说起

JavaScriptUnderscore

optimizeCb 在 underscore 中的内部函数 optimizeCb,顾名思义就是 optimize callback,即优化回调函数。 optimizeCb: 它是这样处理回调的,当回调函数指定上下文环境时,根据 argCount 来分情况使用 call…