Hexo 博客配置
配置 Hexo 博客hexo官方文档,看中文文档更详细
按照以下几个步骤配置 Hexo 博客:
1. 安装 Node.js 和 GitHexo 是基于 Node.js 构建的,因此首先需要安装 Node.js。请访问 Node.js 官网 下载并安装适合您操作系统的 Node.js 版本。
同时,Hexo 使用 Git 进行版本控制,所以请确保您的电脑上已经安装了 Git。如果没有,请访问 Git 官网 下载并安装。
2. 安装 Hexo打开命令行工具,执行以下命令以全局安装 Hexo:
1npm install -g hexo-cli
3. 初始化 Hexo 博客创建一个新的文件夹,用于存放您的博客项目。然后在命令行中进入该文件夹,并执行以下命令以初始化 Hexo 博客:
1hexo init
这将会在当前文件夹中生成 Hexo 的基本文件结构。接下来,执行以下命令以安装项目依赖,如果你换了电脑check out hexo的文件后直接在文件夹更新依赖:
1npm install
4. 配置博客配置文件位于项目根目录下的 _config.yml 文件。您可以根据需要修改该文件 ...
iOS之Runtime
动态语言VS静态语言动态语言(如Python、Ruby、JavaScript)和静态语言(如C、C++、Java、Swift)是一个和语言对应编译器相关的概念,主要的区别在于类型系统和方法调用上,比如一个JS变量可以随意设置类型而不会报错。
OC是动态性语言,区别于静态语言,动态语言在编译后的方法调用,不是编译后就固定了。而是采用了一套动态检索的机制,另外runtime API能够编辑这些元数据。
Runtime API类的结构类对象(Class)是由程序员定义并在运行时由编译器创建的,它没有自己的实例变量,这里需要注意的是类的成员变量和实例方法列表是属于实例对象的,但其存储于类对象当中的。
typedef struct objc_class *Class;
struct objc_class {
Class _Nonnull isa OBJC_ISA_AVAILABILITY;
#if !__OBJC2__
Class _Nullable super_class OBJC2_UNAVAILABLE;
const char * ...
基于AVPlayer视频播放器的实现
主流APP的播放器都是基于AVPlayer用起来高效方便,本文主要记录一下,播放器开发过程中会遇到的问题。
PlayerPlayer设计成单例,包含avplayer、playLayer、assetLoader、当前的播放窗口以及播放、暂停、拖动等控制方法。另外定义回调的delegate包含了下载流和item状态相关供上层使用。
传入视频URL、播放窗口targetView(UIView)以及播放位置second,检查缓存是否有文件;
如果不存在,切换URL的scheme(不切换的话不会走assetLoader)。把之前的asset(AVURLAsset)停掉销毁。创建新的asset,并且给asset设置assetLoader(AVAssetResourceLoader),并且设置assetLoader的delegate为自己。如果播放器有截图的需求,要自定义output(AVPlayerItemVideoOutput)替换掉原来的。
[targetView.layer addSublayer:self.playerLayer];
[self playAtSecond:second]; ...