Cocoapods error
* error: Unable to find a specification for xxxxxx * solution: Execute sudo rm -fr ~/.cocoapods/repos/master because it'll remove all the bogus and corrupted repos that you have in your computer to give it a chance to repopulate after you redo pod setup, which'll reinstate you…
翻墙的基本原理
前言 目前在国内基本访问不了google站点,相应的youtube、ins也一样。所以如果不翻墙很多工作都没办法正常做。所以在学习翻墙的同时也顺便了解了下目前限制网络访问的一些基本知识。 网络限制和监控应该说大家都有体会。比如很多公司都会限制一些网站的访问,比如网盘、视屏网站。有时也会对你访问的内容进行监控。还有一些公共WIFI,可能限制你只能访问80端口。在比如在国内无法访问google,facebook等网站。要想绕过这些限制,必须先知道他们是如何限制的。 本文主要是从技术角度来了解的网络限制方式和应对方式。并不做任何翻墙方式的推荐和指导。对于网络的知识,还是停留在上过网络课 的水平,文章内容也都是自己了解后总结的。可能会有错误和遗漏。会定期更新。 DNS污染和劫持 以下解释来之百度百科: 某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址。 某些国家或地区出于某些目的为了防止某网站被访问,而且其又掌握部分国际DNS根目录服务器或镜像,也会利用此方法进行屏蔽。 目前我们访问网站主要都是通过域名…
xcode8上架坑
今天准备上架一个APP,用xocde还是loder上传ipa包到APP Store都显示成功,但是在构建版本中始终没有显示,一片空白,无任何提示,蛋疼无比。后来Google了半天,试了个种办法,还是苹果在iOS10以后强制加入用户隐私设置,要在info.plist中添加各种隐私选项才能通过构建,你给个提示也行啊,坑!!! <key>NSAppleMusicUsageDescription</key> <string>App需要您的同意,才能访问媒体资料库</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>App需要您的同意,才能访问蓝牙</string> <key>NSCalendarsUsageDescription</key&…
WEBSOCKET和SOCKET
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 WebSocket 则不同,它是一个完整的应用层协议,包含一套标准的 API 。可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的一个改良设计。在以前 HTTP 协议中所谓的 keep-alive connection 是指在一次 TCP 连接中完成多个 HTTP 请求,但是对每个请求仍然要单独发 header;所谓的 polling 是指从客户端(一般是浏览器)不断主动的向服务器发 HTTP 请求查询是否有新数据。这两种模式有一个共同的缺点,就是除了真正的数据部分外,服务器和客户端还要大量交换 HTTP…
iOS-Crash分析
iOS中的crash分为两种,一种是Mach crash和Unix信号方式,两种方式都能捕获异常,但一般采用2者结合的方式来捕获,如著名框架plcrashreporter。 在iOS系统中NSException属于应用级的异常,系统只有部分捕获并显示在console中,比如有些carsh崩溃在main函数或者底部没有奔溃回溯栈等信息,这些异常系统并没有捕获处理,我们可以重写系统的方法来捕获这些异常。 一、捕获iOS Crash 1、设置全局断点 xcode中左下角加号添加全局断点,崩溃能定位到具体代码行,但仅仅局限于开发阶段 2、Mach异常 和 Unix信号 * iOS Crash发生时,先产生Mach异常(最底层的内核级异常),然后Mach异常在host层被ux_exception转换为相应的Unix信号,并通过threadsignal将信号投递到出错的线程。 * 在捕获Crash事件时,优选Mach异常。因为Mach异常处理会先于Unix信号处理发生,如果Mach异常的handler让程序exi…
GIT
本地仓库 * 文件夹中创建创库: git init * 配置用户名邮箱: git config "user.name" mark git config "user.email" x_mark@icloud.com 此只配置改仓库的用户名和邮箱,若要该整个系统的git配置加--global: git config --global "user.name" mark git config --global ··· * 提交代码,需要先将工作区代码文件提交到暂缓区,再commit git add . git commit -m "提交代码" * 为指令设置别名,方便书写: git config…