原文转载自「刘悦的技术博客」https://v3u.cn/a_id_187

就像大航海时代里突然诞生的航空母舰一样,苹果把玩着手心里远超时代的M1芯片,微笑着对Intel说:“不好意思,虽然你也玩桌面芯片,但是,从今天开始,游戏就已经结束了,X86?还是省省吧。”

十五年前,iPhone横空出世,乔布斯告诉世人什么才叫做真正的智能手机,十年前,A4处理器粉墨出场,iPhone瞬间猛虎添翼,性能这两个字从此没有友商敢在苹果面前提及,iPad更是在业界呼风唤雨,几乎把整个平板市场都收入囊中,在人们的脑海中,Pad就是iPad的代名词,安卓平板?不存在的。今时今日,Apple Silicon华丽登台,不必说M1堪称恐怖到爆炸的性能,也不必说十个小时以上的超长续航以及丝滑无迟滞的FCPX极速剪辑体验,单是通过Rosetta 2 虚拟运行X86应用,就已经足以让人感到惊艳了。然而,这些福利只是苹果对于产品级用户的馈赠,作为一名开发者,而且是全栈(全干)开发,M1能否应对繁复的开发环境?就像一位研发同事说的那样:“Hi,哥儿们,你不会花一万大洋买了个ipad+秒控键盘吧?这智商税有点贵啊”。

首先是Python3的开发环境,python官网已经释出适配M1芯片的3.9版本,https://www.python.org/downloads/release/python-392/ ,但其实目前生态和市场占有率最高的还是3.7,笔者是通过迁移助理将老mac book pro里的开发环境(x86)直接迁移过来的,也就是迁移了原电脑的python3.7.4,令人意外的是,通过Rosetta 2,大部分的基础库都可以使用,除了首次运行稍显迟滞以外:

liuyue:~ liuyue$ python3
Python 3.7.4 (v3.7.4:e09359112e, Jul  8 2019, 14:54:52)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>> import cv2
>>> import numpy
>>> import matplotlib
>>> import nltk
>>> import ssl
>>> from nltk.stem.lancaster import LancasterStemmer

但是一些深度学习框架比如TensorFlow就不行了,解决方案还是得从官网下载适配M1的3.9版本,然后再下载支持M1芯片的Tensorflow2.4,下载链接:https://link.zhihu.com/?target=https%3A//www.cyberlight.xyz/static/file/download_and_install.sh,换句话说,想用TensorFlow训练模型你就得升级python版本,可是很多TensorFlow项目都是和Web应用结合使用的,如果单独为了TensorFlow升级python,就需要将原来的项目分开部署,接口也得重构,尤其一些“祖传项目”就更不好弄了,这无疑提高了开发者的开发成本。

再来说说测试,自动化测试工具selenium是我们经常使用的工具之一,使用场景非常广泛,但是在M1系统里面我们通过Rosetta 2虚拟的python3.7能否控制arm64版本的chrome呢?答案是可以的,因为chromedriver已经对M1芯片进行了适配,下载驱动:http://npm.taobao.org/mirrors/chromedriver/88.0.4324.96/ 注意要选择m1版本的驱动,随后解压,将chromedriver文件拷贝到系统目录中:

sudo mv chromedriver /usr/local/bin

随后启动浏览器:

from selenium import webdriver
import time  #selenium 截图
driver = webdriver.Chrome()
driver.get('https://v3u.cn')
time.sleep(3)
driver.close()

问题并不大,所以如果单纯用M1 Mac用来写自动化测试脚本或者爬虫不会有太大压力,但是,如果涉及科学计算的结果测试,可能就得折腾一下了。

再聊聊虚拟机,虚拟机无论是测试岗还是运维岗基本都会用到,因为有些应用在Win和Mac系统中展示出的效果不尽相同,目前虚拟机两大巨头Vmware和Parallels都在加紧适配,Parallels领先一步,首先释出了兼容M1芯片的测试版虚拟机,不过需要先注册获取注册码:https://b2b.parallels.com/apple-silicon

随后在该页面下载安装包进行安装即可,需要注意的一点是,注册的时候一定要记录一下注册码,否则安装成功后没有码进行激活就尴尬了。

与此同时微软也适时的发布了基于arm内核的win10测试版镜像,下载地址:https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewARM64 当然了,因为一些众所周知的学术问题,导致下载速度不尽如人意,笔者已经将安装包和镜像上传网盘,在文章底部会贴出来。

