辞旧迎新

民国1914年袁世凯用“春节”代替了夏历“元旦”,而传统的“元旦”一词则变成专指公历一月一日。在中国北方有这样的民谣:“二十三糖瓜粘;二十四温豆斯;二十五磨豆腐;二十六去割肉;二十七杀只鸡;二十八把面发;二十九蒸馒头;大年三十熬一宿。”这里面“温豆斯”是谐音和泛指,指的就是重装系统。这些民俗其实都是围绕着同一个主题:“辞旧迎新”。

当城镇化率提高,当农耕文明向工业文明进一步发展,当阶层固化以后,当城里的Lucy、Selena、Tony不再回老家村里参加车展,年味将会越来越淡,春节将变成国庆一样的长假,旅游城市人从众。再远一点,地球要去流浪,月球首先会被推离地球,没有了月亮,阴阳合历的农历也会失去意义,年节将不复存在。

但是“辞旧迎新”还有保留的意义,每次重装系统以后你都告诉自己不要乱搞,不修改注册表,不优化系统,不定制,不覆盖Path,不安装测试各种奇奇怪怪的新软件,就固定用这个模式,但是随着慢慢使用,一定会向着乱七八糟、混乱度最高、信息熵最高的稳定状态前进,而重装是让这一切临时回归秩序的唯一方法

重装也是对文档目录进行整理的好时机,你很难在一开始就设计一个非常完美的目录结构框架。有项工作开始可能只是几个文档,慢慢发现这项工作事情越来越多,文档越来越多,于是给他分配了一个目录,再后来发现越来越重要,值得拥有一个更高的目录层级。所以经常对目录结构进行修改而不是维护一个稳定的目录才是一个正确的使用习惯。

如果你重装完电脑很快就可以进入工作状态,那可能说明你对电脑用得不够深入,80%的人只用到了系统20%的功能。

如果你重装电脑后很久无法恢复最完美的工作状态,那可能说明你定制过头了,而且你对定制过程没有文档化,很迷糊。

我无法说以上两种哪种更好,只能说需要在这两种状态内取得一个平衡。

很多人依赖很重,刚将自己系统调整到最适合,安装了无比多的插件,找到了Sheldon’s Spot,要让其重装恢复到那个状态成本就变得非常高,以至于不敢重装。所以重装他考验的其实就是你的这些东西,你是否知道什么软件是在某个方面最好用的软件,你是否了解这些软件他生成的配置文件、临时文件等的位置和重装后的恢复过程。你能否在非常快的时间内重新部署到可用状态。

如何重装

完美的重装过程应当是你有2台电脑,文件拷贝到新电脑。有些软件的文档不能直接拷贝必须导入导出才可以使用。次完美的状态是有一个新硬盘,旧硬盘保留一段时间,最好将C盘所有内容备份,因为Windows对配置文件的保存还是比较混乱的。

如果你是2台电脑网上邻居拷贝数据,你可能需要Mouse without Borders类似的软件来使用同一个键盘鼠标操作2台电脑。而使用网上邻居来拷贝数据,你可能要处理一个技术上的小问题,对于网上邻居拷贝过来的文档Office打开会遇到“此文件来自其他计算机,可能被阻止以帮助保护该计算机”的小问题,而且拷贝不靠谱,速度慢,所以建议把硬盘卸载安装在主板上直接对拷。

我这次重装还遇到一个很尴尬的事情,我有2个硬盘,一个是SSD,一个是机械硬盘,在我默认选择将系统安装在SSD上后,等我所有东西都设置完后才发现启动文件放在了机械硬盘上,就是那个500MB隐藏分区,按我的要求,应该是得重新安装了。。。虽然前面吹牛要能经常应对重装,每天重装几百次,但是再折腾一次也是麻烦,最后只好收缩SSD的C盘,在磁盘最后分了500MB分区出来,通过bcdboot.exe把启动文件写入解决,然后不去想他,适度容忍不完美。我不确定是否因为SSD是NVMe而机械磁盘在SATA 0接口上引起的。

Windows10 设置

必须是Windows10,不要再考虑Win7或者WinXP了。win7将于2020年1月14日后停止免费的安全更新。Windows10自带了“全新启动”功能,保留个人文件和部分Windows设置,并删除大部分应用,重置完会给你一个被删除应用的列表。跟我们解决安卓手机越用越卡而重置功能类似,然而我建议还是重新在一个硬盘格式化使用最新已经打好大部分补丁的启动光盘上重新安装。有些功能只有纯净安装才会启用,比如有些隐藏分区EFI、MSR、WRE分区可能就不会建立。

