原文链接,阮一峰的网络日志-如何选择开源许可证。
下图说明了如何选择一个合适的开源许可证书。

原文链接,Event dispatch and DOM event flow。
本文讲述事件分发机制和事件在 DOM 树上的传播行为。Web 应用使用 dispatchEvent() 方法分发事件对象,事件对象遵循 DOM 事件流,在 DOM 树上传播。
在 CocoaPods 发布 Pod 的最后一步是执行 pod trunk push 命令,pod-trunk 首先会对你创建的 Pod 进行验证,验证通过才允许上传。
有时,希望在 Pod 验证失败的情况下也能够上传,关于这种做法是否合理 这里 有相关讨论。讨论中 @mxcl 给出了一种绕过发布前验证的方法,如下文所述。
pod 命令使用 Ruby 写成,使用解释型语言的好处是我们可以方便的修改命令的逻辑。只要找到目标代码,注释掉验证 Pod 的逻辑便能达到目的。
首先执行 gem env,如下变量给出了 Ruby 库安装的位置。
1 | - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.4.0 |
当前,pod trunk push 命令文件对于 Ruby 库根目录的相对位置是 gems/cocoapods-trunk-1.3.0/lib/pod/command/trunk/push.rb,只要注释掉如下一行代码即可。
1 | def run |
将内容显示到屏幕上,有许多方式可以实现。这个过程包含许多框架,依靠许多函数和方法的组合实现。本文讨论该过程的底层原理。当你需要考虑相关性能问题时,本文内容能够帮助挑选最优的 API。本文研究的对象是 iOS 系统,不过其中大部分内容也适用于 OS X。
在开发过程中有这么一种情况,某个特性开发的代码需要回滚,但是该特性的开发提交和所有即将上线的提交处于统一分支,此时需要将该特性相关的提交依次回滚。在回滚代码时希望满足两个要求,能够保留详细的回滚日志信息、只产生一次提交记录。
Pro Multithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks 这本书篇幅不多,可分为如下3部分,共8个章节。
内存管理基础知识:第一章、Life Before Automatic Reference Counting;第二章、ARC Rules;第三章、ARC Implementation。
Block:第四章、Getting Started with Blocks;第五章、Blocks Implementation。
GCD:第六章、Grand Central Dispatch;第七章、GCD Basics;第八章、GCD Implementation。
本文为该本书的读书笔记,Block 相关的内容比较多,参考这篇文章。