slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
我的 PHP 开发工作设置
17611538698
webmaster@21cto.com

我的 PHP 开发工作设置

编程语言 0 848 2024-08-20 08:12:11

图片

目前,我的主要编程工作是:PHP、Javascript(包括 Node)、CSS、HTML 和 shell 脚本。我有时也会使用其他语言,但与这些主要语言相比,这种情况比较少见。

下面就是我的故事。

硬件


我就是在我的主力机器上写的本篇文章。它运行的是 Windows 11,这几乎完全是为了我自己的重要原因—游戏。


我所工作的公司为我配备了一台 MacBook Pro,我用它来处理诸如 VPN 访问等重要公司事务,并且因为它具有更好的视频会议体验。


但实际上,我只是进入它并将其用作 Docker 主机和网络代理。我并不喜欢 Apple 键盘,它其实是英国 ISO 和美国 ANSI 的混合体,感觉就像在儿童玩具上打字一样。我很喜欢触摸板和屏幕,它们都令人印象深刻。但我更喜欢使用鼠标。


因此,Macbook 被降级为我办公桌角落的第三块屏幕。


图片

这是一个好坏参半的事情。

我有一台笔记本电脑,偶尔在厨房餐桌上工作时会用到。它运行的是 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 ,似乎感到有点不雅,但是我把这种感觉深埋在心里并试图忽略它。

桌面 - Barrier


Barrier 是 Synergy 闭源前的一个分支。


图片

它自称是一种软件 KVM。但归根结底,我可以用它在不同的计算机之间移动鼠标,就像在我的 PC 上的两个显示器之间移动鼠标一样。如果我将鼠标从桌面显示器的右侧移开,它会出现在我的 Macbook 上,所有鼠标和键盘输入都会无缝传输到那里,就像它们是一个整体一台机器一样。


终端 - WezTerm


图片

我最近才开始使用 WezTerm。终端语言中的“最近”是指过去一两年,因为这个世界的发展速度很慢。除非有充分的理由,否则我将不会改变。


那么我的理由是什么呢?Windows Terminal/iTerm 2 有什么问题?好吧,因为WezTerm 是跨平台的,我可以在主机之间共享相同的配置 - 在 Lua!中。它不会做出奇怪的限制(例如 Suckless 永远不会支持选项卡),而且它可定制。


于定制,主要是字体、背景图像和配色方案。我通常在大多数情况下使用Gruvbox 1 Dark。


Shell-zsh

图片

我只所以选择了 zsh,因为它是 Mac 上的默认设置。我知道:我其实不怎么使用 Mac。但它几乎完全兼容 bash,适用于我关心的所有事情,而且在我使用的所有系统上都可以使用。

我尝试使我编写的每个脚本都符合 POSIX 标准,并且如果我使用了 BSD 和 GNU 之间的不同之处(例如sed -i),我会将其包装在条件中。

公平地说,Shell的选择其实并不重要。

所以,在您说任何话之前,我先说一句,我不使用 oh-my-zsh。它没有提供任何我关心的、无法用 zsh(或 bash)实现的功能。

哦,而且我几乎也不使用别名。

编辑器-Neovim


图片

我使用 Vi/Vim 已有很长时间了,但一两年前我换成了 neovim。我最初并不认为换用有什么意义,因为人们谈论的 neovim 的所有功能(他们确实在谈论它们!- 异步、LSP、嵌入式终端等)要么在最新版本的 Vim 中也有,要么我真的不感兴趣。我认为这些东西不属于编辑器。这些东西试图将 Vim 变成 Emacs。


好吧,我仍然有同样的想法,但我决定尝试一些 neovim“发行版”,只是为了看看有什么,最后还是坚持使用它。


当加载插件时,它肯定比 Vim 更容易出错,但对我来说它仍然是一款不错且舒适的编辑器 - 而且它更有前途,尤其是现在 Bram 已经离开了这个世界(RIP)。


生产率


Tmux


图片

Tmux 就像它一贯的介绍一样,是一个“终端多路复用器”,就像 GNU screen 一样。它允许您关闭终端会话并重新打开它而不会丢失您的工作,并且允许您同时运行多个终端会话。


这样做的结果是,我可以让我的工作在 MacBook 上运行,并通过 ssh 从其他机器连接,并且通过运行,tmux attach我就可以立即回到工作状态。我不需要每次都打开一堆会话,也不需要记住我所在的目录或正在运行的服务,一切都在那里。


Tmuxinator


tmuxinator 项目是 tmux 的包装器,它可以让您管理多个单独的 tmux 会话。

举个例子,下面是我目前在 macbook 上运行的项目列表:

❯ tmuxinator lstmuxinator projects:bc           biascan      ec           fabric       gce          ifpmaleith        leith-2023   msgan        chickenland  ngs          ngs-newods          ren          renaissance  scramble     sf           sf-cmssf-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 ,并使用 在其窗口集合之间切换,Ctrl-A 并通过点击 弹出菜单切换到任意数量的完全不同的项目Ctrl-A S。

Ddev

Ddev 是一款可以让你为项目创建容器化 (docker) 环境的工具。它适用于 PHP、Node 和(实验性的)Python。

图片

基本上它就是帮我们管理技术堆栈的东西。

我的公司过去常常使用自己开发的 docker-compose 包装器来实现这些,当时也没有太多选择。

不过,Ddev 确实很可靠,每次我必须处理遗留或继承的项目时,我都会在检查后立即将其转换为 Ddev。这通常不会花很长时间,而且这意味着我们有一种一致的工作方式。比如,它可以非常快速轻松地在 PHP 或 Node 版本之间切换。

对我来说,它的一些主要卖点如下:

  • 使用Mutagen作为文件系统,因此即使在 MacOS 上也运行很快(Docker 挂载速度非常慢)

  • 让你可以轻松重新配置 PHP 和 Node 版本

  • 了解大量第三方应用程序 - 例如,如果你有一个数据库 GUI 应用程序(如 TablePlus 或 DBeaver),你可以从命令行启动它

  • 支持社区维护的附加组件等。


是的,这些都挺好的。

作者:手扶拖拉斯基

评论