说到手机,手机没法随便折腾,所以重置或者更换倒是更为容易,比如第三方提供的保留应用列表一键安装,苹果的傻X的iTunes备份和恢复,苹果或者安卓的一键迁移,应用设置或数据备份到云服务,应用只是个壳,真正的数据在云平台等等。

对Windows10的配置是最烦的,Windows最开始是控制面板、系统属性、组策略、注册表编辑器等多个不同的位置配置,后来为了适应触摸屏,引入了“设置”,但是还是没有把所有功能项迁移进入,而且界面流式布局更乱了,所以存在“上帝模式”和Windows键+X等不同的入口,所有设置项多如牛毛。设置我其实非常喜欢Linux的文本配置和SQL Server的GUI配置后可使用“脚本”->“将操作脚本保存到“新建查询”窗口”的功能,所有的更改都可以脚本化,这样我就可以将以下大部分的修改能找到相应的可重复运行的脚本了。

以下是我对Windows配置做的部分修改:

  • 我的文档等目录移动到非系统盘。如果你在移动到非系统盘后需要更换硬盘时你可以启用Administrator账户,因为这个账户默认所有文件都是在C盘的,而且启动项比较干净。
  • 资源管理器记忆上次打开。任何软件都应该记忆被关闭之前的状态以便在突然掉电后恢复,比如所有的浏览器、编辑器都要设置。十几年前的Palm这方面做得很好。
  • 资源管理器的收藏夹,库配置。特别是多个下载目录,浏览器、QQ、PC微信,不整合在库里太乱了。
  • Pin一些软件到任务栏或者“开始”屏幕。
  • 更改taskbar的list模式。
  • 对注册表项的修改都加入注册表收藏夹,或者写入.reg备份。
  • 输入法默认英文
  • “设置”的开发者选项所有打开,安装WSL
  • 关闭Thumbs.db。
  • 干掉zip文件目录形式打开。
  • 默认打印机不用设置了。

Windows10 目录

如同设置一样,Windows放置用户软件的可执行文件、临时文件、配置文件、文档的安排也是很复杂的,C:\Program Files (x86)是放32位应用程序的,C:\Program Files是放64位应用程序的,有些应用为了规避TrustedInstaller权限和更方便升级和多用户隔离,也会将应用安装在C:\Users<username>\AppData\Local里。而配置文件,为了多用户共享,有些会放在C:\ProgramData里,在多用户profile里,C:\Users<username>\AppData\内有Local、LocalLow、Roaming三个目录,LocalLow是为了存放一些低权限应用生成的数据,前2个是不在多个机器之间漫游,而Roaming的数据应当可在多个机器之间或者中心服务器之间同步漫游的。然后也会有“文档”、“视频”、“图片”、“音乐”、“桌面”等系统内建的目录并且将其放到“快速访问”和“库”里。我一般只会使用其中的“文档”目录,而且第一时间移动到非系统盘,其他几个保留空。

隔离

隔离这里我使用了多重隔离机制,什么是隔离?计算机的世界最重要的就是隔离。有时候打开电脑可能同时在做几个不同的事情,就像CPU处理多进程一样,你如何在多个事情之间快速切换而不至于混乱?比如你写个编程项目,你要打开一些浏览器页面,开几个SSH终端,资源管理器,PDF等等,你接到一个故障电话,你要打开多个程序来定位问题,这些实际上形成一个组,在你在多个项目并行时你不希望互相影响,就像Git里面的Stage。还有比如你十几个项目都已经升级到Visual Studio 2019了,但是你有一个项目还是必须2013,这时候你又不想安装2013,就可以临时在一个虚拟机里面安装并开发。

  • 多显示器隔离,编码在某个显示器,文档和效果预览在另外一个,IM固定在某个。
  • 多桌面隔离,Windows10多桌面隔离窗口,可以看看 https://dog.xmu.edu.cn/2017/03/24/lost-in-windows.html ,但是还是有一些bug,比如Chrome在多次远程桌面后窗口会在不同的桌面移动,如果在某个桌面打开Word或者PDF,默认会跳到最后一次激活的那个桌面上。忍了。
  • Windows Subsystem for Linux隔离,在Windows上运行原生Linux,一般用来跑些Python脚本。
  • 本地虚拟机隔离,Vagrant+VirtualBox隔离Linux环境下的项目。
  • 远程虚拟机隔离,安装多个虚拟机,在上面安装比如BT下载、旧版本软件、恶意软件测试等等。
  • 未来的Windows沙盒隔离,也是个原生的容器,但是看功能介绍感觉意义不会太大。
  • Docker隔离,Windows原生的Docker for Windows跟Virtual Box有冲突,暂时没在工作电脑上安装。

