昨晚,我体会了没有 pnpm 的痛(一)

简介: 昨晚,我体会了没有 pnpm 的痛(一)

课题:

  1. 如果没有U盘,window 和 mac 本地计算机之间如何传输大量文件?
  2. 为什么要用 pnpm?硬链接、软链接是什么?

起因


事情是这样的,最近自己的办公设备,从thinkpad 更换到了macbook pro14,因为m1 芯片的强悍性能,工作效率都有了很大提升,甚至每天背着回家都不嫌累了,这不,昨晚照常早早的回到家,做好饭,打开电脑看着电影,突然想起来之前电脑上还有很多项目代码没迁移,gitlab 上的就不说了,直接clone 下就好了,剩下的都是一些历史项目老代码绝版的~,手头有U盘和移动硬盘但是 mac 没有 usb 接口,转接头也在公司,而且这个硬盘还不能直接供mac 访问,还要用额外的软件处理格式。。,嗯想了一下,手头可行的方案大概有这些。


快传网站


之前偶尔用过奶牛快传来传输压缩包文件,当时是因为内网原因某些 npm 包下不下来,所以同事用这个网站传给我的,不过那个太慢来,限制也多,而且这种方案都要把自己文件走一遍他们服务器的,不适合传输隐私文件,不太行。pass


局域网共享


我记得一般公司内网都有局域网共享,来存储访问共享文件夹,而且可操作复制到本地,那么 mac 和window 之间是否支持这种方式呢?一通查找下来发现也是可以的(开心),那么就试一下看看吧。

首先,保证window 和 mac 设备在同一个网络下,最简单就是连接同一个 wifi,找到要共享的文件夹,右击 => 属性 => 共享 => 勾选“共享此文件夹” => 选择共享用户,默认 Everyone => 应用、确认。到这一步,该文件夹就被配置为共享文件夹了,在当前局域网内的其他设备均可以通过此设备的 ip + 用户账号密码来进行访问了。

mac 下打开 Finder(访达), 菜单栏 => 前往 => 连接服务器 => 输入 smb://ip地址 => 连接 => 如果链接成功则需要输入设备账号密码来进行验证,通过后就会在Finder 的侧边栏看到一个新的设备选项了,打开就能看到之前共享的文件夹了,可以像普通文件一样来访问和移动。


1687778123711.png

1687778134703.png


事情到这里我以为可以愉快到复制粘贴了,然而发现项目实在太多,大大小小几十个,最糟心到是很多项目里都有node_modules 文件夹,代码才几M,node_modules 却有 200+M,这些包文件因为没能复用,所以基本上每个项目都单独保存了一份,好吧,现在只能先把 node_modules 删除掉了,然后再移动项目代码,这样就很快了。

本来以为事情已经完美结束了,今天却发现一个意外的问题,用过 M1 的同学可能听说过 ssd swap 这个概念,它是 macos 系统同内存规格下比 window 系统更加流畅的原因之一,当系统应用占用过多,内存不够时 window 会有明显的卡顿,macOS 系统却好很多,因为此时它会将暂时不用的应用缓存从内存中转移到 ssd 中,给内存腾出空间。

这个过程是无感知的所以你会发现明明开启了多个大型应用理论上早就超出了内存大小,可是依然不会有明显的卡顿,就是这个原因,特别是随着 ssd 性能的增强以及M1 芯片架构的改变,这个特性被更好的使用了,一方面这是个好事情,充分利用了ssd 性能以更小的内存换来比以往更好的使用体验,但是事情都是有两面性的,swap 的原理意味着它将带来更大的ssd 读写量,而一般 ssd 是有使用寿命的,也就是它的全盘写入次数是有上限的。

硬盘的寿命一般用 TBW (最大写入量)来表示,1T 规格的 ssd固态通常标称的保修寿命为 600TBW,也许你注意到了这里说的是保修寿命而不是使用寿命,是的反正大家都说实际寿命要远远大于保修寿命,谁知道呢。我就姑且按照 1T 600TBW 来算,我512GB 的硬盘就是 300TBW 的标称写入量,本来这是足够用的了,按照普通人的使用习惯,甚至我作为开发人员办公加日常娱乐全天10小时的使用强度来说用个10年都没问题,这是我根据过去50天来的使用习惯统计而来的,最近一次统计是2月1号,平均每个月3T, 3*12 = 36T/年,将近十年的寿命。

但是昨晚一通操作之后,今天在公司查了一遍发现 swap量在一周内增加了 6T(1T==1024GB),很恐怖哎,实在想不明白,怀疑是昨晚文件操作引起的数据读写激增,可能性还是挺大的,一是我没有对文件进行压缩,所以磁盘要读取文件数量并且串行处理,比单个压缩文件要消耗磁盘;二是node_modules 文件可能有遗漏的没有删除 那里面文件居多树形组织复杂度很高,对文件的索引建立过程肯定也很消耗磁盘。

怀疑归怀疑,但是这6T 的大小也实在是匪夷所思 我的项目虽然多但是 1G 都不到的,swap 能达到 6144G 就很神奇,罢了罢了,暂时没有眉目,先记录下来。


1687778145027.png


pnpm 可以做什么


当时我就在想,如果我的项目都用的 pnpm 来管理的包,node_modules 只完整的保存了一份,当需要批量备份代码的时候就直接压缩个包就行了,不需要再单独删除每个项目缓存的包文件了,省心很多啊。

目录
相关文章
|
SQL 缓存 Java
终于来新同事了,没想到竟是我噩梦的开始
终于来新同事了,没想到竟是我噩梦的开始
67 0
|
存储 资源调度 Linux
昨晚,我体会了没有 pnpm 的痛(二)
昨晚,我体会了没有 pnpm 的痛(二)
133 0
|
消息中间件 存储 JavaScript
如何写出一手让同事膜拜的漂亮代码?
如何写出一手让同事膜拜的漂亮代码?
|
机器学习/深度学习 人工智能 自然语言处理
【paddlehubOCR项目】网课手酸酸,眼花花,救星来啦!
大家好这里是三岁,今天给大家带来的是在AiStudio项目平台的一个精选项目,虽然很短,但是效果拔群,使用到了最近特别火的paddleOCR~~~
280 0
【paddlehubOCR项目】网课手酸酸,眼花花,救星来啦!
|
JavaScript 前端开发 程序员
巧用NodeJs帮老板解决个人需求!老板娘直呼:"牛!niu!🐂!"
大家好,我是HoMeTown 继上次用Js+Css给Boss秀完肌肉💪🏻,打出组合拳之后,(#敢在我工位装摄像头?吃我一套JS ➕ CSS组合拳!!👊🏻),今天是老板奖励我连续工作的第7/31天,不过就在今天,这个糟糕的事情终于赢来了新的转机,老板有了一个大不大,小不小的个人需求想让我看能不能写一段脚本,帮他度过难关,听完之后,我觉得是时候拿回作为程序员的尊严!展示一把真正的肌肉💪🏻了(破音~~~!)。
171 0
|
中间件 测试技术 开发工具
痛!痛!痛!我们的好兄弟Git,一路走好!
文章是正经文章,标题不要在意,哈哈
痛!痛!痛!我们的好兄弟Git,一路走好!
|
容器
L2-020. 功夫传人
L2-020. 功夫传人
200 0
7-12 功夫传人
7-12 功夫传人 一门武功能否传承久远并被发扬光大,是要看缘分的。一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。
120 0
|
弹性计算 Ubuntu
感想
完成这件事颇为困难 成就一番事业需要外物 任其发展并非长远之计 务实一点 而且在今后肯定更加辉煌 以青年的毅力