现在打算换电脑,觉得 32G 的 mac 性价比不高,想买 Windows 。于是最近一个月尝试在 Windows 做开发,说实话,Windows 太难用了。然后尝试用 wsl2 ,想把环境全迁移到 wsl2 上,却发现一堆问题,看到之后就不想折腾。最后想到了可以在 VMware 上装个虚拟机。 所以就想问下各位大佬,你们开发环境是全放在虚拟机上吗?连 ide 都放到虚拟机里吗?
101
raynor2011 2022-07-24 19:48:13 +08:00 via iPad
wsl2 还好吧,工作中一直用
|
103
ysc3839 2022-07-25 04:05:20 +08:00 via Android
搞 Linux 开发的话我是虚拟机里用 Ubuntu Server 。跨平台开发我一般用 Windows 下的,除非不同平台差异较大。
|
104
EdwardLU 2022-07-25 09:21:00 +08:00 via iPhone
wsl2 具体是什么问题,我用的很顺滑
|
105
tairan2006 2022-07-25 09:35:32 +08:00 via Android
其实 pwsh7 还不错,很多 linux 工具用 scoop 也能装 win 的同名版本…wsl2 我主要用来跑 docker 了
|
106
newmlp 2022-07-25 09:52:42 +08:00
作为一名合格的 IT 开发工程师,能灵活的在三大桌面系统中切换工作也是必备的技能
|
107
byte10 2022-07-25 10:10:55 +08:00
这个时候 vscode 远程开发就有优势了。我的给你一个方案了吧。D1581-16 核, 32G 内存, 板载 U 550+内存 32G -500 块钱,机箱电源 150 搞定。总价 1200 ,性能接近 5700G ,多核心适合 java 开发,可以安装 pve 系统,很稳定,无显卡运行。。然后笔记本远程到到这个机器上开发 java react,vue 就可以了。然后你再买一个 M1 air ,体验完美。
windows 我给过十几个大学生安装过一些开发环境,有一个 ssh 免密配置就遇到过权限问题,config 文件有问题, 遇到过 5 次。其他的还好。。自己用 windows 的话,弹窗广告很多,也不知道去哪里下载 windows 软件,全是病毒和流氓软件,tamd 。。。 |
109
tianxin8431 2022-07-25 12:00:29 +08:00
@Nasei 支持 和 默认行为 能一样么。
|
110
sukidesuka 2022-07-25 12:51:53 +08:00
@shoaly royal tsx
|
112
james2013 2022-07-25 16:32:27 +08:00
一直都在用 window,开发 java,android,前端,python,微信小程序都开发过,觉得挺好的
java 后端需要使用命令行吗?我好像基本没有用过 |
113
Nasei 2022-07-25 16:58:09 +08:00
@tianxin8431 操作系统不会默认这种行为,这是应用层自己建立 socket 时的选项
|
114
zhangjinghua 2022-07-25 17:11:43 +08:00
@Maboroshii Mobaxteam
|
115
tianxin8431 2022-07-26 01:42:03 +08:00
@Nasei 然而事实就是,在不做任何额外配置的情况下,同一个端口在 Linux 下监听两次,就是会报`Address already in use`,而 windows 下则不会。我使用`python -m http.server`在两个平台都试了,可以复现我说的情况。
|
116
tianxin8431 2022-07-26 02:20:53 +08:00
@Nasei 事实上,在 Linux 下,SO_REUSEADDR 只支持绑定“同一个端口” + “不同的且非通配符地址”,同一个五元组是没法被 bind 两次的。( https://stackoverflow.com/questions/14388706/how-do-so-reuseaddr-and-so-reuseport-differ )如果想实现和 windows 等价的效果,需要用 SO_REUSEPORT 。而 Windows 下压根没有 SO_REUSEPORT 这个 flag 。
```python import socket host = 'localhost' port = 9999 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) s.listen(1) print('Listening on port', port) conn, addr = s.accept() ``` 写了一段很简单的代码,在 Windows 下可以正常 bind ,Linux 还是会提示 Address in use 。在 Linux 下如果想实现重复监听的效果,需要将 flag 换成 SO_REUSEPORT 。 从技术讨论的角度,平台的差异有助于我更好的学习相关的知识;然而从快速出活的角度考虑,这种差异只能让我更加痛苦。 |
119
Nasei 2022-07-27 00:33:59 +08:00
@tianxin8431 这些选项确实不同操作系统不一样,而且即使 mac (bsd) 和 linux 也不完全一样,但这和我说的不冲突,任何操作系统在默认行为下,没有任何选项的时候,都不能不同进程同时监听同一个端口,windows 也一样,不管你说的 django 还是 python -m http.server ,都是应用层的东西,表现出来的行为是它们自己的选择
|
120
Geon97 2022-07-27 09:31:20 +08:00
linux 虚机,本地开发环境使用 ssh 连接 linux 虚机
|
121
FrankHB 2022-07-30 19:41:31 +08:00
@ipcjs 经验如此。我没具体 profile ,不过我猜跟操作进程开销的多少有些类似,Windows 应用操作文件用的 API 经常套娃太多层了,干了很多不需要干的活,不像 Linux 本机应用一般系统调用往上 libc 套一层搞定。不过差距不会像创建进程那么夸张。当然资源管理器慢起来那是真的慢……有时候我都直接 dolphin& 了。
|