升级依赖的一些小感受

最近使用 iMac 进行依赖升级的工作,感觉比以前用 XPS 效率高很多。

今年陆续把公司主力项目的依赖升级了一下。一部分在 XPS13 上完成,一部分在 iMac 上完成,这里记一下感受。

配置对比

XPS 13

购于2016年11月,基本算是比较新的机器。

  • Intel i7-7500 2.7G 2核
  • 8G
  • Windows 10 家庭中文版 + WSL

iMac retina 27 2015款

购于2015年,当时打算用得久一些,所以升级了 CPU。

  • Intel i7 4G 4核
  • 8G
  • 独显
  • Mac OS

使用感受

同样使用 yarn add 安装依赖,XPS 明显慢于 iMac,体现在两点:

  1. XPS 需要更新 1w+ 的包,iMac 只需要更新 1k+
  2. 更新完毕后,XPS 需要数分钟让 WebStorm 重建索引

所以使用 XPS 的效率远低于使用 iMac,大约只有 20%。

原因

其它方面则没有这么明显的差距。可能因为 SSD 的关系,在其它对硬盘有要求的地方,XPS 表现比较理想,比如开关机、启动游戏等。我初步估计是 WSL 的 io 比较低效,因为 npm run dev 启动的时间比较慢,但是一旦启动之后,编译时间可以接受。而且之前 rm -rf 的速度也非常慢,明显慢于使用 Windows 资源管理器。

原来计划趁着 618 或者双 11 换一台新版高配 XPS 13,现在要再考虑一下。不过好像 MBP 2017 也不咋样……

或者想办法装个 Linux 系统跑一跑试试看,估计会比现在好一些。

Yosemite坑真多

Mac OS 10.10用作开发机可能有诸多问题,此文将我遇到的问题及解决方案收集于此。

本着顶配解千愁的指导原则,入职2年半之后,借着南迁广州的机会,我向公司申请购置一批新机器。同配置笔记本性能远远落后于台式机,所以我自然而然的选择了顶配iMac 27作为主力开发机。升级CPU和内存的版本没有现货,等机器送到,大约是10月13日。

关注IT产品尤其是苹果产品的同学可能记得,16日苹果开发布会,推出视网膜屏的iMac,连CPU带显卡甚至屏幕都有大幅升级……顶配的日子只持续了3天……哭昏在厕所……

这还不是最惨的。更早的时候,苹果发布了Mac OS 10.10优胜美地(Yosemite),直接安装在新机器里,我这台自然也是。新系统有诸多纸面所载的改变,我就不多说了,跟本文关系不大;我只说跟开发相关的这部分。

403错误

升级后的Mac OS集成Apache 2.4.9,里面默认启用了authz模块,于是增加虚拟主机的时候,<DIERECTORY>配置里面必须写成

Require all granted

不然就会报403错误。我以前处理403都是暴力改权限,这次恨不得把/的权限都改了都没用,后来终于google到解决方案。

不能使用Homebrew安装的php,以及不能用Homebrew升级php

我有新版本癖,每周三次更新——使用开源产品的好处就是绝对不怕找不到更新。当我上周例行更新,发现PHP 5.5.19安装失败,报Cannot find OpenSSL's <evp>,因为项目紧急所以我只好先不管它。后面配置apache的时候,发现随Homebrew安装的新版libphp5.so不能用,apachectl -t 检查通不过,只好使用系统自带的5.5.14版。

今天又google了下,终于找到解决方案。原因没搞太明白,总之是升级了之后 /usr/include 有点问题,需要重新链接一下。正确的解决方案是

  1. 安装XCode最新版
  2. 安装XCode命令行工具(CLT)最新版
  3. 试一下,不行的话重新链接一下 /usr/include
    sudo ln -s /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include /usr/include
  4. 然后 `brew upgrade` 就可以了

这样搞了之后新的5.5.19的libphp5.so也可以使用了。

丢失PNG支持

如果只是版本低一点,其实是可以忍的。结果Mac OS团队不知道怎么想的,竟然把PHP中的PNG支持去掉了,导致我在本地开发的时候验证码出不来。如前文所述,这次升级本来就有诸多问题,验证码出不来我的第一想法肯定不是看PNG支持。而且,我们一直在用的验证码生成程序中,将生成函数写成 ImagePNG,竟然能运行,也是让我很奇怪……

换用Homebrew安装的5.5.19 libphp5.so之后,问题解决。


暂时遇到这么多问题,日后补充。