惊鸿一般短暂, 像夏花一样绚烂

DNSSEC 技术详解

DNS 系统最早在 1983 年的 RFC 882 就有定义与技术实现了;作为最重要的互联网基础设施之一,我们必要对它进行足够的了解;而在如今国内复杂的网络环境下,原始的 DNS 协议也经常无法正常工作,为了保证 DNS 查询结果的可信,又诞生了 DNSSEC、DNSCrypt、DoT 甚至 DoH 这类的技术。

本文将主要介绍和讨论 DNSSEC 的工作原理、复习一些较为容易混淆的 DNS 中的概念、最后将会介绍一些 DNS 新技术。

您可能需要有对传统 DNS 协议的工作流程有基本的了解;以及对 TCP/IP 协议、数字签名技术有一个大致的了解(不用十分深入)作为知识基础。

DNSSEC 技术详解

Vercel Serverless 与 Flask 体验

前段时间有个小应用要部署上线,倒也不复杂:接口收到前端请求之后返回一张动态生成的图片就行。

由于 没有服务器只能白嫖 想要体验世界上最流行、先进的 Serverless 函数计算,正好博客部署在 Vercel,所以看了看 Vercel 的官方 Documentation,发现他们也可以部署一些函数计算,支持的语言有:

  • Node.js
  • Go
  • Python
  • Ruby

我对 Python 比较熟悉,于是就顺手用 Flask 写了一个服务;部署时候遇到了一些坑,在这里记录一下。

Vercel Serverless 与 Flask 体验

ucos 原理 - 任务调度分析

上面说过了 uCOS-II 通过不断的在任务之间切换实现任务调度,这一个小节我们来分析 uCOS-II 到底是如何调度任务的。

首先我们要清楚,既然用户给定的任务是一个个无穷循环,所以操作系统肯定不能指望任务自己放弃 CPU 的使用权,让给其他的函数去执行;相反的,当一个任务执行一段时间之后,我们的 OS 就需要“强行的”从它手里拿到处理器的时间,这样的操作系统被称为 抢占式 的,相反那种不同任务之间 Co-operate 的,就叫做 非抢占式 的。

可我们的 OS 是怎么做到 “抢占” 的动作呢?

ucos 原理 - 任务调度分析

uCOS 原理 - 任务概览

uCOS-II 中的一个重要组成部分就是 任务,因为大多数嵌入式设备的处理器能力有限,所以大多的 RTOS 都采用了多进程/单线程模型;这就意味着 OS 需要通过在不同的任务之间切换,而如何创建、管理任务就成为了一个重要的组成部分。

任务基础

uCOS-II 的任务通常就是一个无限的循环,就像我们在裸机编程时使用的循环一样:

1
2
3
4
5
void task(void* pdata) {
while (true) {
/* Working code */
}
}

那么问题就来了,既然每个任务都是无穷循环,如何从一个任务跳转到另一个任务中呢?

uCOS 原理 - 任务概览

uCOS 原理 - 临界段代码保护

在 Cortex 内核中有着大量的中断向量,当中断被设置并且发生的时候,系统就会从 Thread 模式切换至 Handler 模式;而 NVIC 则保证了中断可嵌套。

但是有的时候我们希望某些代码的执行过程中不要被中断,这些代码被称为临界段代码 Critical Section;那么,在 uCOS 中,系统又是如何做到的呢?

uCOS 原理 - 临界段代码保护

通过 Netatalk 在 ACRH17 上使用 Time Machine

因为家里的老 2.4GHz 路由器和蓝牙的冲突太严重了,每次使用 AirPods Pro 听歌,我的 MacBook Pro 就断流严重;所以决定买一个新的 5GHz 路由,当时想到的需求有:

  1. 家里只有 3 台设备,面积也很小,所以不需要太强的信号功率以及天线数量
  2. 能够在官方渠道买到 - 说这个是因为有朋友推荐什么 K2?
  3. 能够使用第三方固件,方便给家里人一起自由使用网络
  4. 支持 USB 口的外接存储,能够配合第三方固件使用 Time Machine 进行备份

在朋友的推荐之下选择了这款 ACRH17 路由。

买来新的路由器之后第一件事就是刷了 Merlin 固件,前三点都很好实现;但是第三方固件刷入之后官方的 Time Machine 支持却消失了。

通过 Netatalk 在 ACRH17 上使用 Time Machine

从 Wordpress 到 Hexo 进行数据迁移

之前博客部署在阿里云的轻量服务器上,因为不想在国内备案的原因,选择了香港地区的服务器,在外面套了一层 Cloudflare 的 CDN,这样可以给站点加上小绿锁,也不用自己担心证书的问题。

之前的博客访问起来速度只能说一般般,毕竟离开大陆的服务器少有访问速度快的,Cloudflare 的 Anycast 在国内经常被绕到美国,这也是没办法的,国内的网络环境太复杂了。

但这些都不是迁移博客的原因,前一段时间在更新了 Wordpress 之后,貌似它们又搞了一个什么新的编辑器?在那之前我还可以把在本地写好的 Markdown 进行少量修改的复制过去发布文章,这次之后就完全不能了;而且对 LaTex 的支持还必须启用插件。这对只想安安静静写两篇帖子的我来说简直是太难过了 —— 折腾来折腾去,过一段时间还得升级,升级之后你也不知道会发生什么。

那就迁移吧,Hexo 是个不错的选择;毕竟折腾一次,以后轻松。

从 Wordpress 到 Hexo 进行数据迁移