Closed amcones closed 3 years ago
请问是直接从 VS Code Extension Marketplace 下载的吗,macOS需要在GitHub Releases里面下载安装😭。
目前版本原理是在后台启动了一个headless的Chromium,然后去模拟访问VJudge再抓取信息到VS Code显示,而这个Chromium是打包在vsix里的,所以不同系统暂时不能通用。
后续版本应该会更改为直接请求VJudge API,这样就不用打包一个巨大的Chromium了,也能提高性能、减少内存占用。
请问是直接从 VS Code Extension Marketplace 下载的吗,macOS需要在GitHub Releases里面下载安装😭。
目前版本原理是在后台启动了一个headless的Chromium,然后去模拟访问VJudge再抓取信息到VS Code显示,而这个Chromium是打包在vsix里的,所以不同系统暂时不能通用。
是的,然后刚才测试了下从GitHub Release下载安装,在intel Mac上使用良好,M1 Mac则和之前一样,可能是因为打包的Chromium无法在M1上运行? 这个插件很棒,很大程度上提高了vj的使用体验,非常感谢~
或许可以试试把~/.vscode/extensions/starcatmeow.vjudge-helper-0.1.3/node_modules/puppeteer/.local-chromium/mac-856583/chrome-mac
下的Chromium.app
用这里的arm64版Chromium替换一下?最近可能不是很有时间去分析VJudge API,可能只能先这样将就用着。
尝试了一下,下载下来的Chromium打开提示已损坏,替换到目录下插件使用情况依旧。
稍等,我在我intel Mac上先用universal版测试一下,感觉应该是签名问题
https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac_Arm/924182/chrome-mac.zip
还是用这里的吧,然后先按住control左键打开一次之后,再放到插件目录下替换
还是和之前一样,提示已损坏orz
刚才我更换成直接请求api了,不再需要chromium了,试试在 VS Code Marketplace 里面更新到最新的 v0.2.1
刚才在三个平台上进行了测试,win上将vsc更新到insider2后可以正常使用,intel和m1上可以输入账号和密码,回车后login条到一半消失,更新vsc情况依旧。win在更新到insider2之前也是一样的情况。
可以麻烦提供一下intel和m1上vscode的详细版本信息(包含nodejs,electron版本)吗,在左上角Code -> About Visual Studio Code中能看到。
我在之前测试时也发现有类似问题,但更新到stable频道的最新版vscode后解决了,似乎是因为 https://github.com/microsoft/vscode/issues/134244
M1: 版本: 1.61.0 提交: ee8c7def80afc00dd6e593ef12f37756d8f504ea 日期: 2021-10-07T18:10:20.463Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin arm64 20.6.0
intel: Version: 1.61.0 Commit: ee8c7def80afc00dd6e593ef12f37756d8f504ea Date: 2021-10-07T18:11:58.853Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin x64 20.6.0
M1: 版本: 1.61.0 提交: ee8c7def80afc00dd6e593ef12f37756d8f504ea 日期: 2021-10-07T18:10:20.463Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin arm64 20.6.0
intel: Version: 1.61.0 Commit: ee8c7def80afc00dd6e593ef12f37756d8f504ea Date: 2021-10-07T18:11:58.853Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin x64 20.6.0
奇怪,我也是这个版本,但并不能复现问题。可否点击vscode Help菜单下的Toggle Developer Tools,然后点到Console再尝试登录,看有没有什么错误信息。
登录的时候报了两个警告,如下: console.ts:137 [Extension Host] [xmldom warning] attribute "async" missed value!! "async" instead2!! @#[line:36,col:1] v @ console.ts:137 $logExtensionHostMessage @ mainThreadConsole.ts:39 _doInvokeHandler @ rpcProtocol.ts:472 _invokeHandler @ rpcProtocol.ts:457 _receiveRequest @ rpcProtocol.ts:373 _receiveOneMessage @ rpcProtocol.ts:295 (anonymous) @ rpcProtocol.ts:160 fire @ event.ts:577 fire @ ipc.net.ts:513 receiveMessage @ ipc.net.ts:871 (anonymous) @ ipc.net.ts:710 fire @ event.ts:577 acceptChunk @ ipc.net.ts:286 (anonymous) @ ipc.net.ts:247 @ ipc.net.ts:50 emit @ events.js:315 addChunk @ internal/streams/readable.js:309 readableAddChunk @ internal/streams/readable.js:284 Readable.push @ internal/streams/readable.js:223 onStreamRead @ internal/stream_base_commons.js:188 console.ts:137 [Extension Host] [xmldom warning] attribute "async" missed value!! "async" instead2!! @#[line:290,col:1] v @ console.ts:137 $logExtensionHostMessage @ mainThreadConsole.ts:39 _doInvokeHandler @ rpcProtocol.ts:472 _invokeHandler @ rpcProtocol.ts:457 _receiveRequest @ rpcProtocol.ts:373 _receiveOneMessage @ rpcProtocol.ts:295 (anonymous) @ rpcProtocol.ts:160 fire @ event.ts:577 fire @ ipc.net.ts:513 receiveMessage @ ipc.net.ts:871 (anonymous) @ ipc.net.ts:710 fire @ event.ts:577 acceptChunk @ ipc.net.ts:286 (anonymous) @ ipc.net.ts:247 @ ipc.net.ts:50 emit @ events.js:315 addChunk @ internal/streams/readable.js:309 readableAddChunk @ internal/streams/readable.js:284 Readable.push @ internal/streams/readable.js:223 onStreamRead @ internal/stream_base_commons.js:188
额。。那应该不是证书相关问题,但我无法定位问题。可否一会儿我打包一个调试版本,然后再麻烦你帮忙测试一下?
okk没问题👌
vjudge-helper-0.2.1.vsix.zip
❯ sha512sum vjudge-helper-0.2.1.vsix.zip
b5ead33e2c652881678c6d05ba0f94906bbde7122c3aa0662c49fc7272405ff05b7af6476e847999c4a4054d5bc5ffbe4838f9a7bee68c1bf3e038ab31a53d12 vjudge-helper-0.2.1.vsix.zip
解压后从vsix安装,然后还是打开console后再登录,然后发一下输出的log(其中包含的用户id可以去掉)
workbench.desktop.main.js:71 [Extension Host] vjudge login result: success workbench.desktop.main.js:71 [Extension Host] retrieved profile html length: 9405 workbench.desktop.main.js:71 [Extension Host] [xmldom warning] attribute "async" missed value!! "async" instead2!! @#[line:36,col:1] v @ workbench.desktop.main.js:71 $logExtensionHostMessage @ workbench.desktop.main.js:1505 _doInvokeHandler @ workbench.desktop.main.js:1505 _invokeHandler @ workbench.desktop.main.js:1505 _receiveRequest @ workbench.desktop.main.js:1505 _receiveOneMessage @ workbench.desktop.main.js:1505 (anonymous) @ workbench.desktop.main.js:1505 fire @ workbench.desktop.main.js:69 fire @ workbench.desktop.main.js:85 receiveMessage @ workbench.desktop.main.js:85 (anonymous) @ workbench.desktop.main.js:85 fire @ workbench.desktop.main.js:69 acceptChunk @ workbench.desktop.main.js:85 (anonymous) @ workbench.desktop.main.js:85 @ workbench.desktop.main.js:2923 emit @ events.js:315 addChunk @ internal/streams/readable.js:309 readableAddChunk @ internal/streams/readable.js:284 Readable.push @ internal/streams/readable.js:223 onStreamRead @ internal/stream_base_commons.js:188 workbench.desktop.main.js:71 [Extension Host] [xmldom warning] attribute "async" missed value!! "async" instead2!! @#[line:290,col:1] v @ workbench.desktop.main.js:71 $logExtensionHostMessage @ workbench.desktop.main.js:1505 _doInvokeHandler @ workbench.desktop.main.js:1505 _invokeHandler @ workbench.desktop.main.js:1505 _receiveRequest @ workbench.desktop.main.js:1505 _receiveOneMessage @ workbench.desktop.main.js:1505 (anonymous) @ workbench.desktop.main.js:1505 fire @ workbench.desktop.main.js:69 fire @ workbench.desktop.main.js:85 receiveMessage @ workbench.desktop.main.js:85 (anonymous) @ workbench.desktop.main.js:85 fire @ workbench.desktop.main.js:69 acceptChunk @ workbench.desktop.main.js:85 (anonymous) @ workbench.desktop.main.js:85 @ workbench.desktop.main.js:2923 emit @ events.js:315 addChunk @ internal/streams/readable.js:309 readableAddChunk @ internal/streams/readable.js:284 Readable.push @ internal/streams/readable.js:223 onStreamRead @ internal/stream_base_commons.js:188 workbench.desktop.main.js:71 [Extension Host] parsed dom workbench.desktop.main.js:71 [Extension Host] userid element not null: false workbench.desktop.main.js:71 [Extension Host] userid element attrs
我可能猜到原因了,你登录的时候输入的是邮箱还是用户名?目前我的代码逻辑需要使用用户名才能正常工作。(获取用户ID的方式为拼接输入的用户名到https://vjudge.net/user/ 后,然后获取页面内容并提取其中visitor_userId的内容)
我输入的是用户名0.0可能在mac下进去了别的字符?
在windows测试的时候也是同一网络环境和账号吗?
我这边mac上也没有问题,感觉有点奇怪
找到问题了,可能是因为某种原因导致vjudge认为你没有登录,在返回的结果中就不会存在你的userid。我试着加一个延时并换一种获取id方式
这次我用正则匹配来获取用户id,试试看能不能正常用吧。
可以了!!!在两台mac上均可使用,但是爬到的列表和win上不同,win上爬到的contest是group下的,而mac上爬到的是上面菜单里的
哦,那我怀疑应该还是没有登录成功。。。登录不成功爬取比赛列表就只能是all contest里的。 我明天找台其他机器看看能否复现这个问题吧。
确实orz交代码报错 辛苦了
可以试试最新的 v0.2.2 版本,我刚修改成了手动存 Cookie,在之前能复现的环境下正常了。
刷新一下 VS Code 插件列表应该可以直接从 Marketplace 更新。
可以了!在三个平台下都可以正常使用,感动
感谢你对插件的支持,有bug或功能建议欢迎提出哦!
使用M1 mac mini和intel MacBook pro测试,不会弹出输入登录信息的框。