在Windows上像专业人士一样开发

所以在我看来,很多人似乎并不重视Windows的开发。关于它的功能,工具的可用性以及对实际选项缺乏了解,似乎存在很多误解。

本指南有望帮助你们看到Windows是一个可行的选项,就像其他任何东西一样,而不仅仅是C#。还有一些关于Windows使用的通用技巧在开发中并不是纯粹有用的。

本指南基于我自己的工作习惯和原则,例如:如果你正在开发一些需要数据库的东西,我假设你想避免在本地运行它,因为你很快就会用各种服务中毒你的系统。相反,您通常应该尝试以某种方式在虚拟机或容器上运行此类内容。

在托管虚拟机或容器中运行更复杂的开发环境通常也是一个好主意,以确保重置环境或让新的团队成员加入,这不需要精心设计的操作系统特定指南,而这些指南永远不会完全达到-日期。

目录

  • Windows 10的隐私等问题
  • 安全
  • 终端仿真器
  • 包管理员
  • 虚拟化
  • GNU工具链,CygWin和WSL
  • Apple构建
  • 脚本,别名和自动运行
  • 路径
  • SSH密钥+选美
  • 窗口管理
  • 截图
  • 表情符号和UTF-8特殊字符
  • 字体
  • Git,Diff等工具
  • 自动重启怎么样?
  • 权限
  • 结束思想

(嘿dev.to偷看,小心点这些吗?)

Windows 10的隐私等问题

开始讨论这个主题是公平的。

有些人似乎仍然有这些顾虑。我不能说从任何大公司运行操作系统这些天是安全的,这些公司肯定不值得任何人的信任,但看起来好像微软加强并缓解了它们,并且有非官方的工具可以帮助它进一步。

首先,在设置Windows计算机或用户帐户时,不要使用Microsoft帐户,而应使用脱机帐户。这会禁用一些大多数无用的功能,例如同步Edge设置,并且您可能会被Microsoft Store唠叨关于将您的帐户转换为使用Microsoft帐户,但是单击“否”并不是那么费力。非常确定您还可以转换您的帐户,或者至少创建一个新帐户,如果您不这样做的话。

其次,同样在安装计算机时,请确保只对所有跟踪问题回答“否”,对广告回答“否”,不回答广泛的指标等等 – 这确实会使人们关注的很多事情失效。

第三,安装DoNotSpy10并调整您不熟悉的其余设置。它创造了奇迹。

在这些之后,我相信我的Windows PC至少和Google,Apple或者其他任何东西一样多。 Canonical(在Ubuntu之后,例如与亚马逊进行阴暗交易)。一些Linux,BSD等发行版可能会更加注重隐私,但是我要付出多少努力,以及我愿意容忍的系统如何被破坏是有限的。

安全

安全性确实是一个同样适用于所有系统的主题。您可以在OSX和Linux上获取病毒,无论您使用哪种操作系统,都可以在线进行愚蠢的操作。

在Windows上,默认情况下你是非常安全的,只是不要随意运行 .exe 在您的电子邮件附件或恶意网站想下载,你没事。

唯一的例外是全盘加密货币,因为我不知道任何其他解决方案比BitLocker大多没有问题,并且需要Pro版本的Windows。有DiskCryptor和其他类似的东西,但我最终不得不花费大量的精力来修复它们Windows Update打破引导扇区后。

如果您仍然担心,请使用F-Secure SAFE或许多其他安全套件中的任何一个,并获得更高级别的保护。这种活跃的永远在线安全工具在非Windows机器上并不常见,因此我可以轻松地将它们归类为不太安全。

不要禁用用户帐户控制(权限对话框),不要自动在UAC对话框中单击是,并且不要从随机源启用Office文档中的脚本内容,这样你真的会非常安全。

哦,还有一个额外的提示:使用密码管理器,无论你使用什么操作系统。有很多选项,其中一些具有更多功能(例如跨平台同步,或与其他人共享等)。挑选任何并使用它,你在互联网上已经比任何操作系统上的大多数人都更好。

终端仿真器

因此,作为重要的第一步,让我们讨论终端仿真器。

没有人想查看或使用旧的命令提示符窗口(conhost.exe不是 cmd.exe 像大多数人似乎认为)。

