跳至主要内容

博文

目前显示的是 十月, 2018的博文

javascript中不易分清的slice,splice和split三个函数

原文链接 每每见到这三个函数,我都会很懵,一定要到网上搜搜;今天,恰巧又见到了它们,所以想必是时候为它们做个笔记啦 1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本;参数start是截取的开始数组索引,end参数等于你要取的最后一个字符的位置值加上1(可选) //如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾 var a=[1,2,3,4,5,6]; var b=a.slice(0,3); //[1,2,3] var c=a.slice(3); //[4,5,6] //如果两个参数中的任何一个是负数,array.length会和它们相加,试图让它们成为非负数,举例说明: //当只传入一个参数,且是负数时,length会与参数相加,然后再截取 var a=[1,2,3,4,5,6]; var b=a.slice(-1); //[6] //当只传入一个参数,是负数时,并且参数的绝对值大于数组length时,会截取整个数组 var a=[1,2,3,4,5,6]; var b=a.slice(-6); //[1,2,3,4,5,6] var c=a.slice(-8); //[1,2,3,4,5,6] //当传入两个参数一正一负时,length也会先于负数相加后,再截取 var a=[1,2,3,4,5,6]; var b=a.slice(2,-3); //[3] //当传入一个参数,大于length时,将返回一个空数组 var a=[1,2,3,4,5,6]; var b=a.slice(6);  //[] 2.slice(字符串) 用法:string.slice(start,end) 解释:slice方法复制string的一部分来构造一个新的字符串,用法与参数匀和数组的slice方法一样;end参数等于你要取的最后一个字符的位置值加上1 //举个简单的例子 var a="i am a boy"; var b=a.slice(0,6); //"i am a" 3.splice(数组) 用法:array.splice(start,deleteCount,ite...

iOS侧滑卡死解决方法

原文链接 参考链接 iOS侧滑卡死现象原因分析 现象重现 interactivePopGestureRecognizer是在iOS7后为UINavigationController新增的一个手势属性,使原来的pop返回可以通过滑动手势实现,从而方便了有单手操作习惯的用户。但是有个问题,苹果一直没有解决(至少iOS10.1之前还没有解决,可能苹果并不认为这是个问题吧):如果我们自定义了UINavigationController的leftBarButtonItem(一般是返回按钮),则在UINavigationController的rootViewController上滑动返回时,会出现界面卡死的情况。 原因分析 原因其实很简单,在UINavigationController的rootViewController上滑动时也响应了滑动返回手势,但此时,我们自定义了Nav的返回按钮,系统便不知道怎么处理了,于是乎...(个人分析原因) 解决方法: 知道了原因,解决起来就很方便了。既然nav的rootViewController不知道如何响应滑动返回手势,那我们干脆把rootViewController的滑动返回手势屏蔽掉不就行了?如果我们想屏蔽掉Nav的rootViewController的滑动返回手势,那就需要我们自定义一个Nav,在Nav的手势代理方法gestureRecognizerShouldBegin中禁掉rootViewController的滑动返回手势。 主要代码如下: @implementation MyNavigationController - ( void )viewDidLoad { [ super viewDidLoad]; // Do any additional setup after loading the view. __ weak typeof ( self ) weakself = self ; if ([ self respondsToSelector: @selector (interactivePopGestureRecognizer)]) { self .interactivePopGestureRecognizer.deleg...

Xcode 10: unable to attach DB error

原文链接 Okay, seems like I managed to solve it. I was having  /bin/sh  script in  Build Phases  that was trying to build fat static library. In the script, I had  OBJROOT  path set like this: OBJROOT = "${OBJROOT}" Seems like Xcode 10 and new build system changed some paths on the way and this line was the source of the issue. It needs to be adjusted to: OBJROOT = "${OBJROOT}/DependentBuilds" After that,  xcodebuild  manages to build this target without issues with new build system introduced in Xcode 10.

ocserv + Let's Encrypt + 证书登录

参考链接: http://blog.dazzyd.org/blog/ocserv-letsencrypt-certificate/ https://nova.moe/deploy-openconnect-ocserv-with-letsencrypt/ https://ipbgp.com/2017/08/29/cisco-anyconnect/ 简要原理 以下包含口胡,欢迎指正。 TLS/SSL 证书认证 TLS/SSL 协议的允许连接双方都对端做身份认证。 对服务器端认证一般采用证书认证的,对客户端认证一般采用用户名+密码的认证。 由于每次都输入密码较为繁琐,因此对客户端亦采用证书认证的方式能更方便。 Let’s Encrypt 签发流程 (WebRoot) 客户端生成验证文件,存放到  WEBROOT/.well-known/acme-challenge/ 客户端告知 Let’s Encrypt 服务器开始验证 服务器读取  http://DOMAIN/.well-known/acme-challenge/  进行验证 客户端向服务器查询验证是否成功 若验证成功,向服务器获取证书 其中 1、3 为可能出现问题的地方,若获取证书失败,建议优先检查此部分。 如:WEBROOT 不可被 letsencrypt 客户端写入;Let’s Encrypt 服务器无法解析 DOMAIN 的 DNS;DOMAIN 对应的 IP 非 Let’s Encrypt 客户端写入验证文件的主机等诸多问题。 转注:apache的ssl服务会默认占用443端口,可以在 /etc/httpd/conf.d/ssl.conf中进行修改,避免与ocserv端口相同。 服务器证书 自建 CA 并签发服务器证书固然是可行方案,但需要在每台设备上都信任该自建 CA,较为麻烦且不安全。 因此我采用 Let’s Encrypt 来获取合法的服务器证书。 以下大部分命令需要 root 权限,但可以通过配置目录的读写权限绕过。 建议同时阅读  Let’s Encrypt User Guide 。 事前准备 将域名 DOMAIN 的 A/AAAA 记录指向当前主机。 配置 HTTP 服务...