macOS 命令行工具编辑 plist 文件
Oct 01, 2022
plutil 是 macOS 下的一个命令行工具,用于编辑和处理 *.plist 格式的文件。 转换文件格式 plutil -convert xml1 ToolchainInfo.plist 文件类型说明:xml1 XML 格式,binary1 二进制格式,json JSON…
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…
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 把完整包名拷贝,然后输入…
mitmproxy 入门指南
Sep 25, 2022
mitmproxy 是开源的免费的 HTTP 抓包工具。 安装 mitmproxy 下载:mitmproxy-8.1.1-osx.tar.gz 解压得到三个核心程序:mitmproxy, mitmdump, mitmweb $…
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…
Windows 11 22H2 安装时跳过网络连接
Sep 22, 2022
Windows 11 22H2 更新中,默认会要求系统必须连接上 Internet 否则无法进行下一步安装。 解决方法: 按下 Shift + F10,调出命令行界面,输入 oobe\BypassNRO.…
C++ 中的 MAX 和 MIN 宏
Sep 18, 2022
在学习 C 语言的时候,最先接触到的两个宏 MAX 和 MIN,用于找出两个数中较大和较小的那个值。 大多数的教程中,这两个宏的定义是这样的: #define MIN(a,b) (a) < (b) ? (a)…
ObjC++ 中的 lambda 和 block
Sep 15, 2022
lambda 表达式是 C++ 11 中增加的特性,和 ObjC 中的 block 很相似,都是匿名函数。 两者语法很相似: auto lambda = [] { }; lambda(); auto block = ^ { }; block(); 不同点 1: lambda 内部不能直接使用外部变量,…
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,…