安装好Parallels以后,将arm版win10镜像导入即可安装,只需要5分钟左右就可以安装成功:

虽然是测试版,但是整体上运行起来非常行云流水,别忘了在系统内添加中文默认语言包:

在M1 Mac中玩虚拟机,几乎没有迟滞感,顺滑的令人咋舌,风扇纹丝不动,且能耗也并没有显著增加,续航也没有因为虚拟机的出现而减少太多,这是M1非常惊艳的一点。

想要用Mac做开发,包管理工具Homebrew是无法绕过的一环,所以如果你是通过迁移助理把老的x86架构的直接迁移到M1的mac中,那么最好别用了,会出很多问题,解决方案就是安装 arm版的Homebrew

执行安装命令:

/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"

基于arm的Homebrew统一安装在系统的/opt/homebrew目录,主要是为了和老版的x86区别开。

随后添加环境变量:

echo export PATH=/opt/homebrew/bin:$PATH >> ~/.bash_profile
source ~/.bash_profile

接着执行:

liuyue:~ liuyue$ brew update
Already up-to-date.
liuyue:~ liuyue$

如果返回Already up-to-date.就没问题了,基本上目前Homebrew大概有7成左右的软件支持M1芯片,具体适配列表可以参照:https://github.com/Homebrew/brew/issues/7857

可以看到,像数据库如mysql、redis都进行了适配,mysql还有一些小bug,介意的同学可以考虑Rosetta,下面我们来看看用arm版的Homebrew来安装reids的流程:

安装命令:

brew install redis

一般brew会获取最新稳定版,安装成功后,查看软件列表:

liuyue:~ liuyue$ brew list
openssl@1.1    redis
liuyue:~ liuyue$

此时启动服务:

