0%

整理出 Linux, VIM 常用到的 命令以及命令的用法,方便以后查找使用。

linux 下文件目录的操作权限:

  • chmod:
    修改文件、目录访问权限。
    rwx4/2/1
    示例: r-x-w-r--: 5 2 4

    r、w、x 对于目录、文件的含义是否相同??

    文件 目录
    r: 查看文件内容
    cat、more、less、tac
    vim(读) gedit(读)
    目录的内容(目录项)可以被查看
    ls、vim(读)
    w: 修改、删除 文件内容
    cat> / can >>
    vim(写、删) /gedit(写、删除)
    目录的内容(目录项)可以被修改、删除、增加
    mv、cp、rm、rmdir、mkdir、touch…
    x: 该文件可以运行。 该目录可以被进入
    cd

  • 进程信息查看:
    1
    ps aux | grep xxxx

    top —— Linux下的 任务管理器。

阅读全文 »

h5页面占用内存过大时,会引起白屏。解决方法如下:

  • 解决方法一:借助 WKNavigtionDelegate
    当h5页面即将白屏时,会调用 - (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0){} 方法,我们只需在这个方法中重新加载 webview 即可,此时 url 不为空。
1
2
3
- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0){
[webView reload];
}
阅读全文 »

在升级 Node 之后,发现之前部署在 github 上的博客部署起来总是失败。错误主要是使用的 hexo 版本与 Node 版本不兼容。

所以我们希望既能够解决现有的问题,又能够在不同 Node 版本间切换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be integer. Received an instance of Object
at copyFile (fs.js:1890:10)
at tryCatcher (C:\Users\Administrator\blog\node_modules\bluebird\js\release\util.js:16:23)
at ret (eval at makeNodePromisifiedEval (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promisify.js:184:12), <anonymous>:13:39)
at C:\Users\Administrator\blog\node_modules\hexo-deployer-git\node_modules\hexo-fs\lib\fs.js:144:39
at tryCatcher (C:\Users\Administrator\blog\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:517:31)
at Promise._settlePromise (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:574:18)
at Promise._settlePromise0 (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:619:10)
at Promise._settlePromises (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:699:18)
at Promise._fulfill (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:643:18)
at Promise._resolveCallback (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:437:57)
at Promise._settlePromiseFromHandler (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:529:17)
at Promise._settlePromise (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:574:18)
at Promise._settlePromise0 (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:619:10)
at Promise._settlePromises (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:699:18)
at Promise._fulfill (C:\Users\Administrator\blog\node_modules\bluebird\js\release\promise.js:643:18)
阅读全文 »

到此为止,已经了解了可观察性和不同类型的 Subjects 的工作原理,并且学习了如何在 Swift playground 上进行创建和练习。
但是,要在日常开发情况下看到可观察对象的实际使用可能会有些挑战,例如将UI绑定到数据模型,或者展示一个新的控制器并从中获取输出。

这次一起尝试使用新的观察者对象,实践新的实例。

在这一节中,我们将使用 RxSwift 和你新的可观察对象的超能力创建一个应用程序,让用户创建漂亮的照片拼贴-响应式。

阅读全文 »

开发技巧01 创建仅执行次的代码片段

1
2
3
4
5
6
7
8
/// 代码定义
lazy var onceCode: Void = { [weak self] in
// TODO……

}()

/// 在调用处调用
onceCode

开发技巧02 xcrun: error: unable to find utility “xctest”

在使用 Vapor 作为服务端框架式,在执行 swift package update 时,有时会收到如下错误:

1
2
/usr/bin/xcrun --sdk macosx --find xctest output:
xcrun: error: unable to find utility "xctest", not a developer tool or in PATH

解决办法,在终端中执行如下命令皆可解决:

1
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
阅读全文 »

安装Hombrew国内脚本版

1
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

会将Homebrew安装在intel架构的默认目录下

1
/usr/local/

在m1芯片 arm架构下的Big Sur系统下运行

阅读全文 »

​ 使用一项新的技术之后,使用时间愈长就对内部实现原理愈感到好奇。基于难以压抑的好奇心,决定花点时间对这门语言一些实现一探究竟。

​ 阅读源码之前需要准备一些资料:

前言

​ 阅读这个文件的原因是最近接手一个比较棘手的项目,之所以棘手原因是前任开发者开发起来过于随意,其中的一些小细节疏漏了,导致本来已经比较艰难的项目更是雪上加霜。尤其是在数组的使用上沿用 Objective-C 的用法,由于 Swift 被称为是 高效、安全,在实现上有差别,在使用上也需要注意一些细节,所以就对 SwiftArray 的具体实现一探究竟。

​ 在这个文件中,一开头我们看到这样一句话:“Three generic, mutable array-like types with value semantics.”。大概意思就是具有值语义的三种通用的可变数组类型。而且是一个有序可随机访问的集合。

我们可以总结出 SwiftArray 特点:

  • 值类型

  • 通用(支持多种数据类型存储)

  • 可变

  • 有序

  • 可随机访问

Array<Element> is like ContiguousArray<Element> when Element is not a reference type or an Objective-C existential. Otherwise, it may use an NSArray bridged from Cocoa for storage.

源文件中的注释描述的比较清晰,如果 Array 中的元素为非引用类型或者非 Objective-C 扩展的类型,其存储和使用和使用方式与 ContiguousArray 一直。否则会将其桥接转换成 NSArray 存储。

阅读全文 »

SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具,基本上以 GitHub’s Swift 代码风格指南为基础。

SwiftLint Hook 了 ClangSourceKit 从而能够使用 AST 来表示源代码文件的更多精确结果。

image-20201210170345877

安装

使用 Homebrew

1
$ brew install swiftlint
阅读全文 »