Swift Package Tools Version 的写法
Sep 30, 2022
在写 Package.swift 的时候,通常第一行是使用注释的形式指定要使用的 Swift 版本: // swift-tools-version: 5.4 我把 5.4 调整为 5.0,于是改为这样: // swift-tools-version: 5.0 没想到 Xcode 报错了: Showing Recent Messages horizontal whitespace sequence [U+0020] immediately preceding the version specifier is supported by only Swift ≥ 5.4; consider removing the sequence for Swift 5.0.0 错误提示说:仅在 Swift ≥ 5.4 时候才能允许版本号之前有空格的写法,如果要保留写法需要指定 Swift 版本为 5.4 才行。 …
pfctl 简介
Sep 27, 2022
在 macOS 10.10 开始,系统防火墙工具由 ipfw 替换为了 pfctl,关于 pf 防火墙的使用手册可以参考这里: https://murusfirewall.com/Documentation/OS%20X%20PF%20Manual.pdf 开启 IP 转发功能 开启 IPv4 转发功能: $ sudo sysctl net.inet.ip.forwarding=1 net.inet.ip.forwarding: 0 -> 1 开启 IPv6 转发功能: …
Windows 11 安装 Microsoft Store
Sep 26, 2022
使用管理员权限打开 Power Shell,输入命令: Get-AppxPackage -allusers | Select Name, PackageFullName 列出所有微软官方的包名称,找到 Microsoft.WindowsStore 对应的完整包名称: Name PackageFullName ---- --------------- Microsoft.WindowsStore Microsoft.WindowsStore_22207.1401.1.0_arm64__8wekyb3d8bbwe 把完整包名拷贝,然后输入以下命令开始安装: Add-AppxPackage -register 'C:\Program Files\WindowsApps\Microsoft.WindowsStore_22207.1401.1.0_arm64__8wekyb3d8bbwe\AppxManifest.xml' -DisableDevelopmentMod 安装结束后就可以在所有应用中找到 Microsoft Store 了。 …
mitmproxy 入门指南
Sep 25, 2022
mitmproxy 是开源的免费的 HTTP 抓包工具。 安装 mitmproxy 下载:mitmproxy-8.1.1-osx.tar.gz 解压得到三个核心程序:mitmproxy, mitmdump, mitmweb $ tar xvf ./mitmproxy-8.1.1-osx.tar.gz x mitmproxy x mitmdump x mitmweb 在 macOS 上需要先移除额外的属性,否则执行的时候会触发看门狗询问是否允许执行的提示。 …
bitcode 被废弃了
Sep 24, 2022
在 Xcode 14 的发布日志中: https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes Apple Clang Compiler Deprecations Starting with Xcode 14, bitcode is no longer required for watchOS and tvOS applications, and the App Store no longer accepts bitcode submissions from Xcode 14. Xcode no longer builds bitcode by default and generates a warning message if a project explicitly enables bitcode: “Building with bitcode is deprecated. Please update your project and/or target settings to disable bitcode.” The capability to build with bitcode will be removed in a future Xcode release. IPAs that contain bitcode will have the bitcode stripped before being submitted to the App Store. Debug symbols for past bitcode submissions remain available for download. (86118779) …
Windows 11 22H2 安装时跳过网络连接
Sep 22, 2022
Windows 11 22H2 更新中,默认会要求系统必须连接上 Internet 否则无法进行下一步安装。 解决方法: 按下 Shift + F10,调出命令行界面,输入 oobe\BypassNRO.cmd,然后回车。系统会重启然后重新始安装流程,就不再强制要求连接 Internet 了: …
C++ 中的 MAX 和 MIN 宏
Sep 18, 2022
在学习 C 语言的时候,最先接触到的两个宏 MAX 和 MIN,用于找出两个数中较大和较小的那个值。 大多数的教程中,这两个宏的定义是这样的: #define MIN(a,b) (a) < (b) ? (a) : (b) #define MAX(a,b) (a) > (b) ? (a) : (b) a 和 b 可以是变量或者常量,也可以是表达式或者函数调用。 …
ObjC++ 中的 lambda 和 block
Sep 15, 2022
lambda 表达式是 C++ 11 中增加的特性,和 ObjC 中的 block 很相似,都是匿名函数。 两者语法很相似: auto lambda = [] { }; lambda(); auto block = ^ { }; block(); 不同点 1: lambda 内部不能直接使用外部变量,需要把变量添加到捕获列表 block 则可以直接引用外部变量 NSMutableArray *array = NSMutableArray.array; auto lambda = [array] { [array addObject:@0]; }; auto block = ^ { [array addObject:@1]; }; 如果捕获的是 C++ 对象: …
NSValue 、结构体与 objc_boxable
Sep 15, 2022
clang 的扩展属性 objc_boxable 支持把结构体声明为可打包,这样结构体就可以使用打包语法转换为 NSValue 类型。 本质上是语法糖。 举个例子: typedef struct __attribute__((objc_boxable)) CBox { double x, y, z; } CBox; NSValue *box = @(CBox{ 12.34, 23.45, 34.56 }); CBox value; [box getValue:&value]; 需要注意的是,结构体中的成员不能是 ObjC 的类型,否则会报 Non-trivially copyable type 'CBox' cannot be used in a boxed expression 编译错误。 …
curl 断点续传
Sep 13, 2022
使用 cURL 下载大文件时,如果中途意外断开了,可以使用断点续传来下载: $ curl -C - -OL https://... 参数 -C - 表示从上次位置继续下载,-C 后面接着的参数是偏移量,- 表示自动从上次的地方接着下载。 …