记录一次  官方召回计划的维修

还记得几年前苹果推出一项召回计划

所有使用了蝶式键盘的 MacBook 出现键盘问题都可以免费换键盘,

当时买电脑的时候买了 Apple Care+

本想换块新电池,结果死活卡在 80% - 82%,

当时店员就跟我说让我留意键盘问题,保修时间是4年

阅读更多

SwiftUI 中的 Conditional Scene

在 SwiftUI 中,有时需要对新的 API 做隔离来保证兼容老的系统。

在 View 中很好解决,但是在 Scene 中,你可能会看到这样的错误提示。

Closure containing control flow statement cannot be used with result builder ‘SceneBuilder’

2023.2.17更新

在 Xcode 13.4 beta 中,SceneBuilder 支持了 buildExpressionbuildLimitedAvailabilitybuildOptional

阅读更多

Google Chromium Encryption Structure

来源:GitHub,仅供学习使用。

Google Chrome stores browser cookies in an SQLite database. The database has two tables, meta containing format and version metadata, and cookies with the contents of the cookies. The cookies table uses this schema:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- To reproduce: sqlite path/to/Cookies .schema
CREATE TABLE cookies (
creation_utc INTEGER NOT NULL, -- microseconds since epoch
host_key TEXT NOT NULL, -- domain
name TEXT NOT NULL,
value TEXT NOT NULL,
path TEXT NOT NULL,
expires_utc INTEGER NOT NULL, -- microseconds since epoch
is_secure INTEGER NOT NULL,
is_httponly INTEGER NOT NULL,
last_access_utc INTEGER NOT NULL,
has_expires INTEGER NOT NULL DEFAULT 1,
is_persistent INTEGER NOT NULL DEFAULT 1,
priority INTEGER NOT NULL DEFAULT 1,
encrypted_value BLOB DEFAULT '',
samesite INTEGER NOT NULL DEFAULT -1,
source_scheme INTEGER NOT NULL DEFAULT 0,

UNIQUE (host_key, name, path)
);
阅读更多

macOS 开发 -- URL 访问权限持久化(基于 Sandbox)

好久不见,最近有在好好学习哈哈,

今天来分享下基于 Sandbox 的 URL 访问权限持久化的方案。

写这篇文章的起因是:

简单浏览了下 Tencent/lemon-cleaner 的部分源码,

发现他们用 Apple Script 调用 Finder 操作文件,

这样很好地避免了权限问题,但是研究一番发现,没那么简单….

阅读更多

记录下 MarkdownView 的性能优化

我的开源项目 MarkdownView 的 0.2.0 版本 终于发布了!

改版本带来了性能上的巨大进步:

Performance

  • Rendering is now at least 3x faster on ALL DEVICES.
  • Real-time previewing is now much much smoother.
  • Scrolling is much quicker and smoother with no frame drop.
  • Memory usage has been reduced by 30%

借此机会,记录下我的优化思路。

阅读更多

ASCII码对应关系

Tips

  1. 大小写转换 ±32
  2. A-Z < a-z
  3. 字母范围:65-90,97-122
  4. 数字范围:48-57
  5. “A”为65;“a”为97;“0”为 48
  6. ASCII 可输出 %d(字符的 ASCII 码的十进制数),也可输出 %c(对应的字符)。

C语言 之 格式化输出

前两天上课的时候,老师让输出个九九乘法表。

但是实际输出会觉得怪怪的,没对齐,尝试下对齐吧。

这样也不是不行是吧,哈哈。

1
2
3
4
5
6
7
8
9
printf("1x1=1");
printf("2x1=2 2x2= 4");
printf("3x1=3 3x2= 6 3x3= 9");
printf("4x1=4 4x2= 8 4x3=12 4x4=16");
printf("5x1=5 5x2=10 5x3=15 5x4=20 5x5=25");
printf("6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36");
printf("7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49");
printf("8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64");
printf("9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81");
阅读更多

JsDelivr不灵了?淦!

还记得几年前做博客的时候,

图片上传到 GitHub 上,

用 JsDelivr 拉取 GitHub 上的静态资源,

速度嘎嘎快,

但是最近发现,

静态资源貌似都被重定向到 githubusercontent 上去了,

可是,官网上却写着:

阅读更多