如何写一个 things3 client

Things3 是一款苹果生态内的任务管理软件,是一家德国公司做的,非常好用。我前后尝试了众多任务管理软件,最终选定 things3,以后有机会会写文章介绍我是如何用 things3 来管理我的日常任务。 本文主要介绍欧神写的 tli 工具来学习如何写一个定制的通过邮件和 things3 沟通的工具。很多软件都有类似的邮件功能,例如给绑……

阅读全文

几个小设置让 mac 更好用

今天在 youtube 上看到一个视频,讲新 mac 到手后一定要做的几个设置,有几个之前我不知道的小设置,非常好用,看完马上就用上了。 一些我常见的就不列了,比如说设置点按、三指拖拽,不知道的可以去搜索了解,属于是基操。 finder 设置 搜索时,默认搜索当前文件夹里的内容而不是整个 mac。整个 mac 搜索起来会很慢,即使……

阅读全文

深度阅读之《100 Go Mistakes and How to Avoid Them》

继《Mastering Go》 和 《Concurrency in Go》之后,这是我精读的第 3 本 Go 主题的英文书了。全书 390+ 页,从开始读到全部读完,快 2 个月了,😓。 前不久曹大连接发了几个关于《100 mistakes》的视频,多猜他大都是看看标题,看看代码,就知道要说什么了,并且很快就跳过去,速……

阅读全文

Go map 竟然也会发生内存泄漏?

Go 程序运行时,有些场景下会导致进程进入某个“高点”,然后就再也下不来了。 比如,多年前曹大写过的一篇文章讲过,在做活动时线上涌入的大流量把 goroutine 数抬升了不少,流量恢复之后 goroutine 数也没降下来,导致 GC 的压力升高,总体的 CPU 消耗也较平时上升了 2 个点左右。 有一个 issue 讨论为什么 allgs(runtime……

阅读全文

你说的下游是 upstream 吧?

工作中,有一些术语比较容易混淆,聊半天,最后发现双方对术语的理解不一致。这个时候用英文原本的表达或者换一种方式来表述能让沟通更顺畅。 像我们经常说的『上下游』便是经常发生混淆的一对名词。 以前,我经常说『梳理一下我们依赖的下游』,后来发现这种说法是错误的。正确的是:梳理一下我们依赖的……

阅读全文

将博客迁移到了 Cloudflare Pages

上个月把博客从 hexo 迁移到了 hugo,博客数据、发布流程全部托管到 github。之后把之前写的一篇《那些年曹大写的文章》搬了过来,其他文章暂时下线了。 上周在折腾博客 css 的时候,aofei 说不如迁移到 Cloudflare,还能全球 cdn 加速。于是又动手迁移到 Cloudflare Pages,顺便又修改了一些 cs……

阅读全文

那些年曹大写的文章

某天晚上看到曹大在群里指点江山,折服。感叹为何曹大如此渊博,遂决定从头到尾研读完他所有的博文。 前后共花了一个月的时间,今天终于读完了(2020-11-24~2020-12-26),总共 118 篇。从 15 年 10 月 31 日开始的第一篇,到今天,总共写了 5 年多的时间。基本上每半个月产出一篇,非常稳定……

阅读全文

最重要的是内容

最近,看曹大依然在坚持固定频率发新的文章,非常佩服。今年是我写博客的第四年,因为各种原因,上半年基本没有发表新东西,非常惭愧。养成一个好习惯很难,破坏却很容易。 这次将博客改用 hugo 搭建。最早 qcrao.com 是用 hexo 在 mac 渲染,然后将 public 推到 github 上的 qcrao.github.io。坏外是需要在 mac 上安装一堆前……

阅读全文

写 Go 时如何优雅地查文档

某天写代码时发现自己对 IDE 的依赖非常深,如果没了 Goland 就不会写代码了,心里为之一惊。 Goland 的自动补全功能已经是必需品了,只要打出相关的几个字符,不管是变量名还是函数调用,都能帮你直接补全。我们只需要往相应的位置填东西就行了。 进而又想到,当补全功能缺失或者暂时失灵的情况下,该如何快速地查出某……

阅读全文

曹大带我学 Go(11)—— 从 map 的 extra 字段谈起

熟悉 map 结构体的读者应该知道,hmap 由很多 bmap(bucket) 构成,每个 bmap 都保存了 8 个 key/value 对: 有时落在同一个 bmap 中的 key/value 太多了,超过了 8 个,就会由溢出 bmap 来承接,即 overflow bmap(后面我们叫它 bucket)。溢出的 bucket 和原来的 bucket 形成一个“拉链”。 对于这些 overflow 的 bucket,在 hmap 结构体和 bmap 结构……

阅读全文