写在前面
- 关于Markdown文件在网络中的发布,可以采用直接把源代码贴给WordPress的办法
- 参考文献可以直接用Zotero复制出HTML代码
新电脑介绍
从Fn+~的HP System Information看到的型号是HP ZHAN 66 Pro A 14 G3[1],好像对应海外的ProBook系列产品。CPU是AMD Ryzen 5 4500U,内存是Micron 8G×2。屏幕大小大概是14寸,分辨率1920×1080,近似于72 % NTSC色域。
这台电脑带一个不能随心所欲PD充电的USB-C接口,几个USB-A接口,一个充电圆口,还有一个RJ-45网线接口,HDMI视频接口,二合一耳机插孔,以及锁孔。同时有SD卡读卡器、摄像头、指纹识别模块等。指纹识别还不错的样子。标配的有麦克风、扬声器和触控板。扬声器好像不太好听的样子。
厚度整体来说还好(比我之前的大块头要好很多),重量也还能接受(据说是1.6 kg),三面银色的金属感觉还不错的样子。不过键盘手感本人不是很喜欢,还有神奇的上下方向键布局。屏幕可以180°旋转,(大概)可以单手开合,上下边框好像比较宽。散热口主要在左侧,散热据说比同类产品差,CPU性能释放不高,实测不玩TNT的Minecraft底部也很烫,据说烫的时候键盘左侧区域也有高温。续航没去看,嗯喵,希望还行吧,反正同样不玩TNT的Minecraft每分钟能吃掉我1 %的电。
新电脑买来我做了什么
刚拿到手的检查
大概看看划痕呀,接口使用痕迹呀,看看外观上有没有奇怪的地方啦,不插电源看看能不能开机呀。
第一次上电后的检查
第一次上电开机后,Windows应该直接OOBE,会有一个系统初始化的过程。这个过程大致能表示之前没人启动过电脑。为了避免自动激活影响售后,在该过程中不要设置网络连接。
乖乖走完,听Cortana念诗,就进入了桌面!
趁着第一次开机,可以迅速用一些软件来检测一下电脑使用状况。我用的是HWINFO,主要先看了看硬盘读写等S.M.A.R.T.数据以及电池使用数据这种随时间变化、需要及时查看的数据。我的电脑刚买来就有了3 h的使用时间、80 G的读写、40+的unsafe shutdonwns,我有点心痛(不过用着用着这些数据都飙升,我表示我也没有办法,尤其是unsafe shutdowns。读写可以认为是出厂测试,这unsafe shutdowns大概就是系统、驱动程序的问题吧,至少我觉得我还是对电脑很温柔的呢)
除了用HWINFO等软件获取一些硬件信息之外,预装的HP PC Hardware Diagnostics也有一些检测功能(EFI固件启动菜单也有一些检测功能),可以更有针对性地对屏幕、电池、扬声器、麦克风、键盘、触控板等设备进行检测、同时可以打开设备管理器看看有没有未识别的硬件之类的。一般来说OEM的硬件就算不联网也能有足够的驱动程序(与重装的Windows不同,那个只会带一些基础的驱动,不像OEM预装那样有自定义驱动)。等屏幕坏点、漏光,电池健康度与使用时间,键盘按键灵敏度与多按键冲突性测试、触控板触摸、点击、拖动等功能都没问题之后,这台电脑差不多就可以拿来用了!
现在,来装各种奇怪的应用吧!
我就照着我的程序列表、Program Files文件夹以及Downloads目录下的程序来念了!
联网之后往往有一大堆Windows更新以及驱动程序更新,可能还有Microsoft Store的应用更新,还会预装个企业微信(坏哦)
第一步是Windows组件!
请去控制面板\所有控制面板项\程序和功能中的启用或关闭Windows功能页面。
.Net Framework 3.5
忘了为什么要勾上实心方块了喵。也不知道有什么用(其实有4.8就好了嘛)
Hyper-V
Pro Edition及以上自带的虚拟机!WSL 2和基于虚拟化的内核安全等一部分Windows功能是基于这个的(大概),所以我就开着了。
不过有的虚拟机不兼容这个,比如较老版本的Oracle VirtualBox,BlueStacks呀,不过前者可以通过Windows虚拟机监控程序平台、虚拟机平台还是哪些组件,获得利用Hyper-V作为虚拟化后端的能力;后者则专门出了个不共享数据的Hyper-V Beta版。通过BCDedit配置hypervisorlaunchtype项可以改变Hyper-V启动行为,甚至可以创建两个启动项以在启动时选择是否启用Hyper-V。
缺点之一可能是对虚拟磁盘格式支持不足。AMD平台下的Nested Virtualization似乎支持不好。
Windows沙盒
Windows自带的沙盒软件,据说基于容器,不知道要不要一起安装容器组件;大概比基于内核驱动程序的Sandboxie的安全性更高一点吧(随意猜测),作为组件,启动起来有些神奇的bug,重装之后好了呢。
想要获得真正的安全,可以采用正统的虚拟机 独立的物理机 网络连接受限的物理机 接口也受限的物理机 加上物理隔离的物理机 定制硬件的物理机算了,没有真正的安全喵。
不过,这个和Sandboxie相比,提供的是一个全新的系统,只能把文件复制进去,还没发现怎么调用外界程序;而Sandboxie作为一个我刚接触电脑就知道的软件,可以很好和原来安装的程序相整合,近期还开源了,开发工作也开始交给社区了,不知道会不会有进一步的开发。
适用于Windows的Linux子系统
WSL 2利用了Hyper-V,系统调用兼容性比WSL 1更好,然而文件性能好像目前不太行,编译以及git的时候可能会有影响,而且Hyper-V可能与某些软件有冲突。运行wsl.exe -l -v之类的乱七八糟的命令,然后按照提示,先去网页下载个内核安装包,然后去Microsoft Store下载一个喜欢的发行版即可。
这个在有程序(比如Simple Dnscrypt)监听53端口的时候可能出现奇奇怪怪的问题,运行wsl.exe bash之后出现0xffffffff错误什么的,重启dnscrypt-proxy以及SharedAccess服务可能可以见效。
当然去装WSL 1也可以(不过我一次都没试过)
当玩具不错的样子,相比虚拟机而言和Windows的资源、文件和硬件有更好的整合。拿来运行一些Linux上的程序还是不错的!
不过,MSYS 2也提供了编译为Win32 / Win64程序的Linux工具,可以把代码编译成原生Windows程序。
访问https://aka.ms/wslstore
(其实是ms-windows-store://collection/?CollectionId=LinuxDistros
)以转到Microsoft Store的发行版下载页面。
OpenSSH client + server
字体部分
- Fira Code : 奇奇怪怪的带ligature的编程用monospace字体。README文件里有常用的连字介绍
- Sarasa Gothic(更纱字体) :这个很神奇也有ligature,据说是其他几个字体组合成的新字体,优点是中文严格等于两个英文宽度。支持Latin+CJK,支持sans-serif与monospace,但好像没有serif
- Source Han Sans(思源黑体) :有名的CJK开源自由字体,除了CJK的思源黑体还有思源宋体、思源等宽以及Source Sans/Serif/Code Pro的Latin版本。可以去TUNA镜像站 的下载页面 看一看。据说和Noto CJK系列区别不大
- STIX、XITS、CMU、Latin Modern Math等等奇奇怪怪的字体:反正是扔进来玩的喵。可能和TeX有关
似乎并没有开源的楷体字体(多年之后发现有的,LXGW WenKai等一系列,只是没有由Google和Adobe推出的)
据说中文排版时,一般正文用宋体,<em>斜体</em>用楷体,而<strong>粗体</strong>用黑体喵。是这样吗?
我用一点神奇的CSS尝试模拟了一下这个行为喵,然而并不会根据上下文来选用不同行为呢(我当时是什么意思?明明可以做到的,因为我CSS完全是没学习过所以才会认为做不到吗?)
常用基础软件
Firefox
Firefox最高!至少同步功能比较好(能用)。装了Proxy SwitchyOmega、uBlock Origin、HTTPS Everywhere、Zotero Connector(Zotero官网下载)扩展。
千万别下载成了万恶的本土版本!认准Mozilla基金会和.org!
Edge(Chromium内核)
2004(之前的可能也可以)的Windows 10可以手动下载Chromium内核的Edge了!有了微软提供的同步功能与账号登录,同时可以用微软扩展商店,并也可以从Chrome商店以及其他渠道获得扩展,还是很不错的!我就不单独安装Chrome了!插件基本同Firefox。不过有了Firefox其他的基本吃灰,不过遇到只兼容Chrome的网站或许更管用一些。
7-Zip
对各种压缩包打开的支持比较好,同时可以创建包括zip格式在内的几种压缩包,还有checksum功能,虽然界面比较简单,但是小巧简单省心,支持命令行界面(7z)。
CrystalDiskInfo
有萌妹子的磁盘监控程序,可以实时监测写入情况(从S.M.A.R.T.数据获取的,不能分应用监控),并警告异常参数与温度,甚至开源。本体是妹子。
而对应的有CrystalDiskMark ,用于存储设备的benchmark,不过只有Shizuku Edition。
smartmontools
是S.M.A.R.T.信息的命令行工具。
KeePassXC
密码管理软件。用本地数据文件存储,支持TOTP等二次验证方式,但是没有内置云同步功能,必须配和OneDrive等实现同步。据说有浏览器插件然而我并没有去用。
Microsoft Office
我用了本校的Office 2019喵。毕竟Office应该是刚需。自带的Office 365由于不能和2019同时存在被卸载了。如果有资金、系统兼容性方面的考虑,可以试试WPS(商业软件)或者LibreOffice 替代,Apple用户可以考虑自带的免费iWorks suite。不过KMS这么普及了,各大高校ITS往往都有批量许可了,Office 365的家庭订阅分摊一下很便宜还送1T空间,还是考虑弄一个Office吧。
当你的Office文件出问题了把锅推给MS Office/iWorks/WPS就行,你不希望替LibreOffice背锅吧!
qBittorrent
PT必备之一。近年来qBittorrent总算是可以在一些PT站用了(开放了PeerID的限制),个人觉得显示的信息比Transmission详细一些。除了的Transmission ,各个站点推荐的uTorrent(商业软件)也可以去下载(注意有配置文件和IPFilter)。
VLC Media Player
拿来听音乐、看视频还是不错的,Windows版本遇到的解码问题不多(不像各大Linux发行版repo里各种删除专利代码的VLC),常见视频还是可以看的。Windows Media Player和UWP版的视频等应用太糟心了,好像还有一堆插件被强迫分开(好几年后才发现,那些解码器其实是系统级别的,explorer.exe的缩略图功能是吃WebP与AVIF解码器的。
PotPlayer也是个播放器,没用过。
VSCodium / VS Code
二者功能基本差不多,图标和名称有些区别,支持vscode:协议但是并没有进行关联,而是和vscodium:相关联。
VS Codium的目的主要是默认关闭了Microsoft在VS Code二进制包中的Telemetry,以及采用源代码的MIT许可证发行二进制文件;对应的,在Microsoft网站下载的VS Code是Microsoft的商业许可证。由于源代码是开源许可的,因此有人照着源代码编译出了自由许可的二进制文件。可以参考项目README 。
由于MS的一部分预装Extensions和VS Code Marketplace许可证与MIT不兼容,所以其发行时没有附带这部分Extension,并且采用了另一个API兼容的应用市场,open-vsx.org。由于这个市场发展时间较短,其扩展上架数量可能比不上MS家的。另一篇文档
给出了几种解决方案:
- 让开发者把扩展发布到
open-vsx.org中 - 让
open-vsx.org主动收录扩展 - 自己下载
vsix文件手动安装。由于没有Market Registry,自动更新可能得变成人工关注项目发布情况 - 用文件中描述的方法修改使用的Market地址,但是注意这可能不符合其Terms of Use
不是那么执着于许可证与软件自由的直接去微软官网下载VS Code就行。
大概可以通过以下Reg文件提供vscodium的vscode:支持:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\vscode\shell\open]
[HKEY_CLASSES_ROOT\vscode\shell\open\command]
@="\"C:\\Program Files\\VSCodium\\VSCodium.exe\" --open-url -- \"%1\""
以及可以修改"C:\Program Files\VSCodium\resources\app\product.json"中的extensionsGallery等部分以改变使用的Market(供参考):
"extensionsGallery": {
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"itemUrl": "https://marketplace.visualstudio.com/items"
},
"linkProtectionTrustedDomains": [
"https://marketplace.visualstudio.com",
"https://open-vsx.org"
],
备份原来的设置:
"extensionsGallery": {
"serviceUrl": "https://open-vsx.org/vscode/gallery",
"itemUrl": "https://open-vsx.org/vscode/item"
},
"linkProtectionTrustedDomains": [
"https://open-vsx.org"
],
(不知道更新会不会覆盖这个文件呢? 会覆盖的!)
- C/C++ - Microsoft
- CMake Tools - Microsoft
- ESLint - Dirk Baeumer
- Markdown All in One - Yu Zhang
- 可以看看GitHub的
GitHub Flavored Markdown SpecMastering Markdown 来学习Markdown!
- 可以看看GitHub的
- Markdown+Math - goessner
- 效果如下文Maxwell’s Equations
- markdownlint - David Anson
- Prettier - Code formatter - Prettier
- Python - Microsoft
- XML - RedHat
- YAML - RedHat
- To Be Continued
Maxwell’s Equations:
$$ \begin{aligned} \frac{\partial\mathcal{D}}{\partial t} \quad & = \quad \nabla\times\mathcal{H}, & \quad \text{(Loi de Faraday)} \[5pt] \frac{\partial\mathcal{B}}{\partial t} \quad & = \quad -\nabla\times\mathcal{E}, & \quad \text{(Loi d’Ampère)} \[5pt] \nabla\cdot\mathcal{B} \quad & = \quad 0, & \quad \text{(Loi de Gauss)} \[5pt] \nabla\cdot\mathcal{D} \quad & = \quad 0. & \quad \text{(Loi de Colomb)} \end{aligned} $$
TeX Live
写LaTeX的标喵。省心的办法直接full scheme(但是不省安装时间和磁盘空间),我打算等下一个大版本来了再去试试精简一点点安装组件(没,从来没做过,不如用MikTeX的on demand安装,当然也没试过)
Windows下整合不错,可以不开portable直接管理员安装了。
- 在线安装 :install-tl-windows.exe / install-tl-unx.tar.gz,安装过程可选用TUNA镜像作为repository
- ISO文件本地安装/直接使用
关于这个的多平台安装,主要有几种可能比较好的安装模式:
- Windows平台下,非Portable,单平台:会安装控制面板项、开始菜单项、修改系统/用户PATH。包管理器有针对管理员权限的提示。建议单机使用情况下,用管理员权限安装
- Windows平台下,Portable,单平台:无控制面板项与开始菜单项,不修改注册表,卸载直接删除文件夹。一般通过托盘图标调出预配置的Prompt Shell。可以安装在移动介质/网络位置,在不同Windows系统中使用
- Unix-like平台下,非Portable,单平台:同Windows,有
/usr/bin/下的symlink。Linux系统下可以考虑(我没用过) - Unix-like平台下,Portable,单平台:同上,无symlink,可以修改PATH和字体环境变量后使用。可以安装在移动介质/网络位置,在兼容架构与可执行文件格式的不同系统中使用
- Unix-like平台下,Portable,多平台:同上,可以安装在移动介质/网络位置,在对应架构与可执行文件格式的不同系统中调节PATH并设定环境变量后使用
其主要原因是,Windows对bin下的很多复用程序采用的是Wrapper的方式调用相同实际程序,而Unix-like系统则采用了symlink机制。由于Windows下symlink并不常用,所以一般不在Windows中提供多平台安装选项。而Unix-like中的Windows binary通过网络位置调用依然可以运行正确的binary,所以可以在其中安装Windows版本的二进制。【参考文献忘记了咪】
哎我忽然想完全可以用WSL挂载EXT分区嘛!然后去\\wsl$\kali-linux之类的地方访问Portable的!我好聪明!
TODO: 整理出一个比较精简的安装方案(等下一年的Release我去试试)。
TeXstudio
大概是颜值比较高的LaTeX编辑器之一吧,功能也挺好用的,可以设置命令一键编译、通过SyncTeX定位到页面位置(似乎都是基础功能)。可能需要在Completion那里多启用一些包以避免红色提示,比如amsfonts amsmath amssymb fontspec graphicx hyperref natbib pdfpages siunitx tex tikz xetex等等,不过它有根据\usepackage自动开启对应包的语法分析的功能。默认Build的Compiler选择xelatex就行,以避免字体和中文出现各种问题。
据说TL自带的TeXworks 实际上很强大。
在使用Sarasa字体时,显示有问题,需要到Options->Configure TeXstudio,勾选左下角的Show Advanced Options,进入到Adv. Editor选项卡,拉到最下面,于Hacks/Workarounds栏,取消勾选Try to automatically choose best display options,并将Render Mode选择为QCE以外的模式,比如Qt,以解决中文括号渲染位置与宽度错误的问题。
Zotero
本地的参考文献管理器,同时可以生成citation与bibliography。有Word/LibreOffice插件。安装BetterBibTeX之后可以用于LaTeX写作。同时有Web Translator,可以安装浏览器插件之后从网页抓取paper的元数据,感觉挺好用的(无对比仅体感)。某些citation格式可能不如LaTeX严谨,但是大概问题不大,支持的格式虽然数量很多,但是质量,就没有调查。想求稳不差钱的可以去搞EndNote
(并把全部的锅推它身上)或者国产NoteExpress(也是我文献检索课老师提到的)。
引用格式仓库 (可以先下载个Zotero Connector浏览器插件 ,就可以在这里点击后直接安装格式;或者到软件内开自动更新并且搜索格式进行安装)
官网上列举的一些插件 :找自己需要的,比如BetterBibtex之类的。
当然抓Endnote或者NoteExpress给出现的错误与非正常行为背锅也是很好的!
安全软件
很多安全软件都有扫描、实时防护、防火墙、网络控制与防护、系统清理、系统安全与加密等功能。自带的Windows Defender和Windows防火墙也有不错的杀毒与防护功能。BitDefender 、Kaspersky 、ESET 之类的都有免费版本,查杀能力应该区别不大(病毒库应该是共用的),只是防护功能可能不够丰富,以及一些不是简单采用病毒库的查杀手段没有附带。效果并不知道好不好呢。我用的是学校ITS提供的Kaspersky Endpoint Security的商业版授权,这似乎是一个企业级解决方案;学校还提供ESET NOD32。
360呀腾讯电脑管家呀这些国产的本土化比较好的软件(还是火绒吧)
开发环境
为什么会有这一部分??
Visual Studio
C++必备 C++新手之友可能合适一些。部分组件可能得去Windows SDK控制面板中的项目进行管理(比如WinDBG调试工具)
Visual Studio Installer可以安装Windows SDK 以及Visual Studio IDE(就是Core Editor),以及其他很多东西。前者提供了不同平台(交叉,Native)的编译器(msvc cl.exe)与头文件,后者主要提供了写代码与调试与生成的图形界面IDE以及各种生成方面的配置窗口,而二者之间可能通过MSBuild生成工具连接起来。总之我曾经拿过Windows SDK和MSBuild编译出来过东西。
Code::Blocks 似乎也是一个不错的IDE。至于Dev C++之类的似乎很久没更新了。
Windows驱动程序在Windows 10 x64中签名政策比较严格,似乎只接受特定根证书下的信任链,可能还受到Secure Boot的控制,就算用TestRoot也很麻烦,就不管什么WDK了。或者等我学会怎么导入MOK了再说喵。反正我目前还没学会编译驱动程序。不过WDK
里面可能有一些好玩的小程序。。
CMake
跨平台编译前配置程序。不像基于POSIX sh + coreutils的autotools。有的代码不用MSBuild的可能是这个的(我室友用过这个东西呢)。使用似乎十分简单。
Clang
现在也在VS里可以用于生成代码。有“适用于v142的C++ Clang-cl生成工具(x64/x86)”(MSBuild target?)支持,在VS安装过程中可以安装该支持。自己去LLVM官网下载安装包或者直接用VS Installer大概都可以吧。似乎优势为比msvc cl.exe对新的C++特性支持更好。
MinGW / Cygwin等GCC编译器
MinGW ,Minimalist GNU for Windows,主要包括:
- Public Domain的MinGW Runtime头文件,提供C标准库功能,生成的exe仅依赖于
MSVCRT.DLL - Public Domain的部分POSIX调用的头文件,同样仅依赖于
MSVCRT.DLL - Public Domain的w32api,通过MSDN文档写的Win32 API头文件。可以用于Win32编程
- GCC、binutils等编译器支持
其目的主要在于将GCC移植到Windows上,并提供必要的header与runtime。关注重点在于以比较高的效率在Windows中实现POSIX调用,以减少POSIX程序的移植工作量,并尽量减少需要的外部依赖,生成仅依赖于MSVCRT.DLL的exe文件。提供32位与64位支持。
其发行主要通过自己的installer进行。
一般被标识为mingw或mingw32(不过并不限于32位)。
MinGW-w64 是MinGW的fork,(似乎)更早提供了64位支持,目前GCC版本似乎也更高,实现的语言特性以及接口也更丰富,bug也更少,似乎更常用。
其发行途径有MSYS 2与Cygwin等。
一般被标识为mingw-w64,并有-i686 -x86_64等后缀。
Cygwin (runtime) / MSYS 2 (runtime)
- 提供了
cygwin1.dll/msys-2.0.dll的runtime文件与header,包装了很多POSIX调用 - 同样提供了GCC、binutils等编译器支持
- (似乎)包含了MinGW的w32api和其他头文件,以实现C标准库与Win32编程支持
其与MinGW的区别主要在于更关注POSIX兼容性,同时链接到DLL文件有许可证的问题(LGPL with some linking exceptions ?)。Cygwin与MSYS 2的Runtime在功能上有一些区别 。似乎对64位支持比较好,支持Vista开始的Windows版本。
PS > dumpbin.exe /exports cygwin1.dll
Microsoft (R) COFF/PE Dumper Version 14.26.28806.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file cygwin1.dll
File Type: DLL
Section contains the following exports for cygwin1.dll
00000000 characteristics
5F06D36C time date stamp Thu Jul 9 16:21:00 2020
0.00 version
1 ordinal base
1716 number of functions
1716 number of names
ordinal hint RVA name
1 0 000954A0 GetCommandLineA@0
2 1 00095470 GetCommandLineW@0
3 2 000FC18E _Exit
4 3 002BA988 __argc
5 4 002BA980 __argv
(...)
454 1C5 000FCE06 execl
455 1C6 000FCE14 execle
456 1C7 000FCE22 execlp
457 1C8 000FCE30 execv
458 1C9 000FCE3E execve
459 1CA 000FCE4C execvp
460 1CB 000FCE5A execvpe
461 1CC 000FC960 exit
(...)
564 233 000FD108 fork
565 234 000FD116 forkpty
566 235 000FD124 fpathconf
567 236 000FD132 fprintf
568 237 000FD140 fpurge
(...)
1711 6AE 0015C1F0 y0
1712 6AF 0015CD50 y0f
1713 6B0 0015C300 y1
1714 6B1 0015CE60 y1f
1715 6B2 0015C410 yn
1716 6B3 0015CF70 ynf
Summary
4000 .autoload_text
38000 .bss
1000 .buildid
30C000 .cygheap
D000 .cygwin_dll_common
39000 .data
9000 .edata
1000 .gnu_debuglink
4000 .idata
11000 .pdata
61000 .rdata
6000 .reloc
1000 .rsrc
1E8000 .text
11000 .xdata
二者都是为了解决为Unix设计的程序在Windows下的编译难题。因此有了奇奇怪怪的-msvc -cygwin -msys -mingw mingw-w64-i686 mingw-w64-x86_64这样的奇奇怪怪的东西喵。只有-msvc永恒不变。
MinGW似乎用自己的包管理器(MSYS?),并搭配MSYS环境发行;而MinGW-w64可以通过Cygwin
或者MSYS 2
等环境获取。这些环境都将一些常用的Unix工具port到了Windows平台中,搭配编译器实现完整的configure + make的功能。二者似乎都支持-mingwXX与-msys / -cygwin两种不同的编译方式。Cygwin的包管理器是它们的setup.exe,而MSYS 2使用pacman。个人觉得后者可能方便一点(?),而前者有X server和一些基于Xorg的程序(好不好用另说)。
这些生成的LIB文件和msvc的可能不太兼容(似乎有个工具可以转换文件格式?),直接链接可能有问题,可能得分不同版本;C的ABI兼容性可能还好,但是C++的ABI就放飞自我了;调试符号也和msvc不同,在VS中好像也没有直接GUI支持。Clang属于整合比较好的。
目前MinGW-w64和Cygwin / MSYS 2 runtime用得比较多。curl采用MinGW-w64编译,而Git的Windows版采用了MSYS 2 runtime DLL。可以安装一个MSYS 2解决全部!
mingw.org没有HTTPS,mingw-w64.orgHTTPS证书过期了喵。
似乎也有基于这些的tdm-gcc 。
/etc/nsswitch.conf改变$HOME为%UserProfile%而非/home/<username>:
db_home: windows
msys2_shell.cmd:
rem To activate windows native symlinks uncomment next line
set MSYS=winsymlinks:nativestrict
rem Set debugging program for errors
rem set MSYS=error_start:%WD%../../mingw64/bin/qtcreator.exe^|-debug^|^<process-id^>
rem To export full current PATH from environment into MSYS2 use '-use-full-path' parameter
rem or uncomment next line
set MSYS2_PATH_TYPE=inherit
msys2.ini mingw32.ini mingw64.ini可以类似进行修改。
Roslyn / Mono
Roslyn是C#还是VB支持?。编译毛线的C#喵!不过需要到VS Installer中单独选中。
Mono是跨平台C#编译器(和其他一套工具以及运行时)。
Git
重要性不用强调(需要的自然需要,不需要的自然不需要),不过基于Atom的(?)GitHub Desktop 大概也可以提供吧。后者还有GitHub账号集成呢。
直接下载的有gitk、Git-GUI支持,包含Perl与MinTTY,支持svn相关操作,有安装包,一键操作。
同时提供MinGit ,去除了Perl等内容,空间少,简单,但是没有安装包只有ZIP,需要自行设置PATH,而且删除了有用户交互的操作。
MinGit的etc/gitconfig中include了Program Files与Program Files (x86)中默认安装的Git的gitconfig,所以不能把它扔进这两个文件夹。一般是把./cmd/文件夹加入系统PATH。
关于如何让Git用PuTTY的plink.exe以配合pagent进行SSH传输,可以进行配置:
# let git use plink for SSH transport
# change --global to --system or --local as your need
git.exe config --global core.sshCommand plink.exe
git.exe config --global ssh.variant plink
# set plink socks5 proxy using Nmap ncat.exe
export GIT_SSH_COMMAND="plink.exe -ssh -proxycmd 'ncat.exe --proxy 127.0.0.1:10808 --proxy-type socks5 --verbose %host %port'"
或者用自带的ssh-agent.exe与ssh-add.exe,实现ssh.exe的pubkey认证。
也可以慢慢调节GIT_SSH_COMMAND(能附加额外参数,使用sh执行)或GIT_SSH(直接执行,参数完全由git控制)GIT_SSH_VARIANT(控制git push参数的方式)。这样可以灵活控制代理、认证方式等等细节。
/* from line 1277 */
/*
* GIT_SSH is the no-shell version of
* GIT_SSH_COMMAND (and must remain so for
* historical compatibility).
*/
conn->use_shell = 0;
ssh = getenv("GIT_SSH");
if (!ssh)
ssh = "ssh";
variant = determine_ssh_variant(ssh, 0);
果然没有Linux下的好用呢。
Python
建议直接上Python3,目前最新版为3.8.5。
PS > python --version
Python 3.8.5
- 开箱即用
- 包经过挑选与审核,安全性与性能有保障
-
conda是支持Python、R等多种语言的多功能包管理器 - 有商标问题,镜像站设置受到影响
- 可以用TUNA镜像
- (你真的好好阅读了它的许可协议吗?)
- 默认安装体积大
- 如果只是看重了
conda包管理器的话,可以考虑Miniconda 。该页面有链接讲述了两个安装包的区别。
- 如果只是看重了
- 开源协议,使用自由
- 众多镜像站
- PyPI (
pip)包审核机制不太好? - 据说依赖管理很差?
建议小白可以直接Anaconda了。不搞Data Science的可以考虑用python.org安装包。
# Optional: update pip
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
# PyPI: Use TUNA mirror
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
一些可能用到的包:
-
numpy -
scipy- 以上二者PyPI中的whl包都自带OpenBLAS,而Anaconda默认安装MKL版。参考此处
-
pandas -
statsmodels -
scikit-learn -
matplotlibandseaborn -
jupyterlabandipython -
requests -
mitmproxy -
cv2- 可以下载OpenCV安装包,解压到合适位置之后设置
PATH与PYTHONPATH变量以引入可执行文件与Python外部模块。
- 可以下载OpenCV安装包,解压到合适位置之后设置
-
pygments -
autopep8 -
pylint -
debugpy -
you-get
Java
我用的1.8的喵。可能某些程序(比如HMCL)需要JRE。下一个LTS是1.11。
可以放弃许可协议奇奇怪怪的Oracle Java了!投向OpenJDK 的怀抱吧!
注意,Oracle Java许可协议限制了Java的使用场景哦!
- 直接由上游源代码编译而成
- 似乎商标问题少一些
- 有TUNA镜像
- 只支持LTS
- 不包含
JavaFX/OpenJFX
- Java 8没有办法
- Java 11可以去下载JavaFX jmods
Zulu OpenJDK of Azul
- 支持JavaFX (需要选择’Full JRE’)
- 支持Raspberry Pi
- 支持JavaFX (LibericaFX) (需要选择’Full JRE’)
建议后两个挑一个顺眼的。
Go
似乎一些网络相关的程序经常用这个写(AntiHX呀Kalina好感度呀)。属于编译型的语言。
Rust
可以直接按照默认的rustup用户安装安装程序会有交互式提示并自动选择合适的版本;也可以去Other installation methods的standalone installers
中找到.msi,以管理员权限进行全局安装。其中-msvc的为采用cl.exeABI,而-gnu采用gcc/binutilsABI。请根据电脑上安装的C语言工具链选择合适的版本。
# Rustup: use TUNA mirror
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
Perl
建议直接用MSYS 2的。或者去下载页面 找二进制包。
Node.js
可以下载 LTS版本。
TypeScript 可以按照其界面的指示 进行安装。
# Use TUNA mirror
export NODE_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/
# You can install TypeScript via npm
npm install -g typescript
# Then run the compiler via tsc
npx tsc
其他
- R
- Ruby
- kramdown
- jekyll
- rouge
- LAMP, etc
- Nginx, Apache
- MariaDB, PostgreSQL, sqlite
- PHP
其他玩具
Anki
AutoHotkey
Blender
BlueStacks
比较好用的Android Emulator。有Hyper-V Beta版(可能性能没有优化到那么好??原版的内核是魔改VirtualBox),有按键映射。注意得找海外版,别去下中文版,认准网站结尾的.com。
curl
可以下载到有数字签名的二进制文件。Windows也自带了,但是版本好像特别低,优点似乎是不需要手动指定信任根证书(用环境变量也很方便)。
DDLC
一个不要钱的游戏。有可爱的女孩子和和谐的校园生活情节。
Dependency Walker
图形界面检查可执行文件符号表的小程序,似乎被Windows 10的SxS玩坏了?
Dism++
- 管理Appx
- 管理Windows组件/功能
- 调整部分隐藏很深的Windows设置,可以在没有组策略的家庭版系统中实现部分组策略控制的功能
- 支持系统映像
dnscrypt-proxy
frp
“内网穿透”软件。类似产品还有ngrok然而已经不继续开源了喵。花生壳也有呢。
GPL GhostScript
忘了干什么的(是PDF PS等等矢量文档的driver懂的都懂)
GIMP
图片编辑玩具(位图)。
Photoshop
GPG4win
GnuPG(核心,命令行)以及Kleopatra(GUI)。有Outlook以及资源管理器插件。
HMCL
& Minecraft
(嘤嘤嘤没钱买正版喵。而且也不太会玩)
HWINFO
ImageMagick
图片转换玩具。还有fork:GraphicsMagick 。
附赠ffmpeg 。
格式工厂
ImDisk Toolkit
InkScape
矢量图编辑玩具。
Kali Linux
可以下载个虚拟机镜像,扔虚拟机里,然后USB网卡玩,这样可以得到比较多的体验。
WSL中的发行版 似乎还没有USB模块,只有个NAT网卡,搞不了网络底层的那些工作(可能部分可以桥接试试?),尤其是Wireless Attacks部分的。不过绝大部分还是可以办得到的吧!
Kali的花样
真是很多,除了自定义ISO Live镜像
、USB全盘加密
、启动时选择数据工作区
,甚至还能[LUKS Encryption Nuke](LUKS Encryption Nuke
)(大概就是输入一个特殊的密码就抹除掉加密分区的主密钥)。kali-undercover
还可以让你的系统看起来更像Windows 10,以避免引起注意。Kali还提供了Rasyberry Pi和部分其他ARM设备上的支持
。其特性介绍可以参见这里
。
使用前的法律提醒:
In addition, misuse of security and penetration testing tools within a network, particularly without specific authorization, may cause irreparable damage and result in significant consequences, personal and/or legal. “Not understanding what you were doing” is not going to work as an excuse.
官网特意放上了下载镜像的安全小提示 ,当然想用之前务必读一读吧,这个和General的Linux发行版还是有不同的。
Krita
画画玩具。似乎支持数位板之类的。
看看可爱的吉祥物Kiki吧!
Procreate
matrix
加密IM的开放标准。和Telegram
目的差不多的一个项目,关注E2E加密。Telegram服务器今天开源了吗?
可以去element.io(原riot.im) 的网页版 使用,客户端体验似乎不太好,因为是Electron的缘故吧。
Nmap
网络端口扫描玩具。
附赠Npcap (单独下载最新安装包,Nmap自带非最新)。
去玩Kali
吧!Kali Linux!
OpenSSL
可以拿去签发、检查证书与信任链,检查TLS,加密文件之类的。
可以去curl-for-win 下载有数字签名的二进制,去MSYS 2之类的下载二进制包,去WSL中下载发行版的二进制包,或者参考OpenSSL官网的外链 提供的第三方二进制下载。
或许EasyRSA 是进行证书签发的好工具吧喵。其项目中有一些文档,对PKI体系做了一定讲解。
Oracle VirtualBox
虚拟机玩具,支持采用Hyper-V进行虚拟化。主要是支持的磁盘格式更多(可能)?
VMware也是推锅的好工具呢
PowerToys
PuTTY
Sandboxie
近期开源到了GitHub 上。特点见Windows Sandbox部分。
Stellarium
看星星玩具。
Windows Sysinternals
各种Windows上的奇妙小程序!比如Process Explorer,Process Monitor 和BSOD屏幕保护。
Tor Browser
可以去看暗网,并且有FQ功能(很慢)。境内肯定是censored了,建议按照提示用针对境内的meek-azure bridge,或者掏出自己的代理设置个前置Proxy。
不需要预配置好的隐私浏览器,只需要Tor的代理功能的话,可以下载仅有命令行程序的Windows Expert Bundle
I2P 也是类似的程序,但是似乎更强调去中心化?
v2rayN
v2ray-core 的图形界面,可以添加Vmess和SS、SSR等服务器,支持链接订阅功能。
VeraCrypt
开放磁盘加密方案虽然已经有了BitLocker。加密格式可以被cryptsetup兼容。
vlmcsd
KMS client tool & server.
Includes a bootable floppy file.
# This is a comment in Powershell
# Please run PowerShell with Administrator privilege
# view Windows KMS info
# please check your Windows Edition, making sure it is a volume licensing edition, or you will need to change your product key
# also please check your current KMS setting, such as KMS machine name
cd 'C:\WINDOWS\system32'
cscript.exe slmgr.vbs /dlv
# set Windows KMS machine name
# relpace <kms.host> with your kms machine name such as kms.localhost.localdomain
# replace `:1688' with your kms port, or omit to use default port (1688)
cscript.exe slmgr.vbs /skms <kms.host>:1688
# try to activate Windows
cscript.exe slmgr.vbs /ato
# cd to Office installation directory
# You might change `Program Files' to `Program Files (x86)' if you runs 32-bit Office on 64-bit Windows
cd 'C:\Program Files\Microsoft Office\Office16\'
# view Office KMS info
# please check your Office Edition, making sure it is a volume licensing edition, or you will need to change your product key / reinstall Office
# please note that Office 365 currently does not support KMS activation (maybe?)
# the installer of volume licensing Edition of Office might be downloaded from your provider, such as your school, company or other enterprise institution / MSDN / TechNet subscription center, etc
# also please check your current KMS setting, such as KMS machine name
cscript.exe ospp.vbs /dstatus
# set Office KMS machine name
cscript.exe ospp.vbs /sethst:<kms.host>
# Optional: change KMS port
cscript.exe ospp.vbs /setprt:1688
# try to activate Office
cscript.exe ospp.vbs /act
WireShark
网络数据包分析玩具。简单查看HTTP(S)流量考虑Fiddler、mitmproxy之类的。
附带Npcap和USBPcap安装包。
写在最后
欢迎讨论!
提出需求,我才会去完善哦~不然肯定咕咕咕了!
- GitHub作为一个代码分享、合作、Wiki搭建与MD/网页文档展示、二进制文件分发的平台,确实有很多有用的功能!很多软件都在GitHub上发布了源代码和二进制以及文档,可以进行软件更新,并且能通过issue系统接受反馈,感觉好厉害!然而千万不要被该死的政治与政策限制呀导致都不敢去用生怕哪一天上面的数据就不属于自己了!
- Windows还是很好用的!然而最新的Version也有很多奇奇怪怪的bug!!千万注意SAC的半年大版本号更新以及杂七杂八的功能更新!不过Windows 7已经过了安全保质期了,想获得更好(不是)的安全体验以及最新的功能还是考虑一下Windows 10吧。
- PowerShell功能挺强大的!然而有跨平台需求的话可能更多会用Python之类的吧(即使pscore就是跨平台软件),不过可以通过到网上抄代码的方式方便获得很多功能并且不用下载exe!(注意代码安全性)比如可以用一句话关闭LCD!比cmd.exe强大太多!
(Add-Type -MemberDefinition "[DllImport(""user32.dll"")]`npublic static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);" -Name "Win32SendMessage" -Namespace Win32Functions -PassThru)::SendMessage(0xffff, 0x0112, 0xF170, 2)
(另存为.ps1即可)
- 下载小贴士
- 认准官网,认准HTTPS,必要时采用File Hash或者Signature等密码学方式验证下载。
- 或者挑选合适的镜像站(比如TUNA )
- 也可以到GitHub上找到正确的项目页面,去下载最新Release
- 用百度搜索结果第一条、各大下载站、各大网盘、各大论坛/贴吧/社交平台的(风险大概能猜到)
关于我的电脑,终于在100次unsafe shutdowns时稍微发现了规律:
- 待机、关机不增加
- 重启增加
- 进入固件菜单、改变固件设置增加
- 非正常关机增加
建议关了休眠(与快速开机)、禁用页面文件、不用重启选项、不改固件设置喵。然而某些系统更新在选择关机之后会继续给我重启一次然后再关了(这几年已经习惯了)。
要在Markdown All in One插件中插入硬盘图,要使用/分隔的路径,同时用%20转义空格。
在vscode-markdown/src/print.ts L91
中,在处理设置了"markdown.extension.print.imgToBase64": true的情况下,有如下代码:
/* from line 91 */
const file = fs.readFileSync(imgSrc.replace(/%20/g, '\ ')).toString('base64');
用于读取硬盘图并转换为base64编码的Data URIdata:image/png;base64,AAAA...。
在那之前最好配置一下"markdown.extension.completion.root": "%UserProfile%\\Documents"之类的,以提供自动补全(然而我从来没激活过呢)。
%ProgramData%,一般位于C:\ProgramData,是一个神奇的文件夹,对应原来的C:\Users\All Users。其ACL如下:
PS > Get-Acl C:\ProgramData\ | Format-List
Path : Microsoft.PowerShell.Core\FileSystem::C:\ProgramData\
Owner : NT AUTHORITY\SYSTEM
Group : NT AUTHORITY\SYSTEM
Access : CREATOR OWNER Allow 268435456
NT AUTHORITY\SYSTEM Allow FullControl
BUILTIN\Administrators Allow FullControl
BUILTIN\Users Allow ReadAndExecute, Synchronize
BUILTIN\Users Allow Write
Audit :
Sddl : O:SYG:SYD:PAI(A;OICIIO;GA;;;CO)(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;BU)(A;CI;DCLCRPCR;;;BU)
授予了Users用户组读取、运行与写入权限,一般用于存储所有用户共享的程序数据,所以可以用来扔一些没有安装程序、但是希望被所有用户运行的程序(“绿色版软件”),以使用用户级权限就可以实现文件更新。同时,这个路径下还没有空格,其中程序由于空格路径出现问题的可能性也更小(那是什么辣鸡程序呀)。
对于其中的程序文件夹是否要附加版本号,我自己的感觉是:
- 只通过进程级别进行调用的程序,不加版本号;
- 通过DLL进行调用的,或者如同Python一样,通过各种接口进行调用的,添加版本号,以避免版本升级后调用接口改变造成的不兼容;
以上。我就把MinGit等等给扔这里去了。
一些相关的环境变量如下表。
| 环境变量 | 路径 |
|---|---|
%ALLUSERSPROFILE% |
C:\ProgramData |
%ProgramData% |
〃 |
%APPDATA% |
C:\Users\<username>\AppData\Roaming |
%LOCALAPPDATA% |
C:\Users\<username>\AppData\Local |
%ProgramFiles% |
C:\Program Files |
%ProgramFiles(x86)% |
C:\Program Files (x86) |
%ProgramW6432% |
C:\Program Files |
虽然看起来似乎很有用,然而依赖管理这种东西不是我们能手动办到的呢。也就扔点小工具进去比较合适了。
Markdown使用截图
参考文献
Further Reading
(空空如也)