博客入门:每个人的独立博客
如何零基础创建一个属于自己的博客网站
博客进阶:自动化部署
利用自动化流程大幅简化博客搭建和部署
GitHub Codespaces 快速体验
GitHub Codespaces 快速体验:介绍免费额度、创建入口与博客环境自动搭建流程,实测开发体验,并对比本地与云开发脚本方案的适用场景。
探索 Stellar 时间线标签的 N 种用法
Stellar 时间线标签的 N 种玩法:教程步骤、个人动态、memos、话题讨论、更新日志、热评文章与侧边栏组件,用 GitHub Issues 或 Releases 数据轻松展示动态内容。

用 GitHub 搭建一个简单的云脚本体系

接口变动近期已升级至 v3 版本,文章内容已更新。 细心的朋友可能会发现,我提供的一些脚本都可以在不依赖任何包管理工具的情况下通过一行命令安装,并且它们的安装命令极为相似: curl -s https://sh.xaox.cc/install | sh -s hexocurl -s https://sh.xaox.cc/install | sh -s tagcurl -s https://sh.xaox.cc/install | sh -s vimcncurl -s https://sh.xaox.cc/install | sh -s podspec 虽然它们安装方式极为相似,但是安装逻辑却并非完全相同,例如前三者是安装到 /usr/local/bin/ 目录下,在任意位置打开终端都可以使用,而 podspec.sh 则是下载到当前目录下。

产研 / 设计开发

苹果设计开发加速器:iPhone 和 iPad 界面灵活适配

受疫情影响,今年设计开发加速器活动改为线上形式,本次参与的活动课题是《为 iPhone 和 iPad 搭建灵活适配的用户界面》。

产研 / 技术
PPG 光电容积脉搏波描记法:如何用手机摄像头测量心率
心率管家的设计与开发(下篇:信号处理)
静态博客使用 Issues API 来实现动态发布友链、书签
教你使用 Issues API 来实现动态发布友链、书签
个人电脑作为办公设备时,我们如何保护隐私?
用 MacBook 办公如何保护隐私:将生活区与工作区分区并加密、使用工作专用账号、收紧用户目录权限,实测记录分区加密、fstab 不自动挂载等细节与踩坑。
苹果设计开发加速器:《创建卓越的 Apple Watch 体验》
记录苹果上海设计开发加速器《创建卓越的 Apple Watch 体验》活动现场:介绍 watchOS 6 独立 App、手表端 App Store、人机界面指南与设计要点,并附活动议程与现场照片。
使用链式语法打造一个 ObjC 安全的对象类型转换库
ValueX 库的设计与实现:针对后台返回数据类型异常导致崩溃的问题,提供 NSSafeString 等安全类型函数与链式类型转换接口,让 ObjC 开发中的数据解析更健壮。
如何设计一个样式和逻辑分离的 HUD 库(ProHUD)
介绍 ProHUD 的设计思路:把 Toast、Alert、ActionSheet 的 UI 与逻辑分离,通过 Scene 场景模板与动态更新接口实现简单调用与完全定制,并处理多实例并存等极端场景。
心率管家的设计与开发(上篇:整体流程)
心率管家 App 的设计开发复盘:从 PPG 测量原理、市场与定价策略到技术选型(Swift5、JLRoutes、SQLite),再到 UI、快捷指令、上架与迭代计划,附部分模块源码。

整理 iOS 老项目中混乱不堪的多语言翻译

linksmart 项目截止目前已经支持了 17 个国家的语言,从诞生到现在也已经经历了很多程序员的修改和维护,代码已经变得十分混乱。因为公司一直在接新的定制项目,所以也没有时间进行一次彻底的重构,只能在维护某方面的 BUG 的时候,对相关代码进行局部重构。

产研 / 技术

iOS 开发:如何实现只推迟而不会重复执行的函数

在 iOS 开发中,如果想推迟执行一段代码,使用 dispatch_after 函数可以轻易实现,但有时候我们想在它推迟的期间再次推迟,直到最终不再推迟的时候,才真正的被调用一次。这就需要每次先将旧的事件取消,然后重新设置。

产研 / 技术

iOS 接入 Strava 分享模块(下篇:StravaSDK)

StravaKit 是一个比较新而且代码比较规范的第三方SDK,但是目前还没有上传功能(详见 todo)。所以我不得已对 StravaKit 0.9.5 增加上传功能,并进行一些简单封装和改编,使之能够植入到公司项目中。由于时间有限,我只增加了上传fit文件的功能,并且使用了第三方框架 Alamofire,所以需要在项目中导入 Alamofire。

产研 / 技术

iOS 接入 Strava 分享模块(上篇:FitSDK)

本文内容已经过时,仅作参考。 fit 是一种文件协议,体积小巧,多用于可穿戴设备记录、传输运动与健康数据。官方提供了 C、C++、Java 语言的 SDK 和非常详细的使用文档。因此在 iOS 端接入 fit 就需要在 C 或 C++ 的 SDK 基础上进行一点面向对象的封装。

产研 / 技术

如何封装自己的 iOS Framework 静态库

市面上许多第三方 SDK 都是闭源的,因为厂商不希望泄露自己的实现。所以当需要给别人提供SDK但不让他们知道代码的实现时就需要封装成静态库。

产研 / 技术

如何从 UIImageView 指定的坐标点取色?

开发中有时候会遇到这样的需求,要给用户一个取色板,让用户从中自由地选取颜色,用来改变主题或者控制灯具的颜色等。这时候我们就需要获取一个视图的指定坐标的颜色值。

产研 / 技术

ObjC 使用链式语法更优雅地管理沙盒文件

假如你需要把一个字典或者别的什么东西保存到沙盒里,你准备怎么做?也许你已经条件反射的想到了操作步骤……其实,你可以不必每次都那么老老实实的把每一步写出来,一行代码就可以了:【路径+保存文件】两个关键点,组成一条链式语法。

产研 / 设计开发