Sketch 插件整理
Sketch measure 标记尺寸
快捷键:Ctrl + Cmd + B
Runner 快速查找组件
快捷键:Cmd + ‘
Auto-Layout 组件位置
安装好之后,选中一个对象,Auto Layout 就会出现在 inspector 的右下角
MacOS 10.12 终端命令行下使用 Shadowsocks
Shadowsocks-NG 有一个新的 Shadowsocks 的客户端叫 Shadowsocks-NG 解决了一个长久以来的痛点,Shadowsocks 没有 HTTP 代理,导致我们需要使用 polipo 等软件进行协议转换
现在其在 1087 端口提供了 http 代理服务 (http 代理代理设置选项),我们可以通过在命令行直接设置代理,来使用 SS 服务了
# 开启代理 export http_proxy=127.0.0.1:1087export https_proxy=127.0.0.1:1087# 关闭代理 unset http_proxyunset https_proxy
配置一个别名方便启动
vim ~/.bash_profile#orvim ~/.zshrc
在文件内加入
#Custom Add not Systemalias proxy-on='export http_proxy=127.0.0.1:1087;export https_proxy=$http_proxy'alias proxy-off='unset http_proxy;unset https_pro ...
Swift Dictionary 数据结构
Dictionary 是除了 Array 之外的另一种非常重要的数据结构,它用于把某种形式的 key,关联到某种形式的 value。我们来看一个例子。
定义 Dictionary 假设我们要定义一个数据结构,用来保存用户在泊学对某个视频的观看情况。可以这样:
假设我们要定义一个数据结构,用来保存用户在泊学对某个视频的观看情况。可以这样:enum RecordType {case bool (Bool) case number (Int) case text (String)} let record11: [String: RecordType] = [ "uid": .number (11), "exp": .number (100), "favourite": .bool (true), "title": .text ("Dictionary basics")]
在上面代码里,我们用 [KeyType: ValueType] 的形式来定义一个 Dicti ...
Swift:Array
Swift 官方 API 文档
对任何一门现代化编程语言来说,集合类型都是非常重要的组成部分。这一类数据类型的设计,很大程度上决定了开发者对某种编程语言的使用体验以及代码执行效率。因此,Swift 在集合类型的设计和实现上,进行了诸多的考量,让它兼具易用性、高性能以及扩展性。
但是这样做也是有代价的,在 Swift 里,集合是个复杂的类型家族,它是由多个 protocol 形成的,因此当我们想深入其中一探究竟的时候,并不那么容易。
最简单也最常用的一个集合类型:Array。
创建一个 ArrayArray 表示一组有序(ordered)的数据集合,所谓有序,并不是指大小排序,而是指 Array 中的元素有先后的位置关系,稍后我们会看到,这个位置关系可以用来访问 Array 中的元素。在此之前,先来看了解如何定义 Array 对象。首先,我们可以通过下面三种方法定义一个空的 Array:
var array1: Array<Int> = Array<Int>() var array2: [Int] = [] var array3 = array2
在上面的代码中,前两种使用了 type annota ...
Swift 中 String
忘了 String 是字符数组在 Swift 里,String 已经彻底不再是一个集合类型。而是一个提供了从多个维度展现一个 Unicode 视图的类型。你可以得到它的多个 Characters,可以看到它的 UTF-8 / UTF-16 / Unicode scalar 值等等。
String 和 NSString 处理 Unicode 时的差异 unicode 长度是可变的,我们将看到 unicode 另外一个可变的特性,即组成同一个字符的 code unit 组合也是可变的。而区分 String 和 NSString 的一个重要方式,就是它们对 unicode 的这个特性的处理方式,是不同的。为了理解这个事情,我们从 unicode grapheme clusters 说起。
Unicode grapheme clusters 首先,我们定义一个字符串:
let cafe = "Caf\u {00e9}"
返回
Café
Swift 里,我们可以使用 \u {} 这样的方式使用 unicode scalar 定义 unicode 字符。
对于单词 Café 中的最后一个字符来说,它的 unico ...
Vapor 用于处理异步事件的非阻塞架构
Vapor 中使用 Future 和 Promise 几乎任何一个有可能带来请求延迟的操作,Vapor 都会采用 Future 来处理,例如:
返回渲染过的页面,会用 Future<View>;
返回 HTTP 状态码,会用 Future<HTTPStatus>;
返回 HTTP 请求,会用 Future<Response>;
在 Vapor 里,只要返回来自 Model 中的内容,它就一定是一个 Future<T>
修改 EpisodeVapor 中的做法。为了表示某个在未来会返回的值,我们要使用 Future<T > 来表示。例如,在未来会得到一个 Int 就是 Future<Int>,在未来会得到一个 String,就是 Future<String>,以此类推。
因此,对于上一节的 /episodes/id 这个 API,如果 Episode 对象是通过数据库查询而来,我们最先要修改的,是遵从 protocol Parameter 时实现的 resolveParameter,它返回的,应该是一个 Future<Episode?>,而不 ...
Jmeter 性能测试
启动 Jmeter
终端下,直接输入 jmeter 命令,启动 Jmeter
CLI 模式对于负载测试,您必须在此模式下运行 JMeter(不含 GUI),才能从中获得最佳结果。为此,请使用以下命令选项:
jmeter -n -t [脚本文件] -l [报告文件] -e -o [报告路径]
jmeter -n -t Script.jmx -Jconcurrent_number=50 -Jduration=120 -Jcycles=-1 -l report.jtl -e -o C:\Users\Test\
字段
说明
-n
这指定 JMeter 要在 cli 模式下运行
-t
[包含测试计划的 JMX 文件的名称]。
-l
记录测试结果的 jtl 文件名称
-j
[JMeter 运行日志文件的名称]。
-r
指定所有远程服务器中运行测试 (所有)
-R
[远程服务器列表] 在指定的远程服务器中运行测试(指定)
-g
生成测试报表(CSV)
-e
生成测试报表(HTML)
-o
生成测试报表(HTML) 文件夹不得存在或为空
字 ...
API 测试中 Github 工具
Api 测试工具 Paw
自动化工具: Apifox
Mock 框架 Java 框架: MocoNode.Js 框架: Yapi
抓包工具 Charles
Vapor 通过 URL 返回自定义类型
自定义参数类型首先,在 Sources/App/Models 中,我们新建一个文件 Episode.swift,在这里,定义一个类型 Episode,表示数据库中的视频对象:
struct Episode {var id: Int var desc: String init (id: String) { if let eid = Int (id) { self.id = eid self.desc = "Description of episode \(self.id)" } else { self.id = 0 self.desc = "Invalid episode" } }}
定义路由 /routers
router.get ("episodes", Epi ...
设计 HTTP API 的最佳实践
HTTP 请求方法当客户端向服务器发起 HTTP 请求的时候,请求的 Header 中会有一个字段叫 Request Method,也叫做 HTTP verb,不同的 HTTP verbs 表达了不同的 HTTP 请求意图,而我们常用的,有下面这几种:
GET:表示客户端需要请求服务器的某个资源。简单来说,就是当我们需要给用户显示某些保存在服务器上的内容时,都会向服务器发起 GET 请求
POST:表示向服务器提交数据,例如用户注册时填写的信息、登录时填写的用户名 / 密码等。简单来说,就是当我们需要根据用户输入在服务器上创建新记录的时候,都会向服务器发起 POST 请求
PUT:表示根据用户提供的内容,修改服务器上的特定资源;PUT 请求修改要求提供的数据是全量的,例如当我们修改某条数据库记录时,使用 PUT 请求,应该包含这条记录的所有字段,这种修改更像是覆盖
PATCH:使用 PATCH 请求提交的内容则是有针对性的,只要提供需要的部分就好了
DELETE: 请求服务器删除指定的页面
CONNECT: HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS: 允许客户端查看 ...