用 SSH 登录服务器用 Vim 在线写 PHP 代码的体验是怎样的?
程序员文章站
2022-05-28 18:57:11
...
好像一些*大公司开发web程序就是这样的,
看起来很牛B的感觉,想问下
这里的关键是:在“服务器上写代码”,而不是“用vim写代码”。
采用这类开发方式的公司,一般都是工具链比较完善的,又或者是采用模块式开发的,子系统不能跑在本地跑的。要说安全,也是一个理由,但这个理由相当牵强,就算把淘宝的代码全部送给你,你也搞不出另外一个淘宝的。代码本身是不值钱的,值钱的是对业务的支持(纯技术公司,开发OS的公司,开发小型硬件的公司除外)。
只有当在服务器上写代码的成本,比在本地上写要小,才有必要部署这么一套系统,不然就是装B浪费钱。这里可以从几个浅而易见的成本入手。
1, 编译成本。做一个修改,如果要等2分钟编译,就很恶心了。但如果部署了分布式编译系统,把编译时间变成5秒,情况就很不一样。
2, 开发的模块依赖于另外一个不能在一个机器上跑的服务,例如搜索服务。
3, 重装配置环境的成本。码农们最不喜欢的“重装”,“配置”。采用在服务器上开发,支撑系统的管理员就可以很方便地对工具链进行维护,升级。想想,你进入一个新项目,直接服务器上就可以立马开干,代码在服务器编译运行,不用本地配置,是不是很爽啊!!
所以,有这种需求的,一般来说都是比较成型的相对不小的公司。
好,问题回到“如何在服务器上写代码”上。
适应vim的用vim,适应emacs的用emacs,喜欢IDE的可以想办法直接编辑服务器上的文件(例如开samba)。 有时为了应急也这样干过,我御用的是Emacs。
除了使用Git等版本控制外,如果你非要直接编辑服务器文件,其实还有种东西叫做sftp,在Linux下一行sshfs命令就能Mount上去。
在Windows,如下图:
要说安全,我代码都给你改了,还有什么安全可言?
主要还是考虑到环境的部署问题吧。 既然讲体验,那我就说说自己的体验吧。正在实习,是法国一家为各种硬件供应商比如sumsung 等提供硬件开发部署IDE的,就是软件开发公司,//这是背景
=====
开发环境是局域网服务器,centos,本地是各种windows,从xp到win10都有。。我很想吐槽为啥还有xp。。。而且系统账号能在xp win7、8、10上通用我感觉是很牛逼的。。。
本地windows环境可以联网,但只有浏览器,pdf阅读器,office套装和nodepad++,还有一个连服务器的软件叫NX client。开发人员的账号是没有安装软件的权限的,不过自己测试绿色版软件是可以用的。想要装程序也可以申请,SA会给你装,问题也不大
作为实习生,开发环境是centos 6.5,不可联网,通过NXclient连接,有图形化界面(操作手感类似在host系统上用虚拟机)初始化账号的时候可以选择是选择gnome桌面或kde桌面,里面公司所需要的开发环境配齐了,IDE主要是eclipse和公司内部自己的IDE,文本编辑器,只有原生的vim和gvim,没错连gedit都没有,甚至连pdf阅读器这些都没有。。。代码提交使用svn提交到公司的代码仓库,由测试人员测试。连接速度由于是局域网,基本无延时,而且速度很快。
实习生的账号权限是不能在win和linux里ssh的,但是带我的技术主管是可以的,所以我需要下载什么文件之类的,要邮件发给带我的人,然后他给我放到/tmp里我才能用
所以写代码的时候,java 就用eclipse写了,其他的都是拿vim来写,体验就是vim使用日趋熟练,因为根本没得选。。。另外这种登录到局域网服务器的开发环境上,有图形界面,操作也不是大问题。但是很多东西都得用命令行去执行,因为根本没装图形客户端;还有一个好处就是下班了,直接退掉NX客户端关闭windows就行,linux里的都不用关,下次打开就是上次退出连接的样子,不管用的哪一台电脑,连接上你的开发环境就可以继续工作。
最后吐槽一句法语键盘真尼玛难用。。。 jetBrains的IDE都有sftp的功能。写完点个同步就行。 其实也可以sshfs,把服务器的文件映射到本地。这样就可以用本地IDE去编辑。 还不错 当年写的是java和js 因为build环境本地没有。体验就是和本地开发一样 但是ubuntu和centos目录部分不一致有点闹心。
内网环境 一点不卡 电脑上什么也不用装 一个半透明终端搞定。
敞亮。
当时命令行的svn也是这么学的 包括命令行diff 时间久了 linux也就挺熟练了。
而且手机也能干活了…
而且后来换了mac 基本是无缝对接的… 在最初的一年多里,我就是这么干的
Shell + PHP + JS + HTML + CSS 全部远程vim编辑
当时的情况
1、网络还不错,延时2、整个项目只有我一个人
3、非核心业务,生产环境就是开发环境
最大的感觉是极大地满足了初学者的装逼需求
把xshell调成半透明,背后放张星空的图片,用vim多窗口模式编辑一块块红红绿绿的文本
和旁边同事用白底zend studio的界面形成鲜明的对比,想想就觉得很爽
真正一根网线一台电脑可以办公,不用搭建什么本地环境,过年回家装个终端就可以处理问题
需要记完整的函数名,记得你整个项目的组织结构,因为没有代码补全和跟踪功能,不过我觉得记记更健康
调试靠浏览器运行,命令行运行,echo输出和错误日志,熟悉的话效率也不低
这样做的优势就是省去了整个部署环节
包括版本控制,开发、生产环境的差异造成的不一致,数据同步问题
因为根本不需要发布
问题也是相对的,没有版本控制,备份回滚基本靠手,不过一般都是一路往前的
另外一点,直接用vim写代码,很容易有不严谨的地方,产生很多waring和notice,这点用IDE能很好的避免。如果你能用vim写代码而放在IDE中检查灯全绿的话,又是另一种成就感了
不过现在不这么干了,多人协作的时候,不能只顾自己爽。建立完善的版本控制、测试、发布流程,才是更稳妥的做法
想自己体验这种方式的话,就如你所说,在虚拟机中,装个centos
然后装上 PHP + Nginx / Apache + Mysql
在宿主机用SSH终端连接就好了
自己装环境也是一种乐趣呢 : ) 完 预测一大波美团同行正在赶来,不知道他们的前端nodejs改造成功了没 这么做最大的一个反人类的体验是如果开会拿着笔记本离开网络的话,之前建立的 ssh session 很可能就不能恢复了,所有你打开的 log、Vim session、辅助信息等很可能都得重新开一遍。有时候网络环境不稳定,在编辑中的文件若没保存,ssh session 忽然断掉了,你就只好自扇耳光并感叹命运不公了。
/*
光吐槽不提出解决方案是不够意思的。有很多童鞋针对这个问题提到了一些不错的解决方案:tmux、screen、autossh、mosh、nohup 等。多谢大家的提醒,学习了。其中 tmux 我比较熟悉。如果公司方面在开发服务器上安装了 tmux 包并且配置、运行了 tmux server 的话,在网络断掉再恢复连接后,你可以再连到远端的 tmux server 上,它是保存了上次断掉之前的所有状态的。
不过也是会存在一定的风险 tmux server 丢掉这些信息的,特别是在很多人同时连接到一个 tmux 服务器上,而你又中途断掉连接很久时。
*/
养成良好习惯,平时敲完一段就 :w 一下,非常重要——这关系到了你能否常陪老婆孩子,家庭是否和睦,世界是否和谐,以及美国钟情局码农是否会调用平时自己埋下的后门 Fortran 函数核爆太阳系。
另外一个缺点是,平时只会用 IDE 来编码的童鞋在这种公司里面会感到一种举世皆醉我独醒的孤独感,高处不胜寒。
这么做的好处当然也不少。比较重要的一点是,有了一个集中管理 ssh session 的跳板机,谁做了什么,谁没做什么,只要 boss 乐意,都是可以反查到的,对于企业而言安全不少。而且,使用公司一直在线的服务器,程序员在外网的时候可以通过 VPN 连接到公司内网,便于紧急事故处理(和加班)。另外一个潜在的优点就是,如果统一了开发工具链,开发工作上也能够方便管理,不过这个一般不现实,每个程序员有自己的喜好,一般都是会有各自的账号让他们自己去配置。
下面认真地解答题主的一些疑问。
取决于公司网络情况,大家热爱开会的程度,你工位离 WI-FI 热点的距离,以及最重要的,你自己对于手头上的 Vim、PHP 等相关开发工具的理解程度及品味高低。没有自己一直在迭代的 dotfiles 的此类开发人员一般会觉得体验不好。如果公司统一了工具链,则体验取决于大家使用的统一环境下的工具链的配置人是否自己写过代码。
你再也不可能说在我的机器上是正常的这样的话了。开发机不在自己身边的时候可以 VPN 到内网紧急修 Bug 了,所以你的周末会变的很充实。另外,你也不用在自己的本地机器上搭建代码运行所依赖的基础服务。等等。
Git、SVN、CVS 等。也有人利用 linux 文件系统的可靠性达到了无版本管理胜有版本管理,境界高。
挺多的。不过也有公司利用类似于 Vagrant 这样的工具,让程序员们利用统一配发的打包好的虚拟机文件在本地开发。
情况有很多种:
1. 需求来了,分析需求,需求很无脑,驳回需求,傻笑。
2. 需求来了,分析需求,需求很赞很被需求,开始开发。提出技术实现方案,ssh 连接至跳板机,在跳板机上 ssh 连接到开发机,在开发机上进入代码所在处,打开 Vim 开始写代码,写完了,傻笑。
或者等效感受延时800玩DOTA
例如谷歌,Facebook 之类的。
他们都不在本地写代码
听说国内也有公司这么干,局域网服务器,大家把代码都写里面,也down不下来,安全
先ssh远程登录服务器
然后在线用vim写代码,例如php
直接本地浏览器访问调试
看起来很牛B的感觉,想问下
这种写代码方式体验如何?
这种方式比在本地开发后上传有何优势?
版本同步问题如何解决???
国内这么开发的公司多吗??
具体详细的开发流程是怎样的?
我在本地想学习下这种开发方式如何学习?搭建个虚拟机装个centos就行了吗,
需要什么服务器或客户端软件?
回复内容:
先说个不好听的:所有vim不vim的,都没抓住这个问题的本质关键!!这里的关键是:在“服务器上写代码”,而不是“用vim写代码”。
采用这类开发方式的公司,一般都是工具链比较完善的,又或者是采用模块式开发的,子系统不能跑在本地跑的。要说安全,也是一个理由,但这个理由相当牵强,就算把淘宝的代码全部送给你,你也搞不出另外一个淘宝的。代码本身是不值钱的,值钱的是对业务的支持(纯技术公司,开发OS的公司,开发小型硬件的公司除外)。
只有当在服务器上写代码的成本,比在本地上写要小,才有必要部署这么一套系统,不然就是装B浪费钱。这里可以从几个浅而易见的成本入手。
1, 编译成本。做一个修改,如果要等2分钟编译,就很恶心了。但如果部署了分布式编译系统,把编译时间变成5秒,情况就很不一样。
2, 开发的模块依赖于另外一个不能在一个机器上跑的服务,例如搜索服务。
3, 重装配置环境的成本。码农们最不喜欢的“重装”,“配置”。采用在服务器上开发,支撑系统的管理员就可以很方便地对工具链进行维护,升级。想想,你进入一个新项目,直接服务器上就可以立马开干,代码在服务器编译运行,不用本地配置,是不是很爽啊!!
所以,有这种需求的,一般来说都是比较成型的相对不小的公司。
好,问题回到“如何在服务器上写代码”上。
适应vim的用vim,适应emacs的用emacs,喜欢IDE的可以想办法直接编辑服务器上的文件(例如开samba)。 有时为了应急也这样干过,我御用的是Emacs。
除了使用Git等版本控制外,如果你非要直接编辑服务器文件,其实还有种东西叫做sftp,在Linux下一行sshfs命令就能Mount上去。
在Windows,如下图:
要说安全,我代码都给你改了,还有什么安全可言?
主要还是考虑到环境的部署问题吧。 既然讲体验,那我就说说自己的体验吧。正在实习,是法国一家为各种硬件供应商比如sumsung 等提供硬件开发部署IDE的,就是软件开发公司,//这是背景
=====
开发环境是局域网服务器,centos,本地是各种windows,从xp到win10都有。。我很想吐槽为啥还有xp。。。而且系统账号能在xp win7、8、10上通用我感觉是很牛逼的。。。
本地windows环境可以联网,但只有浏览器,pdf阅读器,office套装和nodepad++,还有一个连服务器的软件叫NX client。开发人员的账号是没有安装软件的权限的,不过自己测试绿色版软件是可以用的。想要装程序也可以申请,SA会给你装,问题也不大
作为实习生,开发环境是centos 6.5,不可联网,通过NXclient连接,有图形化界面(操作手感类似在host系统上用虚拟机)初始化账号的时候可以选择是选择gnome桌面或kde桌面,里面公司所需要的开发环境配齐了,IDE主要是eclipse和公司内部自己的IDE,文本编辑器,只有原生的vim和gvim,没错连gedit都没有,甚至连pdf阅读器这些都没有。。。代码提交使用svn提交到公司的代码仓库,由测试人员测试。连接速度由于是局域网,基本无延时,而且速度很快。
实习生的账号权限是不能在win和linux里ssh的,但是带我的技术主管是可以的,所以我需要下载什么文件之类的,要邮件发给带我的人,然后他给我放到/tmp里我才能用
所以写代码的时候,java 就用eclipse写了,其他的都是拿vim来写,体验就是vim使用日趋熟练,因为根本没得选。。。另外这种登录到局域网服务器的开发环境上,有图形界面,操作也不是大问题。但是很多东西都得用命令行去执行,因为根本没装图形客户端;还有一个好处就是下班了,直接退掉NX客户端关闭windows就行,linux里的都不用关,下次打开就是上次退出连接的样子,不管用的哪一台电脑,连接上你的开发环境就可以继续工作。
最后吐槽一句法语键盘真尼玛难用。。。 jetBrains的IDE都有sftp的功能。写完点个同步就行。 其实也可以sshfs,把服务器的文件映射到本地。这样就可以用本地IDE去编辑。 还不错 当年写的是java和js 因为build环境本地没有。体验就是和本地开发一样 但是ubuntu和centos目录部分不一致有点闹心。
内网环境 一点不卡 电脑上什么也不用装 一个半透明终端搞定。
敞亮。
当时命令行的svn也是这么学的 包括命令行diff 时间久了 linux也就挺熟练了。
而且手机也能干活了…
而且后来换了mac 基本是无缝对接的… 在最初的一年多里,我就是这么干的
Shell + PHP + JS + HTML + CSS 全部远程vim编辑
当时的情况
1、网络还不错,延时2、整个项目只有我一个人
3、非核心业务,生产环境就是开发环境
最大的感觉是极大地满足了初学者的装逼需求
把xshell调成半透明,背后放张星空的图片,用vim多窗口模式编辑一块块红红绿绿的文本
和旁边同事用白底zend studio的界面形成鲜明的对比,想想就觉得很爽
真正一根网线一台电脑可以办公,不用搭建什么本地环境,过年回家装个终端就可以处理问题
需要记完整的函数名,记得你整个项目的组织结构,因为没有代码补全和跟踪功能,不过我觉得记记更健康
调试靠浏览器运行,命令行运行,echo输出和错误日志,熟悉的话效率也不低
这样做的优势就是省去了整个部署环节
包括版本控制,开发、生产环境的差异造成的不一致,数据同步问题
因为根本不需要发布
问题也是相对的,没有版本控制,备份回滚基本靠手,不过一般都是一路往前的
另外一点,直接用vim写代码,很容易有不严谨的地方,产生很多waring和notice,这点用IDE能很好的避免。如果你能用vim写代码而放在IDE中检查灯全绿的话,又是另一种成就感了
不过现在不这么干了,多人协作的时候,不能只顾自己爽。建立完善的版本控制、测试、发布流程,才是更稳妥的做法
想自己体验这种方式的话,就如你所说,在虚拟机中,装个centos
然后装上 PHP + Nginx / Apache + Mysql
在宿主机用SSH终端连接就好了
自己装环境也是一种乐趣呢 : ) 完 预测一大波美团同行正在赶来,不知道他们的前端nodejs改造成功了没 这么做最大的一个反人类的体验是如果开会拿着笔记本离开网络的话,之前建立的 ssh session 很可能就不能恢复了,所有你打开的 log、Vim session、辅助信息等很可能都得重新开一遍。有时候网络环境不稳定,在编辑中的文件若没保存,ssh session 忽然断掉了,你就只好自扇耳光并感叹命运不公了。
/*
光吐槽不提出解决方案是不够意思的。有很多童鞋针对这个问题提到了一些不错的解决方案:tmux、screen、autossh、mosh、nohup 等。多谢大家的提醒,学习了。其中 tmux 我比较熟悉。如果公司方面在开发服务器上安装了 tmux 包并且配置、运行了 tmux server 的话,在网络断掉再恢复连接后,你可以再连到远端的 tmux server 上,它是保存了上次断掉之前的所有状态的。
不过也是会存在一定的风险 tmux server 丢掉这些信息的,特别是在很多人同时连接到一个 tmux 服务器上,而你又中途断掉连接很久时。
*/
养成良好习惯,平时敲完一段就 :w 一下,非常重要——这关系到了你能否常陪老婆孩子,家庭是否和睦,世界是否和谐,以及美国钟情局码农是否会调用平时自己埋下的后门 Fortran 函数核爆太阳系。
另外一个缺点是,平时只会用 IDE 来编码的童鞋在这种公司里面会感到一种举世皆醉我独醒的孤独感,高处不胜寒。
这么做的好处当然也不少。比较重要的一点是,有了一个集中管理 ssh session 的跳板机,谁做了什么,谁没做什么,只要 boss 乐意,都是可以反查到的,对于企业而言安全不少。而且,使用公司一直在线的服务器,程序员在外网的时候可以通过 VPN 连接到公司内网,便于紧急事故处理(和加班)。另外一个潜在的优点就是,如果统一了开发工具链,开发工作上也能够方便管理,不过这个一般不现实,每个程序员有自己的喜好,一般都是会有各自的账号让他们自己去配置。
下面认真地解答题主的一些疑问。
这种写代码方式体验如何?
取决于公司网络情况,大家热爱开会的程度,你工位离 WI-FI 热点的距离,以及最重要的,你自己对于手头上的 Vim、PHP 等相关开发工具的理解程度及品味高低。没有自己一直在迭代的 dotfiles 的此类开发人员一般会觉得体验不好。如果公司统一了工具链,则体验取决于大家使用的统一环境下的工具链的配置人是否自己写过代码。
这种方式比在本地开发后上传有何优势?
你再也不可能说在我的机器上是正常的这样的话了。开发机不在自己身边的时候可以 VPN 到内网紧急修 Bug 了,所以你的周末会变的很充实。另外,你也不用在自己的本地机器上搭建代码运行所依赖的基础服务。等等。
版本同步问题如何解决???
Git、SVN、CVS 等。也有人利用 linux 文件系统的可靠性达到了无版本管理胜有版本管理,境界高。
国内这么开发的公司多吗??
挺多的。不过也有公司利用类似于 Vagrant 这样的工具,让程序员们利用统一配发的打包好的虚拟机文件在本地开发。
具体详细的开发流程是怎样的?
情况有很多种:
1. 需求来了,分析需求,需求很无脑,驳回需求,傻笑。
2. 需求来了,分析需求,需求很赞很被需求,开始开发。提出技术实现方案,ssh 连接至跳板机,在跳板机上 ssh 连接到开发机,在开发机上进入代码所在处,打开 Vim 开始写代码,写完了,傻笑。
我在本地想学习下这种开发方式如何学习?搭建个虚拟机装个centos就行了吗,
需要什么服务器或客户端软件?
学习这种开发方式的最好方式是加入一家用这样的方式进行开发的公司,这是一个在所有方式中效率最高的方式。然后,接近那个构建这种开发模式的同学,傻笑。
希望解答了题主的疑惑。
你试试延时上200写代码的感觉或者等效感受延时800玩DOTA