liuyue:bin liuyue$ redis-server
36148:C 24 Feb 2021 21:13:48.673 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
36148:C 24 Feb 2021 21:13:48.673 # Redis version=6.2.0, bits=64, commit=00000000, modified=0, pid=36148, just started
36148:C 24 Feb 2021 21:13:48.673 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
36148:M 24 Feb 2021 21:13:48.673 * Increased maximum number of open files to 10032 (it was originally set to 256).
36148:M 24 Feb 2021 21:13:48.673 * monotonic clock: POSIX clock_gettime  _._                                                    _.-``__ ''-._                                               _.-``    `.  `_.  ''-._           Redis 6.2.0 (00000000/0) 64 bit  .-`` .-```.  ```\/    _.,_ ''-._                                     (    '      ,       .-`  | `,    )     Running in standalone mode  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379  |    `-._   `._    /     _.-'    |     PID: 36148  `-._    `-._  `-./  _.-'    _.-'                                     |`-._`-._    `-.__.-'    _.-'_.-'|                                    |    `-._`-._        _.-'_.-'    |           http://redis.io          `-._    `-._`-.__.-'_.-'    _.-'                                     |`-._`-._    `-.__.-'    _.-'_.-'|                                    |    `-._`-._        _.-'_.-'    |                                    `-._    `-._`-.__.-'_.-'    _.-'                                     `-._    `-.__.-'    _.-'                                         `-._        _.-'                                             `-.__.-'

然后开启另一个命令行连接服务:

liuyue:~ liuyue$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

可以看到和x86的brew用起来没有区别,只不过上面的软件或多或少有些bug,用起来要小心。

如果你觉得arm版的brew速度过慢,可以单独设置国内源:

git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git  git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git  git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git  echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

中科大的镜像稍微靠谱一点。

有同学说,那还有三成的软件怎么搞?另外看起来arm的brew并不打算适配老版本软件,比如python3.7,其实在M1 的mac系统也可以装一版x86的brew,安装 x86 的 Homebrew:

arch -x86_64 /bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"

装好之后,它还是在原来的/usr/local/bin/brew里面,这样就和/opt/homebrew/bin/brew 区分开了

执行命令:

liuyue:~ liuyue$ /usr/local/bin/brew list
autoconf    gmp     libtool     openssl@1.1    siege
automake    icu4c       libyaml     perl        sqlite
boost       isl     lua     pkg-config  thrift
coreutils   libevent    mkcert      python@3.8 trash
gcc     libgpg-error    mpfr        readline    xz
gdbm        libksba     mtr     redis       yarn
gettext     libmpc      node        ruby        zlib

可以看到这些都是我从老的x86电脑中迁移过来的软件,大部分都用不了,比如redis,而基于arm的brew安装的新redis是可以使用的:

liuyue:~ liuyue$ /opt/homebrew/bin/brew list
openssl@1.1    redis

所以用M1 mac做开发,就有点分列,新软件包记住用/opt/homebrew/bin/brew,老的用:/usr/local/bin/brew

接着来看看Docker,Docker官方对于M1的适配还是很重视的,早些时候放出来一个测试版客户端:https://docs.docker.com/docker-for-mac/apple-m1/

不仅可以拉取arm版的镜像,也可以操作Kubernetes,对于Kubernetes不熟悉的同学可以参照这篇文章:一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群。

不过令人遗憾的是,Docker Hub 支持 arm 版本的镜像并不多,大抵在x86镜像的三、四成左右,但是可以看出来各大厂商对于M1都是比较看重的,基本上官方都有适配的消息流出。

对于其他的语言来说,比如 go lang、ruby、以及php等,都有一个和python一样的通病,就是老版本不支持arm内核,只适配了最近的一个或者两个版本,这样也导致如果你换电脑的话,就得考虑向下兼容性问题。

对于一些常用的开发软件,比如vscode 和 sublime 3 都可以正常运行,php套件xampp运行无障碍,版本控制客户端SourceTree、数据库客户端Navicat、微信、QQ、SSH客户端iTerm 4以及Ftp客户端FileZilla都可以正常运行,前端微信小程序开发工具还是会有几率闪退,腾讯一开始对big sur就适配的不好,M1就更别提了。

值得一提的是,设计软件Photoshop最新版2021暂时还不支持M1芯片,只能凑合先用2019版的,与之形成对比的就是FCPX10.5的完美表现,看来还是亲儿子给力,Adobe还得加把劲了。

综上,如果您是一个初学者,只是想学习一些语言的基础语法,没打算写一些复杂工业级项目,可以考虑入手M1,它将会是您入门的好帮手,但是如果您在业内已经混迹多年,经常编译一些复杂代码、各种库,甚至手里还有一些“祖传代码”项目在维护,那么x86的Mac可能还得陪您一两年。

最后,上面提到的适配M1芯片的安装包和镜像请移步:

链接: https://pan.baidu.com/s/12d7fHl_ZYyx4Xk-v0R0N_g 密码: 1fdc 需要的同学自行下载

结语:有时候,当我们称赞一项技术的时候,我们会称其为这样或者那样的行业标杆、教科书之类,但是对于M1的Mac book来说,它好像已经超越了所谓的标杆,而成为了跨越时代的不朽经典。苹果作为业内完美的六边形战士,还依然在探索,依然没有裹足不前,继续探索新的道路,继续钻研可行性,这是它带给我们的启示,然而,在2021年的这个春天里,面对开发者,M1芯片有点像悲情的俄尔普斯,它能用动人的绕梁琴声打动开发者们,却在最后一秒钟忍不住回眸,断送挽救爱妻欧莉蒂克的最后机会,很明显,它已经足够努力,但是还差那么一点点,就差一点了,但是我相信,神明早已在M1的命格中写下四个字:注定辉煌。

原文转载自「刘悦的技术博客」 https://v3u.cn/a_id_187

无意苦争春,一任群芳妒!M1 Mac book(Apple Silicon)能否支撑全栈工程师的日常?(Python3/虚拟机/Docker/Redis)相关推荐

  1. 所有受限制的应用程序包_您需要了解的有关Mac的Apple新款M1芯片的所有信息

    苹果硅M1芯片 苹果公司首先在WWDC上详细说明了其将Mac系列产品从英特尔转移回英特尔的计划.Mac自2006年以来一直使用Intel处理器,但是向Apple Silicon的过渡意味着Mac将使用 ...

  2. M1 Mac无法安装达芬奇17,装载m1芯片的mac如何安装达芬奇17!

    达芬奇调色软件DaVinci Resolve Studio 17是Blackmagic Design 旗下一款著名的调色软件,也是世界上唯一一款将专业8K编辑,色彩校正,视觉效果和音频后期制作功能集于 ...

  3. M1 Mac无法安装达芬奇17,怎么办?

    达芬奇调色软件DaVinci Resolve Studio 17是Blackmagic Design 旗下一款著名的调色软件,也是世界上唯一一款将专业8K编辑,色彩校正,视觉效果和音频后期制作功能集于 ...

  4. 如果你有一台M1 Mac,那你可以拥有Touch ID的妙控键盘!

    想要带Touch ID的妙控键盘吗?那你得拥有一台M1 Mac!Apple 终于决定开始销售其 带有 Touch ID的妙控键盘作为独立产品,起价为 149 美元.但是, Touch ID 功能仅适用 ...

  5. Mac 神兵利器(三) 使用Intellij IDEA打造全栈IDE

    前言 作为一个开发者,包括职业与业余,相信大家都在使用集成开发环境IDE.作为专业的开发者,相信大家都是Full Stack Developer,意味着我们的日常开发通常都会涉及多种编程语言比如Jav ...

  6. 【干货】一名全栈设计师的 Mac 工具箱(设计,开发,效率)

    转载自Cocoa China, 原文地址:http://www.cocoachina.com/ios/20170512/19259.html 原文 我喜欢把自己定义为一个会一些设计的全栈工程师.在一些 ...

  7. 【Mac工具箱】独孤九剑!一名全栈设计师的Mac工具箱(设计/开发/效率)

    编者按:一个同时拥有开发/设计/高执行力技能的设计师会用哪些软件来帮自己提高工作效率?今天这篇软件推荐的文章作者是一个架构师,业余喜欢用自学的设计技能开发网站和App,一起来看看他的工具箱. 我喜欢把 ...

  8. 如何在M1 Apple Silicon Mac上安装Rosetta

    由Apple Silicon芯片驱动的Mac,例如M1 MacBook Pro,既可以运行iOS应用程序也可以运行Mac应用程序,但是由于名为Rosetta 2的支持,它们也可以运行x86-64软件, ...

  9. Apple Silicon M1 Mac如何恢复出厂设置

    今天小编就来和大家讲述一下 Apple Silicon M1 Mac如何恢复出厂设置并还原的? Apple完全改变的Apple Silicon Mac的一个方面是访问恢复模式的方式,这是重新安装Mac ...

最新文章

  1. linux系统桌面缺色,红旗系统如何用?
  2. 苹果6尺寸_小屏+刘海被安卓阵营抛弃,苹果却玩出了花
  3. UVA-10714 Ants---蚂蚁模拟
  4. PowerDesigner最基础的使用方法入门学习2
  5. 图解SQL子查询实例
  6. linux切换图片的代码,cacaview – Linux终端下将图片转换ASCII Art代码图案
  7. 关公战秦琼手游java,呆兵萌将 自主研发国产精品手游 已在APP登陆
  8. Java:使用DOM4j来实现读写XML文件中的属性和元素
  9. YBTOJ:染颜色(KDtree)
  10. 中国可燃冰储量世界第一,2030年能实现商业性开发吗?多难开采?
  11. 专攻国内实体瘤CAR-T细胞疗法,南京卡提医学获数千万元A轮融资...
  12. ckplayer插件播放m3u8视频
  13. halcon学习和实践(开篇)
  14. Hbase 详细介绍以及简单的Hbase命令操作(入门必备)
  15. 残差自回归模型的R实现
  16. post请求参数校验工具param-validate
  17. 【笔记】underfined和null
  18. exynos 4412
  19. 戴尔Precision M6800加装西部数据NVMESSD-SN52固态硬盘 装4G模块
  20. 地理遥感专业属于计算机行业吗,遥感科学与技术专业怎么样?

热门文章

  1. 谷粒学苑项目实战(九):实现阿里云对象存储OSS功能
  2. 黑群晖升级后无法找到的方法
  3. iOS - 蓝牙开门智能门锁
  4. unity语音聊天--亲加通讯云(Android/iOS)---ios
  5. 求1到50中7的倍数之和
  6. web开发指南_成为专业Web开发人员的实用指南
  7. 理解python __repr__()方法
  8. Python学习笔记 print()函数输出多个变量 使用.format()
  9. 超快速安装Mac上的Homebrow,解决homebrow安装错误curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to
  10. 威猛的 90 后,不等领导下班就先走,《2021 年轻人下班报告》公布