终端遇到很多问题,它有点慢,没有标签,复制和粘贴很笨,字体支持有点坏。但绝望不是有选择。

  1. ConEmu

选项卡,拆分视图,背景自定义,主题,大量自定义选项,地震样式向下滑动 – 选项,配置文件,运行不同不同外壳的选项等。

是的,所有这些都可以通过ConEmu实现。如果你想要的只是一个很好的Windows终端仿真器,请使用它。它易于安装,无需查看其他地方。

我觉得我需要提一个缺点 – 它配置的默认提示有点烦人。您可能想要编辑 %PROGRAMFILES%ConEmuConEmuCmdInit.cmd (检查权限 – 部分如何)或调整应用程序中的设置以更改此设置。

  1. 新的Windows终端

微软自己意识到他们的终端有点糟糕并驱逐开发者。所以他们正在积极开发一个新的。它目前处于“Early Preview Build”阶段,需要Windows 10版本18362.0或更高版本。它看起来很有希望,但可能有理由不能使用它或不想依赖它 – 你可以使用ConEmu然后。

  1. 各种跨平台终端仿真器

现在有几个我发现,你有基于Node.js的Hyper已经存在了一段时间,有Bterm,并且在https://terminalsare.sexy/#terminal-emulation上有很长的列表 – 应用 – 选择一个,选择5,尝试它们,看看你喜欢什么。

就我个人而言,我真的只喜欢Alacritty,其他我尝试过的人感觉很慢或者很笨拙,例如Hyper倾向于随机向你抛出一些弹出窗口 package.json 当你在运行默认安装之外什么都不做的时候解析错误或其他这样的废话。

包管理员

现在有一些它们,例如Scoop和Chocolatey仅举几例。我不能直言不讳声称他们很优秀,他们倾向于要求我启动一个单独的管理shell来运行他们的命令,而不是在我运行它们时要求权限升级,但是这个部门显然有希望并且目前存在一些选项。

我个人使用Chocolatey来安装一些东西,它似乎没有问题。

虚拟化

如上所述,我依靠虚拟化来保持我的各种开发环境等与我的主机操作系统分开,无论操作系统有什么问题。用各种项目特定的依赖关系等来毒性你的主操作系统似乎是错误的,这可能会迟早引发冲突和其他不可维护的情况。

由于我倾向于仅以与操作系统无关的方式工作,所以我所做的所有开发都需要使用跨平台工具。我现在所知道的只有2种基本技术可以做到:

  1. VirtualBox的
  2. 搬运工人

如果你知道你将永远只使用Docker,那么没问题,请使用他们推荐的Windows方法安装Docker,你就是金色的。它取决于Hyper-V,如果您还没有安装它,安装程序将为您启用,这应该可以解决您的所有问题。我自己从来没有对Hyper-V感到满意,所以很有可能你会遇到一些随机问题,例如:游戏和其他东西中的反作弊系统,但对于纯粹的开发使用它应该没问题。

对于任何其他情况,我强烈建议使用VirtualBox,如果您还需要Docker,可以通过Minikube进行安装(托管Kubernetes环境,通过Docker轻松访问Docker) minikube docker-env)或旧的和非常优越的Docker Toolbox for Windows。 Docker确实是由一群与现实脱节的人经营的,所以他们难以让它能够运行它的工作版本

我特意将VMWare作为一种选项,因为它不能与您想要用来管理虚拟机的所有工具一起使用,例如: Vagrant,自从VirtualBox已经成熟以来,这对我来说并不值得花费多年。

GNU工具链,CygWin和WSL

一些GNU工具(以及其他一些典型的* nix工具)非常漂亮,虽然Windows确实带有一些类似的命令行工具,但Power Shell可能能够以一种简洁的方式完成一堆类似的功能,必须承认,我从来没有对这两种选择都非常满意。

我做的是安装CygWin(我用的是 x86_64 版本)并把它放在我的 P新高,并使用CygWin设置工具来管理我可能想要安装的各种内容。为何使用 nslookup 当我可以使用 digcurl 很容易安装 grep,和 ls 节拍 dir 同样。当工具捆绑自己的时候偶尔会出现一些问题 cygwin1.dll 或者如果你最终安装MSYS2,但这些往往很少见,而且相当容易解决。我想MSYS2也是CygWin的可行替代方案,虽然我对它几乎没有个人经验,但它使用 pacman 类似于Arch Linux的包管理而且有点整洁。

