使用swift命令行抓取WWDC字幕

{% github it-boyer WWDC-Subtitles 84878dc width = 30% %} 平时没有那么大段的时间能去看这些 session 的视频,想先通过字幕能了解到 session 中的内容,所以搜罗了网上大牛抓取WWDC字幕的相关实现。

原理

WWDC客户端作者分享的一个开源项目jonyfive是把他WWDC项目中抓取字幕文件逻辑抽取出来,就是使用 swift 做的爬虫,可以结合项目做些有趣的东西。 这边我对该项目进行了一些修改,之前下载的直接就是 vtt 的文件,并没有对文本文件进行处理,我把vtt格式调整了正常阅读的模式,方便大家阅读。

Swift的动态性

Foundation

Foundation 框架实现了基于运行时一个特性的两个API:

  1. 键值编码 (key-value-coding, KVC)
  2. 键值观察 (key-value observing, KVO) KVC 和 KVO 允许我们将 UI 和数据进行绑定,这也是 Rx 以及其他响应式框架实现的基础。

KVC

KVC 的工作方式如下所示:

Chisel-xcodeproj框架的使用

{% github it-boyer chisel f331dc6 width = 30% %} 这个pull请求添加findinstances命令,该命令完成Add findinstances, and new support framework in Chisel.xcodeproj Add Makefile for installing framework的工作。 用户可以运行help findinstances获取findinstances的详细信息。简要总结一下,findinstances可以找到给定class类或protocol协议的所有实例,并使用谓词表达式过滤这些结果。 如果您有一个名为XXSocialUser的类,那么您可以通过运行findinstances XXSocialUser == 'curry'来找到一个特定的用户。

makefile自动化编译工具

make命令执行时,需要一个makefile文件,以告诉make命令需要怎么样的去编译和链接程序。

首先,我们用一个示例来说明makefile的书写规则,以便给大家一个感性认识。这个示例来源于gnu 的make使用手册,在这个示例中,我们的工程有8个c文件,和3个头文件,我们要写一个makefile来告 诉make命令如何编译和链接这几个文件。我们的规则是:

使用Sphinx制作简洁而又美观的文档

{% github it-boyer width = 30% %}

使用 sphinx 制作简洁而又美观的文档

安装

1
2
3
4
5
6
7
8
9
$ easy_install sphinx
Searching for sphinx
Reading http://pypi.python.org/simple/sphinx/
Reading http://sphinx.pocoo.org/
Best match: Sphinx 1.0.5
Downloading http://pypi.python.org/packages/[...]
Processing Sphinx-1.0.5-py2.5.egg
[...]
Finished processing dependencies for sphinx

创建工程

1
2
3
4
5
6
$ sphinx-quickstart 
Welcome to the Sphinx 1.0.5 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).
[...]

工作目录的列表

swift混编及Framework和静态库的支持

swift和OC混编

OC

oc调用swift framework/swift静态库

oc静态库调用swift/oc的framework

oc静态库调用swift/oc的静态库

swift

swift调用oc/swift静态库

swift framework调用oc/swift静态库

swift静态库调用oc/swift静态库

使用Fastlane持续集成开发

{% github it-boyer width = 30% %}

持续集成

在框架开发中,一个优秀的持续集成环境是至关重要的。CI 可以保证潜在的贡献者在有保障的情况下对代码进行修改,减小了框架的维护压力。大部分 CI 环境对于开源项目都是免费的,得益于此,我们可以利用这个星球上最优秀的 CI 来确保我们的代码正常工作。

cocoapods如何自动化管理项目依赖

通过介绍项目相关的属性配置,来了解cocoapods如何自动化管理项目依赖的。最后会通过自定义ruby脚本来演示。

cocoapods偶现问题

pod install安装依赖,主要是对build settings中的新增依赖配置等, 当cocopad 集成失败时,可以通过以下几步排查 ,也可以尝试清除项目中pod相关的信息,重新pod install,了解以下步骤都是很重要的。

将Playground作为项目的单元测试

Perfect项目中增加playground

新建Perfect.xcodeprojPerfectPlayground

  1. 新建一个Xcode工程Perfect
1
swift package generate-xcodeproj
  1. 设置include路径 在Xcode工程的build settings中设置SWIFT_INCLUDE_PATH 路径为 ${PROJECT_DIR}并设置recursive(递归)选项。
  2. 在同一工程目录下创建一个PerfectPlayground

新建Perfect.workspace

  1. 新建一个工作空间:Perfect.workspace,在工作空间中添加工程和操场:Perfect.xcodeprojPerfectPlayground
  2. 编译Perfect.xcodeproj,这样就激活了PerfectPlaygroundPerfectLib函数库功能。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import PerfectLib
let json = "{\"name\": \"tom\"}"
do {
    let name = try json.jsonDecode()
    print(name)
}catch{

}
let u = UUID()
print(u.string)

原文Perfect-Playground

新组件开发流程及打包证书配置

新组件开发/发布的流程

原理:在build程序包之前,会根据平台提供的程序包的组件依赖信息,来other linker flags进行删减更新,仅保留依赖包的配置,这样以来,就可以针对打包平台提供的APP依赖,来生成相应的产品APP。 添加新组件的步骤