本文详细介绍了如何在 Mac 系统下使用 Hexo 和 GitHub 搭建个人博客,包括环境配置、Hexo 安装、主题设置、文章发布等步骤,适合想要搭建个人博客的开发者参考。
深入理解 GCD
1.Dispatch Group
在追加到 Dispatch Queue 中的多个任务处理完毕之后想执行结束处理,这种需求会经常出现。如果只是使用一个 Serial Dispatch Queue (串行队列)时,只想要将执行的处理全部追加到改串行队列中并在最后追加结束处理即可,但是在使用 Concurrent Queue 时,可能会同时使用多个 Dispatch Queue 时,源码就会变得很复杂。
这种情况下,就可以使用 Dispatch Group。
1 | dispatch_group_t group = dispatch_group_create(); |
Core-Image
Core Image API架构
Core Image的插件架构允许编写自定义滤镜与系统滤镜集成来扩展功能。Core Image需要context对象来实现。
找可用滤镜
向Core Image的kCICategoryBuiltIn类请求得到滤镜名。或者使用Quartz Composer里的Filter查看并且进行组合查看效果。这个范例也可以查看https://github.com/objcio/issue-21-core-image-explorer。
官方提供的Core Image滤镜的完整列表https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/uid/TP40004346
1 |
|
创建滤镜
1 | let blurFilter = CIFilter(named:"CIGaussianBlur”) //根据滤镜列表里的滤镜名, 可以创建一个滤镜对象,比如高斯模糊滤镜 |
Core-Animation
基本动画
- 使用 CABasicAnimation,实现一个动画
1 | CABasicAnimation *animation = [CABasicAnimation animation]; |
URLSession
相关组件
- NSURLSession
- NSURLSessionConfiguration
- NSURLSessionDataTask
- NSURLSessionUploadTask
- NSURLSessionDownloadTask
与NSURLConnection对比
改进是可以配置每个session的缓存,协议,cookie以及credential policy。每个NSURLSession对象都是一个NSURLSessionConfiguration对象来进行初始化,指定那些策略和增强移动设备上性能选项。
NSURLSessionTask
负责处理数据的加载以及文件和数据在客户端与服务器之间的上传和下载。3个子类NSURLSessionDataTask,NSURLSessionUploadTask,NSURLSessionDownloadTask可以直接使用。这三个子类完成最基本的网络任务,获取JSON或XML数据,上传和下载文件。
所有task都是可以取消,暂停或恢复的。当download task取消时,可以通过选项创建一个resume data传递给下一次新创建的download task继续download
Get请求
iOS:使用 Core ML 进行机器学习
Core ML 是一个使各种机器学习和统计模型在 macOS 和 iOS 上原生支持的令人兴奋的新框架。它帮助开发者将已经成型的统计和机器学习模型整合到应用之中。这个模块是基于苹果公司的底层机器学习基本元件,有一些是在 WWDC2016中声明的。
#Core ML在三个方面帮助开发者:
- Core ML 支持多种机器学习模型,从类神经网络模型到广义线性模型,Core ML 中都有。
- Core ML 使添加机器学习模型到开发者应用中更容易。这个目标是通过 coremltools实现的,Core ML Tools 是一个 专门帮助生成 Xcode 可用的 .mlmodel 文件的 Python 包。
- Core ML 可以自动为开发者的模型提供自定义编程接口来提供可供调用的 API。这项特性帮助开发者在 Xcode 中直接使用模型,就像模型是一个本地类型。
在阅读以上内容之后,我们也就可以得到一个关于 Core ML 声明周期的基本认识。开发者可以用 Python创建一个模型,生成一个 .mlmodel 文件,添加该模型到 Xcode 中并且通过 Core ML 在一个设备上使用该模型。现在咱们开始吧!
Auto_Layout剖析
先前写到的一篇Masonry心得文章里已经提到了很多AutoLayout相关的知识,这篇我会更加详细的对其知识要点进行分析和整理。
来历
一般大家都会认为Auto Layout这个东西是苹果自己搞出来的,其实不然,早在1997年Alan Borning, Kim Marriott, Peter Stuckey等人就发布了《Solving Linear Arithmetic Constraints for User Interface Applications》论文(论文地址:http://constraints.cs.washington.edu/solvers/uist97.html)提出了在解决布局问题的Cassowary constraint-solving算法实现,并且将代码发布在他们搭建的Cassowary网站上http://constraints.cs.washington.edu/cassowary/。后来更多开发者用各种语言来写Cassowary,比如说pybee用python写的https://github.com/pybee/cassowary。自从它发布以来JavaScript,.NET,JAVA,Smalltall和C++都有相应的库。2011年苹果将这个算法运用到了自家的布局引擎中,美其名曰Auto Layout。
Cassowary
Cassowary是个解析工具包,能够有效解析线性等式系统和线性不等式系统,用户的界面中总是会出现不等关系和相等关系,Cassowary开发了一种规则系统可以通过约束来描述视图间关系。约束就是规则,能够表示出一个视图相对于另一个视图的位置。
Auto Layout的生命周期
进入下面主题前可以先介绍下加入Auto Layout的生命周期。在得到自己的layout之前Layout Engine会将Views,约束,Priorities(优先级),instrinsicContentSize(主要是UILabel,UIImageView等)通过计算转换成最终的效果。在Layout Engine里会有约束变化到Deferred Layout Pass再到应用Run Loop再回到约束变化这样的循环机制。
约束变化
触发约束变化包括
- Activating或Deactivating
- 设置constant或priority
- 添加和删除视图