目前,我的主要编程工作是:PHP、Javascript(包括 Node)、CSS、HTML 和 shell 脚本。我有时也会使用其他语言,但与这些主要语言相比,这种情况比较少见。
下面就是我的故事。
这是一个好坏参半的事情。
我有一台笔记本电脑,偶尔在厨房餐桌上工作时会用到。它运行的是 ChromeOS,不过我可能会在某个时候切换成 Linux。ChromeOS 中的“开发者”模式为我提供了命令行和 shell 访问权限,因此我使用浏览器/cli 的工作流程基本相同。
我所做的所有工作都是通过 Windows 11 桌面上的 WSL 下的 Ubuntu、ChromeOS 笔记本电脑上的 SSH 或 MacBook Pro 上的 Barrier'd 进行的。
你可能觉得这听起来不切实际。但确实存在一些奇怪的问题,比如 Apple 的漏洞,你无法使用修改/etc/hosts中 IPv4 地址进行外部连接,因为系统防火墙会阻止它,但你可以使用 IPv6,即使你没有通过 IPv6 进行连接。哦哦,搞清楚这个破解方法的过程真的很有趣。
但是,尽管十年前的我从未想过这一点,但如今的 Windows Subsystem for Linux(特别是 WSL2)实际上相当不错。如果您安装了 X 服务器,您甚至可以运行 X 应用程序,而且有很多这样的应用程序可用。
不过,我并不将 X 用于任何用途。如果不是在浏览器中,我一般不会在意它,而且与使用本机浏览器相比,通过 X 使用 Linux 浏览器也没什么优点。
我禁不住使用 Windows ,似乎感到有点不雅,但是我把这种感觉深埋在心里并试图忽略它。
Shell-zsh
我只所以选择了 zsh,因为它是 Mac 上的默认设置。我知道:我其实不怎么使用 Mac。但它几乎完全兼容 bash,适用于我关心的所有事情,而且在我使用的所有系统上都可以使用。
我尝试使我编写的每个脚本都符合 POSIX 标准,并且如果我使用了 BSD 和 GNU 之间的不同之处(例如sed -i),我会将其包装在条件中。
公平地说,Shell的选择其实并不重要。
所以,在您说任何话之前,我先说一句,我不使用 oh-my-zsh。它没有提供任何我关心的、无法用 zsh(或 bash)实现的功能。
哦,而且我几乎也不使用别名。
举个例子,下面是我目前在 macbook 上运行的项目列表:
❯ tmuxinator ls
tmuxinator projects:
bc biascan ec fabric gce ifpma
leith leith-2023 msgan chickenland ngs ngs-new
ods ren renaissance scramble sf sf-cms
sf-forms sf-myplans sgh srn
这些项目都有些什么呢?嗯……它们都有很多细节,但归根结底,它们都与我随机挑选的这个项目类似:
windows:
- cms:
- ddev start
- storybook:
panes:
- watcher:
- cd web/storybook
- yarn watch
- middleware:
- workon mw8
- logs:
panes:
- cms:
- workon ngs
- docker exec -it ngs-cms-php drush -y --uri=ngs-cms.shore.signal.sh -r /shore_site/web ws --tail --full --extended --count=1
- new-cms:
- workon ngs-cms-2022
- docker exec -it ngs-cms-2022-app vendor/drush/drush/drush ws --extended
- middleware:
- workon mw8
- docker exec -it ngs-middleware-app vendor/drush/drush/drush ws --extended
- build-services:
panes:
- new-cms:
- workon ngs-cms-2022
- cd web/storybook
- yarn storybook
在这个例子中,我为 Drupal 7 项目配备了 tmux 窗口、它的 Drupal 10 重建、一些共享中间件、前端构建服务、故事书服务器和大量日志记录。
我可以使用 来旋转这一切tmuxinator
Ddev
Ddev 是一款可以让你为项目创建容器化 (docker) 环境的工具。它适用于 PHP、Node 和(实验性的)Python。
基本上它就是帮我们管理技术堆栈的东西。
我的公司过去常常使用自己开发的 docker-compose 包装器来实现这些,当时也没有太多选择。
不过,Ddev 确实很可靠,每次我必须处理遗留或继承的项目时,我都会在检查后立即将其转换为 Ddev。这通常不会花很长时间,而且这意味着我们有一种一致的工作方式。比如,它可以非常快速轻松地在 PHP 或 Node 版本之间切换。
对我来说,它的一些主要卖点如下:
使用Mutagen作为文件系统,因此即使在 MacOS 上也运行很快(Docker 挂载速度非常慢)
让你可以轻松重新配置 PHP 和 Node 版本
了解大量第三方应用程序 - 例如,如果你有一个数据库 GUI 应用程序(如 TablePlus 或 DBeaver),你可以从命令行启动它
支持社区维护的附加组件等。
是的,这些都挺好的。
作者:手扶拖拉斯基
本文为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。