Skip to main content

Time-based one-time password (TOTP)

· 11 min read
yinpo
Owner and Maintainer of here

全称 Time-Based One-Time Password 即基于时间的一次性密码,TOTP 属于 OTP 的一种实现方式,基于当前时间与密钥计算的动态密码,通常每 30s 刷新一次。

生成 TOTP 无需网络,前提是当前时间是准确的。服务方与本地生成的 TOTP 相同,则说明校验通过。

在 Electron 项目中调用原生API

· 2 min read
yinpo
Owner and Maintainer of here

本质上 Electron 调用原生 API 的逻辑就是 Node 环境对原生 API 的调用,与 Electron 没有根本上的联系,Electron 只是提供了运行 Nodejs 的环境,并没有引入特殊机制。

所以问题可以简化为如何在 Nodejs 环境中调用原生 API。这里探索两种方案:

  1. WebAssembly
  2. Node Addons

LaTeX 数学公式语法

· 4 min read
yinpo
Owner and Maintainer of here

通常 markdown 中显示数学符号使用的是 LaTeX 语言,渲染工具主要是 KaTeX 和 MathJax。

  • LaTeX 是排版系统和语言规范,支持复杂的数学公式、图表、参考文献等,LaTeX 是数学公式语法的基础。
  • KaTeX 是一个 JavaScript 的显示引擎,用于在网页上渲染 LaTeX 数学公式,是一个快速、高效的库。
  • MathJax 是一个 JavaScript 的显示引擎,用于在网页上高质量地呈现 LaTeX、MathML 和 AsciiMath 数学公式。

这里记录一下 LaTeX 系统中常见的数学符号语法。

浏览器插件 Focus

· 9 min read
yinpo
Owner and Maintainer of here

摸鱼的时候,无意间的看到了 chrome developer 的文档,其中有一个东西特别吸引我:

DeclarativeNetRequest:Intercept, block, or modify network requests.

DeclarativeNetRequest API

因为最近下班之后,有件事总是困扰我。下班我会在地铁上安排好今晚任务,例如争取通关《王国之泪》,但现实往往是被 B 站吸引一直在刷 lol、cod 的视频,直到夜深,一天的大好时光就结束了,switch 充满电又蒙上灰。

所以我想要是能给它屏蔽就好了,这样能提醒我去做自己该做的事,不被多巴胺牵着鼻子。

直到看到了这个 api,我觉得这是一个尝试的契机。

C++ 如何计算 CRC 编码

· 7 min read
yinpo
Owner and Maintainer of here

费了好大的功夫,在 WIKI 上磕磕绊绊的大概看懂了什么是 CRC

所以实现的步骤无非就是按字节逐个进行异或计算,例如 CRC-8 就是 CRC 位宽为 8,生成多项式编码为 9 位,就是按照 9 位逐个计算

那么如果提前提前准备一个涵盖所有编码结果的预算表,就能快速的遍历,而这个预算表的长度则为 2^10 - 1

CRC 原理

· 13 min read
yinpo
Owner and Maintainer of here

CRC 是一种用于检测数据传输错误或数据损坏的算法。

CRC-n-XX 其中 n 表示 CRC 的位宽,XX 表示 CRC 的标准名。例如:

  1. CRC-64-ECMA-182: 表示 ECMA-182 标准的 64 位 CRC。
  2. CRC-64-ISO: 表示 ISO 3309 (HDLC) 标准的 64 位 CRC。