下面介绍一些我常用的工具,如果你有好的也告诉我。

虚拟机

虚拟机我用的VirtualBox+Vagrant搭建开发环境。管理远程VMware集群使用H5+VMware Remote Console。Docker使用轻量级的Portainer。

Windows Subsystem for Linux

WSL是个很神奇的东西,是在Windows上的源生Linux二进制代码而不是虚拟机,更不是多操作系统启动,所以你可以在Windows的

C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_xxxxxx\LocalState\rootfs\

里面看到WSL的文件,而从WSL你又可以从

/mnt/{c,d,e}

看到Windows的文件,这实际上提供了非常灵活的互操作性。然而也正是由于他不是虚拟机,所以有些系统级的功能WSL不支持。

目前WSL支持Ubuntu、SUSE、Kali等Linux发行版。

这里唯一需要注意的是,在WSL里面service sshd –full-restart后就可以使用SSH客户端连接WSL而不是土土的Terminal界面。如果使用Xming还可以映射GUI。还有一个需要注意的是sshd在防火墙内关闭。

编辑远程Linux服务器上的文件

要编辑远程Linux服务器上的文件可以有多个方法:

  • 本机vim
  • 网上邻居
  • SFTP
  • 编辑器的sftp插件
  • lszrz
  • sshfs-win

网上邻居由于漏洞太多被关闭,所以我现在用的最顺手的就是sshfs-win,安装完后映射网络驱动器,就可以在本地直接编辑远程Linux服务器上的文件,自动双向同步。SSH是个神奇的东西,就像HTTP端口一样,开启后有一百万个可能,也要记得配置好防火墙,杜绝一百万个漏洞。

TreeSizeFree-Portable

其他软件推荐你看过笑笑就算了,但是这个软件你看到这里应当立刻放下手机,Ctrl+T新开一个页面立刻搜索并下载。用来查找大文件小电影非常方便。我经常需要打开TSF分析硬盘目录整理。

Linux下推荐ncdu,你可以运行

ncdu -o ROOT.db /

跑一会儿,然后

ncdu -f ROOT.db

打开就可以对文件和目录进行清理了。

TSF可能利用了NTFS的某些元数据统计文件目录大小,速度非常快,而ncdu应该就是一个个遍历相加。

FreeFileSync

必备,具体可看 免费个人数据备份软件介绍:FreeFileSync、Syncthing

如果说拷贝黏贴是UDP的,那FreeFileSync就是TCP。直接Ctrl+CV不是靠谱的,一定要用工具检查文件。千万不要出现拷贝完了,覆盖掉硬盘才发现拷贝过来的文件丢失或者错误。

Mouse without Borders

在多个电脑之间共享键盘和鼠标,有很多替代软件,这个是微软出的,我不确定传输的数据是否有非常强的加密,在防火墙内设置作用域是一个比较安全的配置。

编辑器

我现在使用Visual Studio Code换掉了我用了十几年的Sublime Text2,团队内部最好统一使用一个相同配置的编辑器,如果不也没关系,但是需要支持EditorConfig,支持Lint。

浏览器

Chrome、Firefox、IE,对于开发人员来说,Chrome是不二选择,而其他一些乱七八糟的浏览器对于前端测试浏览器兼容性最好就只安装的虚拟机里。很欣慰的是Edge要使用Chrome内核了。

远程SSH

Xshell、PuTty

https://dog.xmu.edu.cn/2017/09/18/ssh-client-in-windows-xshell.html

Xshell6个人版一个窗口只支持4个Tab了,这是唯一感到不爽的地方,忍了。

远程桌面使用Terminals。

知识管理

  • Read It Later,使用Pocket
  • 网页收藏,使用OneNote
  • 简单记事,无信息泄露问题的,使用有道笔记。

在我这次重装系统才发现,我用的“麦库记事 - 永不丢失的云中记事本”下线了,这个傻的团队,下线没有任何公告,消失的无声无息,没有任何的善后措施,数据估计也没有销毁,如果过几年我的数据泄露在网上也不要惊讶,或者这才是永不丢失的意义?