Mac 系统 - 为用户添加系统目录读写操作权限
变更记录
序号
录入时间
录入人
备注
1
2017-10-24
Alfred Jiang
-
方案名称Mac 系统 - 为用户添加系统目录读写操作权限
关键字Mac 系统 \ MAC OS \ 权限
需求场景
需要对指定用户授权系统目录读写操作权限时
通过 sudo 命令仍然提示部分系统目录权限失败时
参考链接
StackExchange - How do I use chmod on a Mac to make new files inherit parent directory permissions?(推荐)
详细内容如果出现使用 sudo 命令后依然出现部分系统目录权限错误问题,可以尝试下面的命令
yourusername : 此处改为你的用户名
/path/to/folder : 此处改为权限失败根目录
1$ chmod +a "user:yourusername allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,r ...
Mac 系统 - 解决 SIP 机制导致的 OSError 权限问题
变更记录
序号
录入时间
录入人
备注
1
2017-10-24
Alfred Jiang
-
方案名称Mac 系统 - 解决 SIP 机制导致的 OSError 权限问题
关键字Mac 系统 \ SIP \ 权限
需求场景
由于 El Capitan 引入了 SIP 机制(System Integrity Protection),默认下系统启用 SIP 系统完整性保护机制,无论是对于硬盘还是运行时的进程限制对系统目录的写操作
参考链接
xiaorui.cc - 解决mac osx下pip安装ipython权限的问题(推荐)
详细内容如果在 Mac 下碰到 OSError: [Errno 1] Operation not permitted: 的问题,就算用 sudo 也无法解决,可以考虑通过禁用 SIP 来解决问题
具体步骤如下:
重启电脑,按住 Command+R (直到出现苹果标志)进入 Recovery Mode (恢复模式)
左上角菜单里找到 实用工具 -> 终端
输入 csrutil disable 回车
重启 Mac 即可
如果想重新启动 SIP ...
Node.js - Mac 系统中使用 nvm 管理不同版本的 node 与 npm
变更记录
序号
录入时间
录入人
备注
1
2017-11-07
Alfred Jiang
-
方案名称Node.js - Mac 系统中使用 nvm 管理不同版本的 node 与 npm
关键字Node.js \ nvm \ node \ npm
需求场景
React Native 跨平台开发环境配置
参考链接
猫哥_kaiye | 编程笔记 - 使用 nvm 管理不同版本的 node 与 npm(推荐)
详细内容卸载通过 brew 安装的 nvm1$ brew uninstall nvm
卸载已安装到全局的 node/npm1234567$ npm ls -g --depth=0 #查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装$ sudo rm -rf /usr/local/lib/node_modules #删除全局 node_modules 目录$ sudo rm /usr/local/bin/node #删除 node$ cd /usr/local/bin && ls -l | ...
Node.js - Mac 系统中使用 nrm 管理 npm 源地址
变更记录
序号
录入时间
录入人
备注
1
2017-11-07
Alfred Jiang
-
方案名称Node.js - Mac 系统中使用 nrm 管理 npm 源地址
关键字Node.js \ nrm \ npm
需求场景
需要 npm 多个源切换时
参考链接
cnodejs - nrm – NPM registry 管理工具(推荐)
详细内容安装1$ npm install -g nrm
使用列出全部源地址(带 * 表示为当前所用源)
12345678$ nrm ls* npm ---- https://registry.npmjs.org/ cnpm --- http://r.cnpmjs.org/ eu ----- http://registry.npmjs.eu/ au ----- http://registry.npmjs.org.au/ sl ----- http://npm.strongloop.com/ nj ----- https://registry.nodejitsu.com/
切换源
123$ nrm use cnpm / ...
内存管理 - 获取可用和已用的内存大小
变更记录
序号
录入时间
录入人
备注
1
2017-06-27
Alfred Jiang
-
方案名称内存管理 - 获取可用和已用的内存大小
关键字内存管理 \ 内存使用情况 \ 可用内存 \ 已用内存 \ Memory
需求场景
需要获取生产环境低内存警告时的内存使用情况
参考链接
《高性能 iOS 应用开发》
详细内容跟踪可用的和已用的内存
12345678910111213141516171819202122232425#import <mach/mach.h>vm_size_t getUsedMemory() { task_basic_info_data_t info; mach_msg_type_number_t size = sizeof(info); kern_return_t kerr = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size); if (kerr == KERN_SUCCESS) ...
能耗 - 电池电量的代码感知
变更记录
序号
录入时间
录入人
备注
1
2017-06-28
Alfred Jiang
-
方案名称能耗 - 电池电量的代码感知
关键字能耗 \ 电池 \ 电量 \ 代码感知
需求场景
需要考虑电池的电量以决定是否执行资源密集消耗型操作时
参考链接
《高性能 iOS 应用开发》
详细内容使用电量级别和充电状态进行条件处理
12345678910111213141516-(BOOL)shouldProceedWithMinLevel:(int)minLevel{ UIDevice *device = [UIDevice currentDevice]; device.batteryMonitoringEnabled = YES; UIDeviceBatteryState state = device.batteryState; if(state == UIDeviceBatteryStateCharging || state == UIDeviceBatteryStateFull) { return YES; // 在充电或电池已经充满的情况下, ...
能耗 - 检测应用 CPU 的使用率
变更记录
序号
录入时间
录入人
备注
1
2017-06-28
Alfred Jiang
-
方案名称能耗 - 检测应用 CPU 的使用率
关键字能耗 \ CPU \ 使用率
需求场景
用于判断某些逻辑是否为资源密集型逻辑时
参考链接
《高性能 iOS 应用开发》
详细内容通过以下函数可以获得应用对 CPU 的利用率
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354//Adapted from: http://stackoverflow.com/questions/8223348/ios-get-cpu-usage-from-application#import <mach/mach.h>#import <assert.h>-(float)appCPUUsage{ kern_return_t kr; task_info_data_t tinfo; mach_msg_type_numb ...
并发编程 - 线程安全且高吞吐量的缓存模型
变更记录
序号
录入时间
录入人
备注
1
2017-06-29
Alfred Jiang
-
方案名称并发编程 - 线程安全且高吞吐量的缓存模型
关键字并发编程 \ 多线程 \ 线程安全 \ 缓存
需求场景
线程安全且高吞吐量的缓存模型
将读写锁应用于并发读写
参考链接
《高性能 iOS 应用开发》
详细内容实现一个多线程场景下可以并行地读取数据,但是修改数据时通过互斥锁保证安全的缓存模型。
HPCache.h
123456789101112131415161718192021//// HPCache.h// HighPerformance//// Created by Gaurav Vaish on 12/14/14.// Copyright (c) 2014 Gaurav Vaish. All rights reserved.//#import <Foundation/Foundation.h>@interface HPCache : NSObject+(HPCache *)sharedInstance;-(id)objectForKey:( ...
网络 - 使用 Protocol Buffers 数据格式进行网络数据传输
变更记录
序号
录入时间
录入人
备注
1
2017-01-06
Alfred Jiang
-
方案名称网络 - 使用 Protocol Buffers 数据格式进行网络数据传输
关键字网络 \ Protocol Buffers \ 二进制格式 \ Protobuf
需求场景
用于分布式应用之间的数据通信或者异构环境下的数据交换
参考链接
《高性能 iOS 应用开发》
简书 - ProtocolBuffer for Objective-C 运行环境配置及使用(推荐)
GitHub - google/protobuf
Google Developers - Protocol Buffers
开源中国 - 使用 Protocol Buffers 代替 JSON 的五个原因
详细内容Protocol Buffers(简称 Protobuf 或 PB)是由 Google 推出的一种数据交换格式,它独立于语言,独立于平台。Google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。可以把它用于分布式应用之间的 ...
测试 - 生成测试代码覆盖率
变更记录
序号
录入时间
录入人
备注
1
2017-07-06
Alfred Jiang
-
方案名称测试 - 生成测试代码覆盖率
关键字测试 \ 代码覆盖率
需求场景
生成自动化单元测试和功能测试的代码覆盖率
参考链接
《高性能 iOS 应用开发》
TesterHome - iOS 测试 iOS (Object-C) 非单元测试状态下代码覆盖率获取尝鲜(推荐)
NSBogan - Code Coverage for iOS (Xcode 7)
GitHub - mgrebenets/MixAndMatchTests
详细内容生成代码覆盖率文件可以直接经过苹果的 LLVM 代码生成器产生,并且可以在 Xcode 中修改选项。
1. 集成测试覆盖率报告
在 Xcode 中启用覆盖率数据收集:通过菜单进入 Product -> Scheme -> Edit Scheme,在 scheme editor 对话框中,选择左侧的 Test 项后选中 Gather coverage data,之后点击 Close 按钮保存设置。
运行测试用例
打开 ...