安装 DEB 安装包并自动安装依赖
Mar 26, 2022
有时候会遇到软件厂商或者作用只提供了 deb 格式的软件安装包,但还需要额外是依赖库才能正常运行。 直接使用命令 dpkg -i *.deb ,是不能处理 deb 里定义的依赖关系的。 正确做法是使用 apt 安装 deb 文件: …
建立私有软件的 apt 仓库
Mar 24, 2022
使用私有软件源可以很方便的安装自己开发或者编译的软件。 第三方软件源的存放在 /etc/apt/sources.list.d 目录: 创建一个软件源文件: /etc/apt/sources.list.d/swift-toolchain.list 软件源文件的内容如下: deb http://127.0.0.1/repo swift-toolchain main 以上几部分拆开来解析: …
ssh 客户端通过代理连接服务器
Mar 22, 2022
ssh 客户端的代理功能需要通过 nc 转发来实现。 方法一:编辑 ~/.ssh/config ,添加以下内容: Host * ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p 方法二:在命令中使用参数指定代理: ssh -o "ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p" user@server nc 和代理有关命令参数: …
Swift 5 静态编译
Nov 17, 2021
Swift 是支持静态链接的,因为它是跨平台的语言。参考这里:Static linking on Linux 静态链接的好处就是不需要带 Swift 的一堆 Runtime 库,在 build 的时候增加 -static-stdlib 就可以了。 但是如果在最新的版本(Swift 5.5.1)上静态编译,会得到一个错误信息: …
SwiftUI 入门指南
Sep 29, 2021
Introducing SwiftUI SwiftUI is a modern way to declare user interfaces for any Apple platform. Create beautiful, dynamic apps faster than ever before. SwiftUI Essentials Learn how to use SwiftUI to compose rich views out of simple ones, set up data flow, and build the navigation while watching it unfold in Xcode’s preview. Creating and Combining Views Create a new Xcode project that uses SwiftUI. Explore the canvas, previews, and the SwiftUI template code. …
使用命令行工具测试 APNs
Sep 29, 2021
APNs 全称是 Apple Push Notification service (苹果推送通知服务)。 早期的 APNs 是使用证书的方式,缺点是有时效性,需要定期更换。 到了 iOS10 时期,苹果推出了新的认证方式:密钥标识符。 密钥标识符没有时效,可以永久使用,每个密钥标识符对应一个密钥文件,如果密钥文件泄露,可以注销密钥标识符使其失效。 …
port 安装支持 HTTP/2 的 curl
Sep 29, 2021
安装步骤 macports 默认情况下安装 curl: $ sudo port install curl 以上命令安装的 curl 不支持 HTTP/2 协议。 启用HTTP/2支持 需要添加变量 +http2,完整安装命令: $ sudo port install curl +http2 参考资料 https://trac.macports.org/ticket/44380
iOS 15 开启更快的 ProMotion 刷新率
Sep 28, 2021
iPhone 13 Pro 系列支持最高 120Hz 的动态刷新率,App 需要主动适配才能使用动态刷新率。 在 Info.plist 里加上: <key>CADisableMinimumFrameDurationOnPhone</key><true/> 参考资料 Optimizing ProMotion Refresh Rates for iPhone 13 Pro and iPad Pro
编译 wget2 支持 HTTP/2
Sep 27, 2021
wget2 发布了,相对于 wget ,下载速度更快而且支持 HTTP/2 的特性。 macports 还没有预编译好的版本,想体验 wget2 只能自己编译了。 下载源码: wget2-2.0.0.tar.gz 解压缩: tar xvzf ./wget2-2.0.0.tar.gz 我使用的包管理工具是 macports,如果是 brew 用户需要自行变通处理。 …
Swift:了解一下 defer
May 23, 2021
关于 defer 的几条说明: defer 会在退出其作用域的时候执行。 同一个作用域内可以定义多个 defer。 defer 不要定义在作用域的末尾(因为没有必要)。 一个例子解释: func loadFile(atPath path: String) { let fs = InputStream(fileAtPath: path) defer { // loadFile 方法返回前执行 fs.close() } fs.open() ... for i in 0..<9 { let lock = NSLock() defer { // 每一次循环结束前执行 lock.unlock() } } ... defer { // 可以定义多个 defer 块 } ... } 以上例子可以充分理解了 defer 的使用场景。 …