文章分类:开发笔记
分享在开发中遇到的问题、总结,主要为iOS、Web等前端方向文章。
cocoapods-packager 插件的错误修复和适配
开发笔记
2023-11-15
在前篇文章 pod package的不足和改进 中对
cocoapods-packager
插件如何自定义参数做过介绍,那已经是 2020 年的事了,cocoapods-packager
目前依旧停留在 2016 年的 1.5.0 版本,已渐失于维护。我在适配 Xcode 15 时,遇到一些问题,这里做下记录。Swift并发编程 - 理解结构化和结构化并发的底层技术
开发笔记
2023-11-10
前篇文章 Swift并发编程 - 理解 async 和 await 介绍了 Swift 并发编程的两个关键字 async 和 await。本文原本打算继续写 Task、Actor 等内容,但发现需要补充的基础知识很多。
由 xpc_connection_send_message_with_reply_sync 超时引发的崩溃
开发笔记
2023-09-01
iOS 的一些系统接口需要调用
xpc_connection_send_message_with_reply_sync
方法与其它进程通信并返回结果,在低性能设备上打开 APP 后如果有频繁的 xpc_reply_sync
调用可能会诱发超时卡死。Swift并发编程 - 理解 async 和 await
开发笔记
2023-06-30
本文是我学习 Swift 并发编程的第一篇笔记,文章从几个不太好理解的点,介绍了async 和 await 语法关键字的使用方法和内在含义。
销毁 Linux 线程的正确方式
开发笔记
2023-06-20
在 Linux 系统中,线程是轻量级的执行单元,正确销毁线程可避免内存泄漏等问题。Linux 线程的有 joinable 和 detached 两种属性。
判断浏览器User-Agent是否伪造的常规方法
开发笔记
2023-05-23
User-Agent
使用一串特定的字符串来标识网络客户端信息,User-Agent常被网站用于平台判断、爬虫检测等。本文介绍一些判断User-Agent是否伪造的常规方法。浏览器的 Secure Context 安全上下文限制
开发笔记
2023-04-10
主流浏览器都启用了
Secure Context
,它禁止浏览器访问被认为是不安全的内容,防止不合法访问造成的信息泄漏和安全问题。计算机系统中的时间戳
开发笔记
2023-03-20
这是一篇简单的笔记,整理下目前已知的不同计算机系统的时间戳计数标准。
Validating App Store Receipts
开发笔记
2023-03-15
Apple 的 Receipts 文件,包括App Attest receipt、App Store receipt等,都是采用
PKCS #7
容器格式包装的,包含签名、证书链、及使用ASN.1
编码的payload。本文从原理和细节上讲解了使用 python 如何解码Receipts文件,如何验证签名、校验证书链、并提取payload。iOS Flutter MethodChannel 双向通信
开发笔记
2023-02-12
MethodChannel 是 Flutter提供的最常用的和 Native App 双向通信的方式。本文将演示这种通信方式的使用。
iOS Flutter 开发环境部署
开发笔记
2023-02-07
按计划应该是继续SwiftUI相关的,临时需求用到了Flutter,接下来的几篇可能都是和Flutter相关(只是可能)。本文记录iOS Flutter 开发环境部署步骤。
拥抱 Swift 和 SwiftUI
开发笔记
2023-01-13
Apple 分别于2014年,2019年发布了 Swift 语言和 SwiftUI 框架,对于 iOS 开发者来说,技术的更新换代是不可回避的趋势,应该积极学习运用。
以太坊智能合约入门:Ganache + Truffle
开发笔记
2022-12-22
借助Ganache和Truffle,可以快速入门以太坊智能合约开发,本文将通过一个Demo,演示智能合约开发、编译至部署过程。
iOS Background Task使用陷阱
开发笔记
2022-03-10
发现线上用户有在后台状态被杀死的情况,最终定位到是不合理使用Background Task造成的,这篇文章简要介绍下使用Background Task需要注意的事项。
IntelliJ IDEA 制作生产 jar 包
开发笔记
2022-02-05
这是一篇入门级的开发手册,介绍使用 IntelliJ IDEA 新建 Java 项目,和生成 jar 包。
Linux线程局部存储 Thread Local Storage
开发笔记
2022-01-15
在C/C++程序中,全局变量默认是所有线程共享的,开发者需要处理多线程竞争问题。有些情况下我们需要保证一个线程独享一份数据,其它线程无法访问。典型的就是errno全局变量,它总是会保存当前线程最后一个调用的错误码,不会存在线程冲突。这个时候需要使用线程局部存储(TLS)来解决。
如何正确地获取线程ID?
开发笔记
2022-01-09
如何正确的获取线程ID?这个问题看似简单实则暗藏陷阱。由于存在用户态和内核态两层线程模型,就有两种获取线程ID的方式。
优雅地使用#include
开发笔记
2022-01-05
#include
并不只是用来引用头文件的,合理的使用#include
可以让代码更优雅。LLDB命令速查手册
开发笔记
2021-09-29
LLDB是Xcode上默认的调试器,支持C/C++、Objective-C 和 Swift 程序的调试,也是LLVM项目的一个可重用的高性能调试器。在LLVM项目的lldb子目录可以查看LLDB的源码。
iOS安全:Tweak开发环境及入门
开发笔记
2021-08-26
Tweak原指微调以增强电子系统功能的实用工具;在iOS中,Tweak是广泛使用的越狱插件开发工具,通过创建dylib注入到宿主进程,完成各种HOOK操作。阅读本文将快速入门Tweak开发。
Using a Custom Toolchain in Xcode
开发笔记
2021-06-17
特殊情况下需要使用自定义的Toolchain,Xcode便捷支持选择不同的Toolchain。自定义的Toolchain在macOS和Xcode升级时可能需要做维护。
iOS WKWebView详解及JS Bridge同步调用问题
开发笔记
2021-06-12
WKWebView是 iOS 8.0以后用于替代UIWebView的浏览器组件。和UIWebView相比,WKWebView性能更高,支持更多的HTML5特性,控制更加细致。本文简要介绍了UIWebView的使用以及JS和native APP同步交互的问题。
SQLite开发文档:PRAGMA配置、性能优化
开发笔记
2021-05-29
本文是kanchuan.com整理的关于SQLite的第三篇文章,主要介绍SQLite的PRAGMA配置参数及性能优化的一般方法。
xcodebuild:code signature invalid
开发笔记
2021-05-26
MH_EXECUTE、LC_LOAD_DYLIB等类型二进制文件必须签名才能使用。重签名操作涉及两个命令行工具:codesign和security。
SQLite开发文档:数据类型、文件锁状态、多线程
开发笔记
2021-05-20
本文是kanchuan.com整理的关于SQLite的第二篇文章,主要介绍SQLite的数据类型、重要的数据结构、文件锁状态、线程模式相关的内容。
SQLite开发文档:SQLCipher加密
开发笔记
2021-05-14
SQLite是广泛使用的开源嵌入式数据库,具有占用资源低、跨平台、使用简单、支持多程序语言等特点。本文是kanchuan.com整理的关于SQLite的第一篇文章,介绍SQLCipher加密相关的内容。
iOS CoreMotion 传感器开发
开发笔记
2021-03-18
CoreMotion.framework集中了iOS设备大多数传感器的API接口,这些传感器包括陀螺仪、加速度计、磁力计等。这些传感器的值可以反映手机设备的空间姿态及运动状态。
iOS启动优化之二进制重排
开发笔记
2021-02-27
很早之前就阅读过那篇关于抖音基于二进制文件重排解决方案的文章,那应该是我首次了解「二进制重排」的相关技术。最近,我系统地梳理了这部分知识点,做下笔记。
iOS CLLocationManager的弹窗问题
开发笔记
2021-01-22
iOS系统在请求定位权限时会弹窗提示。某些情况下,APP中的一些模块可能不需要主动引发弹窗但又需要获取定位数据。
iOS NSURLProtocol详解及使用陷阱
开发笔记
2021-01-05
如果想对网络请求进行干预,使用NSURLProtocol是一个不错的选择。NSURLProtocol是iOS URL Loading System的一个功能,它提供了便捷的接口以允许开发者重新定义网络请求的行为,包括修改请求的发起和响应动作。