然后,当我遇到一些罕见的情况,当Windows支持某些工具时,我真的想要使用有点糟糕,我倾向于能够在Windows子系统Linux(很可怕的名称)(即WSL)下运行得很好。作为一个例子,我在Windows上运行Jekyll时遇到了一些问题,因为他们的开发人员显然并不关心他们的工具是跨平台的,在WSL中运行它并且很好。

使用WSL,我可以在Windows上运行X Server,这是一个额外的乐趣,例如VcXsrv甚至运行GUI实用程序。仍有很多限制,例如让PulseAudio路由到真正的Windows-side似乎几乎不可能的atm,但这里又有相当多的承诺。

最重要的是,我有时真的很少兴奋,例如VirtualBox上的Fedora试用了一些即使在WSL下也无法运行的软件。

Apple构建

需要OSX来构建iOS / MacOS应用程序吗?您认为需要购买Apple硬件吗?

有各种构建自动化系统可以处理它,以及像MacinCloud这样的东西。

所以这也不能阻止你使用Windows,这样的解决方案可能会引导你选择正确的跨平台开发?

实际上,这种敌对的商业行为应该足以抵制像Apple这样的公司,但有时你必须处理你想要为运行Apple硬件的人发布你的应用程序的现实。

脚本,别名和自动运行

BASH脚本对于某些事情来说有点简洁,人们知道如何轻松地在其上设置自己喜欢的别名。然而,这不是唯一的选择。

Windows shell无论如何都支持许多基本操作,特别是如果你已经安装了CygWin / MSYS2。我可以,例如跑 find . -name "*.sh" -exec git update-index --chmod=+x {} ; 要么 cat README.md | grep https:// 正好。环境变量?可以,只需使用 set FOO=bar

批处理脚本已经存在了很长一段时间,虽然大多数人看起来都不熟悉,但它通常足以执行最常见的问题。

你可以写 .bat 要么 .cmd 脚本,以及内联运行它们。例如。而不是像 $(minikube docker-env) 要执行该命令的输出,您可以运行 @FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i – 看起来非常时髦,如果你不习惯看它,但效果也一样。对于批处理脚本功能范围之外的某些事情,还可以选择运行VBScript,但是一如既往,我倾向于选择跨平台解决方案。

您只需在Windows上运行BASH脚本即可安装 bash 通过CygWin(或使用WSL),如果人们小心不假设某些事情,他们往往会工作正常。

对于任何稍微复杂一点的选项,选项往往是用例如编写脚本或工具。 Python,Go或Rust。 Ruby是一个广泛使用的选项,有些使用相当成功,但在我看来,分发用Ruby制作的工具是一种痛苦。如果你正在进行JavaScript开发,你可以使用 npm 脚本或各种CLI实用程序库。

那么别名怎么样?如果你想要你怎么办? ls 实际运行 ls -haF --color=always?那么,有一个解决方案。

DOSKEY ls=ls -haF --color=always 

再次,如果你从未见过它,有点奇怪,但它确实有效。

想要永久?有办法通过ConEmu和其他一些工具来实现,但是对于更通用的解决方案,自动运行起作用的地方。

创建一个脚本,例如在 %USERPROFILE%init.cmd 把你的东西放在那里。为了兼容性和方便性,用一行代表前缀 @echo off 禁用每次启动新shell时输出的命令。

这使整个文件看起来更像这样:

@echo off DOSKEY ls=ls -haF --color=always 

现在你想打开 regedit.exe 并浏览到 HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor 并创建一个名为的“可扩展字符串”值 Autorun (如果还不存在)数据 %USERPROFILE%init.cmd (或者你的脚本所在的路径)。

如果您相信您的计算机在互联网上找到的随机脚本的安全性(曾经注意到人们只是成交量曲并盲目地将它们用于bash?,),你也可以将其保存为 autorun.reg 然后双击它。

(HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor) "Autorun"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,   4c,00,45,00,25,00,5c,00,69,00,6e,00,69,00,74,00,2e,00,63,00,6d,00,64,00,00,   00 

