ld: library not found for -lgcc_s.10.5 在 Mac 下 NPM 编译安装的常见错误

情况:通过 Node 的 NPM 编译安装某些模块的时候报错:

ld: library not found for -lgcc_s.10.5  
clang: error: linker command failed with exit code 1 (use -v to see invocation)  

解决方案:
到 AppStore 中安装 XCode 7。装完以后,打开 XCode 并且接受 license 协议。更新之后,node-gyp 编译就没有这个问题了。

mac 网络模拟工具

先说需求,为了测试手机应用在各种网络下的情况,所以准备找一个模拟各种网络情况的工具。

其他平台的模拟工具: Linux 平台:Facebook 的开源移动网络测试工具 Augmented Traffic Control(ATC)
Windows 平台:微软 visual studio 自带的网络模拟工具 Network Emulator for Windows Toolkit (NEWT)

因为工作环境的问题,这里讨论 mac 下 xcode 自带的 Network Link Conditioner(NLC)

安装

NLC 是 xcode 的插件,可以在 “Ha[......]

阅读全文

mac osx 应用跨屏幕

一般情况下 mac osx 中一个应用程序只能在一个屏幕上显示,作为从 windows 转过来的用户有点不太习惯,Goolge 后发现还是有解决方案的(虽然不是很好用)。

打开 Mac 的系统偏好设置 -> Mission Control -> 勾掉 显示器具有单独的 Spaces (Displays have separate Spaces)然后注销一下,这样一个应用的窗口就可以跨多个屏显示了。

详细见 http://arstechnica.com/apple/2013/10/os-x-10-9/11/

Github rebase

首先前提是是在 github 上参与多人的项目。因为每个人写的提交的时间不一致,互相之间的提交可能参差不齐,不方便阅读。
所以为一个多人项目写好某个功能点的时候,或者是你 fork 了某个项目想要 PR 给原项目的时候,最好能够把提交的记录都各自重排一下,把各自一块的提交排列到一起,保持历史记录的可读性。

为了做到这个,在开发新功能的时候最好先建一个新的分支。在分支上写好之后(这个时间跨度不一定),先把原项目上最新的代码拉去到本地。然后再切换到你开发新功能的分支进行 rebase。

git checkout master # 确保你当前在 master 中
git remo[......]

阅读全文