网上冲浪指南

2019 / 10
在 Node.js 中加载 ES 模块

众所周知,JS 的语言特性总是更新得比解释器要快,为了在 Node.js 中能够导入 esm 格式的模块,我们需要使用一些奇怪的手段,例如,hook require 函数,甚至我们可以使用 webpack 这样的打包工具。经过一番体验过后,我的选择是……

2019 / 09
在 Firefox 浏览器中模拟网络故障

在 Chrome 开发者工具中,可以使用 Network 工具下的 Offline throtting 来模拟离线的状态,这对测试网页在离线状态下的工作情况非常有帮助,但是 Firefox 却没有这样的功能 反倒是提供了一堆几乎用不上的低网速模拟选项

2019 / 08
基于 Moq 的 IoC 容器 —— AutoMocker

Moq.AutoMocker 是一款基于 Moq 实现的 IoC 容器,它可以用来全自动的使用 Moq 来创建待测试的服务的依赖。

2019 / 07
为什么我使用 Linux 开发

当我对 Linux 的印象似乎还停留在黑乎乎的命令行界面上的时候,我身边的一些朋友告诉我或者建议我使用 Linux 时,我会一脸惊讶的问他,那个怎么用(来开发或者日常使用)?

2019 / 06
使用 rsync 复制 Linux 工作环境

Linux 的影分身之术

学习 Git Rebase

rebase 也算是我比较常用的一个指令了,但是很长时间以来,对这个指令的认识还是不够深刻,于是就找了个时间认真地读了一下 git rebase 的文档。

可控函数

可控函数(Controllable Function),是指那种可以通过改变函数的参数或者简单的修改函数在执行过程中的外部依赖的而产生确定结果的一类函数,这是我根据纯函数的概念推广出来的一个新的名词(大概是新的吧?)。

Arch Linux 启用 MTU 探测

最近在家里经常遇到 ssh 超时的问题,一开始也没太当回事,感觉是网络不稳定导致的,但是后来慢慢的发现这种超时问题只会出现在跟 ssh 相关的程序中,例如 git、ssh。这成功的引起了我的注意,于是我开始尝试着去排查。

2019 / 05
DIY:从零开始写一个 SQL 构建器

我决定了自己来撸一个 SQL 构建器,看起来应该也不是什么困难的事 Flag

我的第一个 pre-commit Hook

人生有很多第一次,比如写出来的第一个 pre-commit hook

2019 / 04
修改 DarkTable 界面语言

如何让 DarkTable 的界面显示简体中文。

2019 / 03
Safari 无法刷新缓存

Safari 浏览器并不能手动强制刷新缓存

在 MacBook Pro 2015 款上安装 Manjaro

最近一直在折腾公司给配的 MacBook Pro 2015 款,费了很大的劲终于装好了我心爱的 Manjaro,在这里稍微记录一下安装要点。

2019 / 01
F# 4.6 预览版正式公布

1月24日,随着 Visual Studio 2019 一同发布的还有 F# 4.6,更新虽小,但惊喜很大

如何对付运行时可能为 null 的 Record Type

尽管 F# 不允许使用 Record 类型表达 null 的含义,但在运行时 Record 仍然可能为 null,如何处理这样的问题?

使用 Immutable Subject 来驱动 Angular 应用

在一个不可变的世界中订阅变化

2018 / 12
Angular Forms - 自定义 ngModel 绑定值的方式

ControlValueAccessor 接口是 Angular Forms API 与 DOM 之间的桥梁,通过提供不同的 ControlValueAccessor,我们就可以使用统一的 Angular Forms API 来操作不同的 HTML 表单元素。

2018 / 10
不要使用 JWT 进行会话管理

最近我发现越来越多的人推荐使用 JWT 来在 Web 应用中管理会话(Session),这是一个非常非常糟糕的主意,在这篇文章中我会详细地解释为什么“不要使用 JWT 进行会话管理”。

2018 / 09
C# 函数式编程:LINQ

使用 LINQ 来对 IEnumerable<T> 之外的 Monad 进行运算。

一分钟快速上手 F# 语法

这是对 F# 语法的一个简单的介绍,来帮助完全不会 F# 的新手阅读 F# 代码。时间紧迫,所以我在这里没法详细的介绍,不过本文的内容应该足够让你拥有理解这个系列中出现的代码样例的要点。