工科生研0的Macbook Air M1 13inch(16+256)深度使用感受
在深度使用M1一年之后,在即将比如研究生生活之前,介绍一次Mac。同时也会结合自己的华为Mate40pro介绍macOS+ipadOS+harmonyOS在日常使用的习惯,说明常用的软件、硬件的配件、文件管理和同步以及password以及GTD管理、环境管理中Linux和python环境以及Git使用等,作为一次Summary
本次介绍的主体是2020年发布的M1芯片的Mac,也经历了结构更迭之苦,当然一年之后能看到ARM架构的优越性。具体规格配置如图
【写作时间】2022年6月12日
01 Software management
在使用的过程中,很多软件都没有兼容M1,兼容M1的破解版也少的可怜
软件思维导图
常用的Mac软件下载网站:
1.1 处理不同格式文件软件
Office 三件套:docx、ppt、xlsx WPS :同office,虽然功能会少一点,但是带来的是性能的提升 Typora:Markdown Sublime Text:打开、轻编辑 【code】、markdown、latex(快) Skim:打开PDF文件,搭配Sublime Text使用(快) PDF Expert:编辑PDF文件 iMovie:编辑视频文件 IINA:视频播放软件(快) Capture One:修图软件
1.2 牛刀类工具
Notion:非常好用的笔记软件 Zotero:文献管理软件,可以搭配notion使用 Marginnote3 : 阅读PDF和知识管理软件,不太好用 OmniGraffle : 流程图绘制软件(平替 draw.io网站) Xmind:思维导图软件,正在用的 Edge:很不错的浏览器 Axure RP:原型设计软件 Parallels Desktop:虚拟机管理 Terminus:终端增强
1.3 润物细无声的小工具
ClashX:代理软件简介 Rectangle:窗口管理 欧路词典:查单词 iStat:硬件状态 iPic Free:markdown的图片上传 Aldente:充电管理 GifSki:压缩生成GIF文件 SVGview:查看SVG Hidden bar:状态栏设置隐藏 iShot:截图软件,可以长截图和标记(command shift 4/5可以截图和录屏) Better Zip:解压缩文件 ClipborderManagement:剪贴板管理 坚果云+Nextcloud:Webdav文件管理 cheetsheet:快捷键提醒 Monitor Control:管理显示器的亮度 Mail+Calendar+Reminder+Notes+Music:自带的软件都非常高
1.4 娱乐类工具
B站客户端 腾讯视频 虚拟机内的植物大战僵尸 微信-QQ 百度网盘+阿里云盘
02 Hardware management
Anker Nano II 65W充电头
广告
Anker 安克 USB-C PIQ3.0 PD20W快充头
知乎
¥55.00
去购买
小米100w快充线(2m)
广告
ROCK 三合一数据线 一拖三
知乎
¥39.00
去购买
Belkin七合一拓展坞
罗技Master 2s
广告
Razer 雷蛇 炼狱蝰蛇 V2 游戏鼠标
知乎
¥249.00
去购买
DP1.4绿联转接线
西数移动硬盘*2T
广告
ROCK typec 多功能转换器 十合一
知乎
¥259.00
去购买
华为原装TypeC耳机
03 File management and workflow
3.1 Mac本地文件管理和备份
256G的固态硬盘用起来比较着急,好在速度很快,全新 M1 MacBook Air 的固态硬盘写入速度为 2190 MB/s,读取速度为 2675 MB/s;相比较手机的sfs的速度可发现该机连续读取约为 1966M/s,持续写入 1280M/s;相比较UFS3.1通常为1200M/s和800M/s,速度感觉非常不错。
在日常使用的文件中主要分为:
- 大文件,比如下载的4K电影、爱死机系列片等,这一类文件在使用之后可以放到移动硬盘作为存储,或者上传到百度网盘
- 不常用的文件,比如下载的文件PDF、下载的PPT、不用的课程PPT,这一类文件通常在一个阶段结束之后可以备份,比如放在移动硬盘或者放到百度网盘中
- 小而杂的文件,临时做的ppt、下载的通知,这是管理的重点
管理方法Tag+Folder:
作为一个对macOS的的Finder热爱的人来说,非常喜欢提供tag的选项,但是常常利用Tag也会让我感到苦恼,因为会因为一个文件满足多个tag而不知道如何区分,然后新建一个Temp文件夹,久而久之所有的文件都会被放到这个临时文件夹中。就在苦苦思考的时候,我们会发现天然的无论是windows还是macOS都给我提供好了应该有的方法Folder,按照Document、Picture、Video、Download、Desktop的文件夹方式来进行分类,这里的管理原则是:
首先按照文件的时效性区分开:
- 时效较短的 download desktop
- 时效较长的 document、picture、video
再根据自己的Project来对不同文件类型的文件进行标记Tag,方便自己查找 Tag存在的意义是让自己容易找到他,而不是分类,因为Folder天然具有分类的作用
3.2 基于Webdav的多端同步Sync
!!macOS12还没有适配坚果云的云桥模式!!
网盘通常可以分为两种
- 大容量,作为资源库仅限App操作的,比如百度网盘、阿里云盘、夸克云盘等
- 同步网盘,比如iCloud、坚果云、DropBox、nextcloud、one drive等
针对第一种网盘纯粹可以当作备份盘处理,虽然百度网盘推出同步空间,体验依旧非常不好。第二种网盘主要针对写作办公和同步,如果你是iPhone+iPad+Mac当然iCloud是最佳的选择,没有之一,在国内的环境使用非常的舒服,但是如果没有则需要挑选,主要的选择有:
- 时不时抽风的one drive
- 会员当道的坚果云
- 自建webdav协议的nextcloud
3.2.1 第一种one drive
速度有时候莫名的快,有时候莫名的慢,使用很难受。同步必须在自己的电脑中新建一个文件夹作为同步,不能实现同步其他任意文件夹的功能,比较鸡肋。但是可以释放本地空间,以快捷方式保存在本地,同时作为学生可以享受超大容量。
3.2.2 第二种 坚果云
目前开了一年的会员,在尝试其中的使用技巧,利用坚果云来构建Mac+iPad+Mate40pro之间的文件共享体系(重点!华为居然可以将文件夹放在桌面,太好用),在国内的同步速度非常快,快到看不见。但是目前macOS12应该是不支持云桥模式的api,也就是我文件都是同步的,而不能释放本地空间
3.2.3 第三种 webdav协议自建nextcloud
因为本人自己有一台腾讯云服务器,所以尝试使用nextcloud构建自己的云盘,但是因为功能比较初级,想要在Mac系统中集成需要走HTTPS协议,暂时还没有搞好,但是webdav协议除了可以下载文件之外,还可以同步日历等,构建macOS+iPados+HarmonyOS的同步,但是目前https协议还没有搞好,期待后面的使用
3.3 Password管理
密码管理的重要性,无论是个人信息中需要的密码管理,还是掌握服务器中的使用,都需要掌握良好的米阿们
- 拖库:拖库就是指黑客通过各种社工手段、技术手段将数据库中敏感信息非法获取,一般这些敏感信息包括用户的账号信 息如用户名、密码;身份信息如真实姓名、证件号码;通讯信息如电子邮箱、电话、住址等。
- 洗库:在拖库后,取得大量的用户数据之后,黑客会通过一系列的技术手段和黑色产业链将有价值的用户数据变现。
- 撞库:撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站 后,得到一系列可以登录的用户。很多用户在不同网站使用的是相同的帐号密码,因此黑客可以通过获取 用户在A网站的账户从而尝试登录B网址,这就可以理解为撞库攻击。
手机内部华为自带的密码管理器真的是太差劲了,为了满足多端同步的功能,既然用不了Apple的钥匙串服务,Google密码在华为中用不了,只能使用微软的EDGE,电脑和平板端使用浏览器,手机端开启浏览器外部填充功能。
当时实际的密码最好还是用备忘录或者笔记本记下来!!
3.4 GTD管理
它的所有方法都围绕着把所有事情都从大脑中弄出来并体系化地管理,让人专注于眼前的工作,完全信任外部体系的事务管理。
因此,GTD的方法最适用以下情况:
- 事务繁杂,容易忘记和混淆
- 害怕忘记任务而反复回想,浪费时间造成压力
- 杂务纷扰,重要的事常来不及做
通常使用reminder来将需要做的事情记录下,收集所有的事情,然后划分到长期和短期应用,之后在日历calendar中记录准确的事情,在同步过程中,依旧采用微软的outlook邮箱来实现多端同步,手机上需要下载一个Microsoft ToDo,很简洁!
添加图片注释,不超过 140 字(可选)
3.5 Notes管理
笔记整理中,通常的来源包括
- 讲座、会议等的会议记录和总结
- 对于视频、文档、课本的阅读和总结
- 个人博客
- 自己的代码仓库
由于使用不同文件就让自己的笔记整理困难,因此个人选择的ALl in one的Notion来管理自己的笔记,作为一个基于Web的笔记管理,很好用,个人笔记的特征管理选择
- Area-user :笔记中主要分为person(自己的思考、自己的整理、自己的读书记录);或者是school(课题组的项目、讲座);以及一些第三方的东西,我是去study,或者做一些record
- Group-Tag:用于分类的依据,将自己的笔记分为四种:Library(个人的汇总表)、Post(一些单独的文章)、Wiki(完整知识体系,帮助学习)、Log(项目的日志)
- Name:该页面的主要名称,汇总表建议带上汇总两字、series的课程或者希望可以带上<名称>作为标识
- Create Date:创建日期
- Resource: 这个页面的根源是什么,包括个人的管理类或者思考类、school的项目日志或一些杂事、study的课程或文档
- Area:随便的一些tag
04 Environment management
4.1 Homebrew —软件包管理工具
Homebrew是一款macOS的软件包管理工具,通过其可以很方便的install or uninstall软件工具,类似与Linux下的apt-get、node的npm等包管理工具、centos下的yum,使用homebrew可以安装系统没有预装的东西,,同时会将软件包安装到独立目录,也就是local文件夹下面的homebrew自己安装的文件,然后再通过软链接到usr/local
1 |
|
(可选的,如果希望将homebrew添加到环境变量)
1 |
|
常用的一些命令
1 |
|
4.2 Mini forge3 — macOS的conda
- 一种是下载sh脚本,然后自己安装
- 使用homebrew安装mini forge3
Anaconda和Miniconda到现在都没有提供M1处理器的conda环境,可以使用conda-forge提供miniforge,用来支持Apple Silicon的版本软件
下载软件的地址
GitHub - conda-forge/miniforge: A conda-forge distribution.
下载好mini forge3中对应的macOS+apple silicon的脚本,假设下载咋download文件夹
1 |
|
完成安装之后,需要重新激活配置文件
1 |
|
完成之后可以测试conda是否安装完成
1 |
|
第二种方法是使用homebrew安装
1 |
|
conda常见命令的使用
1 |
|
4.3 Git — 版本控制
4.3.1 常见指令
1 |
|
4.3.2 Git - PyCharm - GitHub操作
首先安装好自己的git,然后在pycharm中的version control system中为当前的项目构建自己的git同步目录,其中的 git每次的文件会存储在相对应的.git文件夹的目录下,所以也会导致在每次提取的过程会逐渐变的越来越大,同时为自己的GitHub账户中的一些操作
- chenxia31.github.io ,主要是个人blog的使用,在其中使用markdown来撰写相关的推文,使用hexo g、hexo d,以及GitHub page来管理域名来完成自己的公开
- code_study_pratice 这个是过去的一些操作,这里就删除,算是最开始的algorithm的东西,因为名字不好听以后就删除来,为啥不换个名字,算了换一个名字重新开始
- Mercury这里以后就是代码学习的地方,主要分为BaseSkill(比如pandas的操作)、Course(比如CS229、CS61A、李宏毅之类的)、Kaggle(其中比赛的名称)、Leetcde(包括力扣官网的,还有一些关于算法导论中习题的刷)、latex中的一些模版、如果想要更近一步还需要有其他代码语言比如web开发、C++语言等属于Special Area
4.3.3 Git - VsCode - GitHub操作
暂时不需要
4.4 (Python)Tensorflow + Pytorch
2022-04-09 pytorch暂时没有支持GPU加速,仅仅是讨论阶段,tensorflow已经支持GPU加速,使用的是apple提供的metal的toolkit
1 |
|
Tensorflow Plugin - Metal - Apple Developer
在conda管理中,直接使用homebrew安装的miniforge可能会有问题,可以选择第一种下载之后手动安装的方式来管理
之后是新建一个conda环境,然后activate进去
利用conda安装相关依赖
1 |
|
然后在环境内使用pip安装相对应的tensorflow和插件
1 |
|
测试代码
1 |
|
https://zhuanlan.zhihu.com/p/408877901)
4.5 Linux使用
Linux 系统启动过程
- 内核的引导
- BIOS开机自检,按照BIOS中设置的启动设备来启动,操作系统接管硬件之后,首先读入/boot目录下的内核文件
- 运行init
- init是系统所有进程的起点,首先读取配置文件 /etc/inittab
- 系统初始化
- 建立终端
- 用户登陆系统
- 命令行
- ssh
- 图形界面
Linux 系统目录结构
1 |
|
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限,为来保护系统的安全性,Linux系统对不同的用户访问相同的文件的权限做出了不同的规定,在Linux中常用一下两个命令来修改文件或者目录所述的用户与权限
- chown(change owner)修改所属的user和group
- chmod(change mode)修改用户的权限
1 |
|
Linux 文件和目录管理
Linux的目录结构为tree结构,最顶级的目录为根目录,其他目录通过挂载可以添加到tree中,通过解除挂载可以移除他们,首先区分绝对路径和相对路径
- 绝对路径 /usr/share/doc
- 相对路径 ../man
处理目录的常用命令
1 |
|
Linux的文件内容查看
1 |
|
Linux的连接link的概念,一种是硬连接,另外一种是符号连接
- hard link 通过索引界面的来连接,保存在磁盘分区汇总的文件不管是什么类型都给它分配一个编号成为inode index,在Linux汇总多个文件名指向同一个索引届电视存在的,硬连接允许一个文件拥有多个有效的文件名
- symbolic link:类似于快捷方式
Linux 用户和用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户都必须首先向系统管理员申请一个账号,然后用账号的身份进入系统
用户的账号一方面可以帮助系统管理员对使用系统得到用户进行跟踪并控制他们对系统资源的访问,另一方面也可以帮助用户组织文件,并为用户提供安全性防护
实现用户账号的管理,要完成的工作主要有几个方面
- 用户账号的添加、删除和修改
- 用户口令的管理
- 用户组的管理
Linux磁盘管理好坏直接关系到整个系统的性能问题
Linux磁盘管理常用的命令为df、du、fidsk
- disk full(df)
- disk used(du)
- fdisk 用于磁盘分区
我的base环境是我之前用的
首先安装anaconda:
wget -P /tmp https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
wget是工具的名称,后面的 是对应的下载地轴
后面的/tmp是让下载文件存储在这个文件夹下面
常见的command
yum yellow dog update modified 是一个在fedora和redhat以及suse的shell前端软看包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次性安装所有依赖软件包,无须繁琐对的一次次下载
1 |
|
apt (advanced packageing tool 是一个在debian和ubuntu终端额shell前端软件挂你了工具
利用bash Anaconda3-2021.11-Linux-x86_64.s h 来安装对应的文件
安装的位置会默认在root/anaconda的目录下面
从yum安装dnf
4.6 Docker使用
1 |
|
启动
1 |
|
配置
1 |
|
运行第一个容器
1 |
|
或者一步一步运行一个容器
1 |
|
停止镜像
1 |
|
Docker部署python 网站
- 安装Docker虚拟机环境
- 学习docke常用命令
- 安装Python SDK和MySQL镜像
- 为Flask添加SQL Alchemy拓展库
为什么要Docker?虚拟化环境的重要性
- 直接程序安装或者部署在Linux操作系统上面,容易引发资源冲突
- 程序卸载不干净,导致无法安装或者部署新程序
- 每次部署之前要安装很多软件,修改复杂的配置文件
- 无法让服务器硬件资源实现多租户服务
- 增大了在Linux系统上部署集群和分布式的难度
在Linux上安装docker,了解docker hub的
设置dockerhub的加速器DaoCloud
了解Docker镜像与容器的关系,了解镜像和容器之间的关系,学习常用的docker命令
什么是docker镜像?
为了快速打包和部署软件环境,docker引入image机制
镜像是一个配置好的只读层软件环境
可以通过dockerfile文件创建镜像,也可以从docker仓库中下载到镜像中
什么是docker容器
容器是在镜像基础上创建出的虚拟实例,内容可读可写
一个docker image 可以创建多个container,而且container之间相互隔离,部署的程序之间不会相互干扰,所有的容器直接使用宿主的主机的Linux内核
添加图片注释,不超过 140 字(可选)
docker run -it —name=p1 python:3.8 bash
docker 会为每个容器创建网址
学习docker网络,docker的容器端口映射,目录挂载技术,FTP程序来管理文件,可以将宿主机挂载在目录挂载
docker network create —subnet=172.18.0.0/16 mynet
网段的ip
1 |
|
默认情况下,除来宿主机之外,任何主机无法访问远程访问的docker容器,通过端口映射可以把容器端口映射到宿主机的端口,这样其他的主机就能访问容器来,映射到宿主机的端口,不需要设置防火墙规则
1 |
|
为能把一部分业务数据保存在docker环境中,可以使用ftp,但是比较麻烦,因此可以使用目录映射。因为ftp会导致文件删除,只支持文件目录挂载,不支持文件挂载,而且一个容器可以挂载多个目录