这将为您提供一个脚本,您可以轻松编辑并获取别名或其他常用命令,例如设置您的Docker环境或任何您想要的每个实例 cmd.exe 无论它在哪个终端,您都在运行。

路径

有些人可能没有意识到这一点,但你可以管理 P新高 在Windows中也是如此。您可以通过上面的脚本执行此操作(set P新高=%P新高%; – 注意到 ; 并不是 : 作为分隔符),或通过 View advanced system settings 您可以在控制面板/开始菜单中找到该选项。在里面 System Properties 打开的对话框 Advanced 选项卡,单击 Environment Variables,找到系统范围或用户特定的 Path 并单击 Edit...。很简单吧?

把你的CygWin bin 目录在这里。

SSH密钥+选美

根据我的经验,SSH键在Windows上有点烦人,因为生成它们的唯一合适的工具似乎是来自PuTTY -suite的PuTTygen,但它默认使用它自己的格式,你需要找到选项以获得适当的标准OpenSSH兼容的东西。然而,这是非常可行的。

Pageant是Windows的SSH密钥代理。我还没找到另一个真正有用的。

使用PuTTy安装程序获取PuTTygen以及Pageant。使用PuTTygen生成密钥,存储密钥 .ppk 文件系统中某处的文件,如果要保持它们始终加载,请将快捷方式添加到您的文件系统中 %APPDATA%MicrosoftWindowsStart MenuPrograms初创公司 – 文件夹,当您登录时,它们将被加载到Pageant。

如果这样做,请确保您的磁盘已完全加密货币并具有合理的安全性,您不希望SSH密钥被轻易窃取。

窗口管理

对我来说,WinSplit Revolution一直在做我快速有效地组织窗口所需要的东西,但并不适合所有人,官方项目已经死了。有一个分叉WinSplit Reloaded但它似乎也没有积极开发。

如果你需要它们,那里确实有很多选择,只需查看https://www.slant.co/topics/1249/~best-window-managers-for-windows#1获取其他一些列表。

截图

我以前运行https://getgreenshot.org/截图,我觉得我还是应该……但是 LWin+Shift+S 这对我来说足以快速复制我的屏幕的一部分并将其粘贴到我的通讯工具中,所以我很少需要其他任何东西。我也听说过很多关于LightShot的好消息,而且还有很多选项,这里还有一个选项列表:https://alternativeto.net/software/greenshot/?platform =windows

表情符号和UTF-8特殊字符

如今 LWin+. 打开一个表情符号选择器,当你想在输出,文档或其他东西中添加东西时非常漂亮。 ?

不可否认,它在某些方面有点笨拙(我倾向于打击 Esc 关闭它),但使用它一段时间后感觉很自然。

字体

与所有其他系统一样,Windows也支持字体,包括。非常标准的TrueType字体。这些可用于使您的IDE以及终端仿真器更清晰,更好看。我个人非常喜欢在我的终端和IDE上使用DejaVu字体,因为它们看起来很干净,所有字符都明显不同。

安装就像下载一样简单 .zip,开放 Fonts (在“设置”或“控制面板”中)。

看起来你也可以从微软商店获得一些字体,但实际上它的产品很少。

Git,Diff等工具

忘掉那可怕的 Git Bash for Windows 人们似乎最终得到了。它使你的系统中毒了一些可怕的尝试,让BASH只是为了运行Git并且无法使其工作得非常好。

对于CLI使用,您可以使用https://git-scm.com/download/win中的官方二进制文件,或者再次通过CygWin安装它。两者都应该工作,两者都可能需要一些配置来使你的diff工具完美地工作,并且可能设置一个 GIT_SSH 环境变量让它使用 plink.exe (再次从PuTTY包中)使用Pageant作为SSH密钥(https://stackoverflow.com/a/10353937/3989287)。

但是,为什么在使用GUI工具时可以使用CLI,这将使您更好地了解存储库的状态以及您要提交的更改?

我个人最喜欢的atm是GitKraken,但SourceTree和许多其他选项都存在。

对于差异化,我对WinMerge情有独钟。我从来没有遇到过一个差异/合并工具,它比我更好地完成了我需要的东西。许多选择再次存在。

自动重启怎么样?

是的,Windows现在倾向于自动安装更新并在必要时重新启动。它是一种安全功能,如果您将编辑器设置为自动保存文件,通常会引起很小的烦恼(尽管有些像Sublime Text现在记住内容甚至没有保存),并且不会有大量重要的事情在运行在终端模拟器或隐身窗口或类似的。

避免此类问题的最简单方法是在Windows Update设置下设置“活动时间” – 这将阻止您在工作时间或类似情况下进行更新。同样,如果你要参加一个重要的会议,也许只是暂停更新 – 在同一个Windows Update设置中有一个新的“7天暂停更新”按钮。

对我个人而言,在我工作的某些计算机上也是不够的,因为我可能会离开,例如这个帖子打开了很长一段时间,我不想回到它消失。

根据您的Windows版本,您还可以执行许多其他操作。

  • 将自动安装更改为通知
  • 删除UpdateOrhestrator的重新启动功能
  • 组策略更新和注册表黑客攻击

根据您的需求和情况,其中一些比其他更适用。

权限

但是讨厌的文件权限怎么样?我需要时无法编辑文件??

人们从根本上不了解Windows上的文件权限。人们禁用用户帐户控制,或只安装外面的东西 Program Files 或类似的解决他们不理解的权限系统而不是学习它。

这就像推荐你运行一切一样 root 或跑步 chmod -R 0777 / 在Linux上,或禁用SELinux – 疯狂,但你100%知道那些已经做到这一点的人,因为他们只是无法学习。

如果您需要运行命令并且您没有权限执行此操作 – 以管理员身份运行命令提示符/其他应用程序,则很容易。在“开始”菜单中,您通常可以右键单击任何项​​目,然后选择“以管理员身份运行”。把它想象成一个 sudo

那么当你觉得你的用户应该有权访问这些文件时你会怎么做呢?您可以编辑特定文件或文件夹的权限。

打开文件浏览器,浏览到相关内容,右键单击该条目并选择“属性”。

然后切换到“安全”选项卡,您可以查看为其设置的权限。想要改变它们,例如为自己添加权限?

点击 Edit...,然后,例如 Add... 当它要求“输入要选择的对象名称”时,在我的情况下,你可以用你的用户名写 Lietu 并击中 OK

在屏幕上选择自己后,您可以例如点击 Allow 复选框 Full control,然后单击 OK 在对话框和voilá你的问题解决了。

这更像是 sudo chown file

结束思想

这些年来,我一直是一个沉重的* nix用户,但实际上我发现找不到一个我觉得舒服的* nix桌面是不可能的。

Windows曾经更糟糕,如果你有糟糕的经历,我会得到它,但自从Windows 7问世以来,微软在稳定性和可靠性方面的确得到了显着改善。您可能遇到的错误更容易,更容易找到在线解决方案,而您通常只有较少的错误。我在Twitter上发现@MicrosoftHelps真的是我所拥有的最佳客户支持体验。

Linux在驱动程序,错误和设计不佳的功能方面存在太多问题,例如:拖放不工作或有单独的剪贴板供鼠标选择和 Ctrl+CCtrl+V

OSX过于愚蠢,甚至没有基本的能力来控制每个应用程序的成交量,或者根本没有调整任何设置。如果你不喜欢Apple喜欢的方式,那就太糟糕了。

实际上没有其他成熟的桌面环境可供我依赖的工具。

Windows多年来一直是一个良好的开发环境,并且随着Microsoft积极修复问题,添加WSL之类的内容以及真正倾听开发人员的反馈,Windows一直在变得越来越好。

最重要的是,您可以使用更强大的工作计算机,例如内置4G调制解调器,触摸屏等,价格仅为Mac的一小部分。

我想听听你们是否有任何其他提示,或者你可能想提到的Windows开发环境的问题 – 我们可以一起解决一些仍然存在的痛点。

我的下一个目标可能是尝试自动化我上面写的一堆 – 通过运行一个Batch脚本或VBScript文件来设置一个不错的Windows环境。如果你有任何提示,那我就是耳朵?

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/lietux/developing-like-a-pro-on-windows-4bbh ,版权归作者所有,未经许可,不得转载
你可能还喜欢