Friday, August 6, 2021

V2EX - 技术

V2EX - 技术


win11 更新 22000.120 了

Posted: 06 Aug 2021 05:13 AM PDT

挑了点重要的修复翻译了一下:

修复了一堆菜单栏互动导致崩溃的问题, 图标堆叠问题.

windows helloface 设置不再崩溃, 电源和电池设置也不再崩溃, 但是我电脑依然读不到电量数据.

修复了蓝牙 pin 配对问题.

解决了右键菜单相关 GDI 句柄泄漏, 导致文件资源管理器在长时间使用后缓慢的问题.

改善了文件管理器内存泄漏的问题. (有待验证)

修复了每次打开文件管理器, 功能条 (就是上面那一行拷贝粘贴剪切重命名删除的按钮那一栏) 导致线程不断增加消耗资源的情况.

修复了右键菜单使用 Acrylic 相关造成文件管理器崩溃的问题.

单击功能条中的重命名按钮不应再随机显示打开方式对话框.

多次快速按下 Windows 键不应再使 开始菜单 崩溃. (我电脑狂按 windows 键开始菜单压根不鸟我, 开都不带开)

当 "最近的搜索" 更新后, 鼠标悬停在 "搜索" 图标上不再导致崩溃.

修复了多显示器多 dpi 设定导致文件管理器崩溃的问题.

解决了屏幕阅读器按下 ALT + Tab 时意外说出 "DesktopWindowXamlSource" 的问题.

不使用 英语语言包 的 Insider 们, 现在 UAC 对话框中的按钮可以正确显示 "是" "否" 选项.

修复了在某些情况下为固定到任务栏的应用程序在后台启动 UAC 对话框的问题.

推出了一个单独的 Windows Defender 补丁,用于解决在您重启电脑后 "自动提交样本" 意外关闭的问题. (一直以为是
申必计划任务给我自动关了, 结果是 bug, 想不到啊想不到.jpg)

缓解了可能导致您的电脑在解锁时黑屏卡死, 以及导致某些 Insiders 在登录后黑屏几秒然后崩溃的问题. (画外音: 解决
了, 但没有完全解决)

修复了某些 Insiders 在电脑开机后登录时导致 explorer.exe 崩溃的问题.

缓解了触控板点击开始菜单里的睡眠选项, 某些设备突然自动唤醒的问题. (一直以为是后台程序在偷偷唤醒, 结果还是
bug)

修复了睡眠时还会系统自检的 bug.

修复了引导菜单无法正确识别 Windows 11 的问题.

修复了 windows 透明度设置开启后亚克力特效变纯色的问题.

修复了在桌面上按 ALT + F4 后窗口失焦问题.

缓解了重新启动后某些设备需要重新配对的问题.

解决了 Microsoft Store 上软件重复下载更新的问题.

没有解决的问题们:

切换输入法导致菜单栏闪烁. (别说了, 换个壁纸还能闪半天的)

搜索菜单打不开的情况, 通过重启任务管理器修复.

搜索菜单不显示最近搜索, 通过重启电脑修复.

小部件不显示, 通过注销重新登陆修复.

任务栏将在 Windows Sandbox 中持续崩溃. (负责人: 在修了)


最后说一个小小的修复:
我电脑之前版本睡眠后, 硬盘也休眠的话, 再唤醒会导致部分驱动失去作用的问题, 似乎也修复了, 但缺乏验证.

原文链接:
https://blogs.windows.com/windows-insider/2021/08/05/announcing-windows-11-insider-preview-build-22000-120/

想了解一下有多少人写代码的时候是盲打的

Posted: 06 Aug 2021 05:12 AM PDT

自从练习过双屏,现在已经可以比较流畅,最近想挑战一下盲打

Pycharm 使用 Anaconda 解释器,每次都 indexing

Posted: 06 Aug 2021 04:45 AM PDT

如题,安装 Anaconda,每次启动 Pycharm 都会 indexing Python SDK (耗费 3 到 4 分钟) (我的 Base 环境是 Python3.8 ),google 百度搜了一通,发现都是说怎么 exclude project files,可是这是 Python SDK 的 index,exclude 之后就没得代码提示了,有没有解决方案,难道 JB 对于 Anaconda 的环境没有索引缓存吗?每次都要重新索引?

VS Code 1.59 发布! Terminal 可以跨窗口移动了!

Posted: 06 Aug 2021 04:37 AM PDT

原文链接: https://zhuanlan.zhihu.com/p/396681297

欢迎使用 2021 年 7 月版的 Visual Studio Code 。希望你会喜欢此版本中的许多更新与改进,以下是其中的一些高亮:

  • 扩展视图的改进 - 丰富的扩展详细信息悬停,新的运行状态标签页。
  • 设置编辑器验证 - 快速查找到对象设置的编辑错误。
  • 拖放终端 - 将终端跨窗口移动到编辑器和面板区域。
  • 扩展的主题定制 - 一次定制多个颜色主题。
  • Jupyter 笔记本的内建支持 - 直接在 VS Code 中打开 .ipynb 文件。
  • 笔记本 UI 的改进 - 显示折叠单元格的第一行,每个单元格的撤消 /重做。
  • 测试 API 的最终确定 - 原生支持 VS Code 中使用测试资源管理器运行测试。
  • 调试反汇编视图预览 - 在 VS Code 中显示反汇编的 C++ 代码。
  • 实时预览扩展 - VS Code 中的实时的 HTML 预览,支持 JavaScript 调试。
  • 远程 - 容器 devcontainer CLI - 用于开发容器的命令行界面。

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com上的更新

更多关于 VS Code 的资料请访问微软 MS Learn 平台:http://aka.ms/vscodelearn

内部抢先版 :想更先一步体验新功能吗?您可以下载每晚的 Insiders 版本,并在最新更新可用时立即试用。

工作台

扩展插件

改进了调整大小后的扩展视图。在下面的动图中,你可以看到默认宽度的扩展视图显示了所有详细信息(以前未显示图标、评分和安装计数)。当它缩小时,会显示较小的扩展图标,当其宽度进一步减小时,图标和评分将被隐藏。 在这里插入图片描述

扩展视图现在会显示自定义悬停信息。这个丰富的悬停包括扩展的完整描述和其他有用的信息,例如为什么禁用或推荐扩展。

file

您现在可以在插件面板中看到更多的插件运行状态,例如其激活时间、是否在启动时激活,以及扩展编辑器中新引入的 运行时状态 选项卡中是否生成了任何警告或错误。当然,你也可以悬停在插件试图上看到部分的运行状态信息。

file 插件面板的详细信息标签页现在会显示分类信息,资源链接,和诸如插件发布时间和更新时间的其他信息。选择某个分类会显示当前分类下的所有插件。

设置编辑器

设置编辑器现在支持对象验证功能。验证会涵盖直接编辑 JSON 文件时可能引入的类型错误。 file

非编辑模式下,数组设置现在具有了拖放功能的支持。

此外,将 uniqueItems 属性设置为 true 的枚举数组设置现在仅显示剩余选项,而不是下拉列表中的所有选项。 file

设置编辑器现在还支持多行字符串设置,其中值呈现在多行文本区域而不是单行输入框中: file

扩展的主题自定义语法

颜色自定义设置允许用户自定义当前主题的颜色: - workbench.colorCustomizationseditor.tokenColorCustomizationseditor.semanticTokenColorCustomizations

以下语法可以用来一次自定义多个主题的颜色:

"workbench.colorCustomizations": {         "[Abyss][Red]": {             "activityBar.background": "#ff0000"         },         "[Monokai*]": {             "activityBar.background": "#ff0000"         }     }, 

您可以列出多个主题,或者,在名称的开头或者结尾使用*通配符来选取多个主题。

Jupyter 笔记本文件的支持

本月,我们把支援 *.ipynb 文件的代码从 Jupyter 笔记本 插件吸收为了内建插件。这意味着你现在可以在一个全新安装的 VS Code 环境中得到 Jupyter 笔记本的原生支持。你甚至都不用安装 Jupyter 的插件。需要注意的是,如果你想要执行 ipywidgets 或者其他复杂渲染类型的代码单元或者查看运行结果时,你依然需要完整安装 Jupyter 插件。

笔记本布局的改进

我们在本次迭代中对笔记本布局进行了一些改进:

  • 我们现在将会在折叠时渲染代码单元的第一行。
  • 当窗口宽度不足以呈现所有主要操作时,笔记本编辑器工具栏上的操作将移至溢出区。
  • notebook.undoRedoPerCell 的默认值现在更改为 truefile 我们还更新了代码单元格的默认样式,显示背景颜色以帮助区分单元格。主题可以使用 notebook.cellEditorBackground 来自定义这个颜色。

file

最后,您现在可以使用 notebook.globalToolbarShowLabel 设置在笔记本工具栏上切换文本标签: file

"复制相对路径" 配置路径分隔符

在调用 "复制相关路径" 操作时,新设置 explorer.copyRelativePathSeparator 允许显式设置使用路径分隔符。以下为可用选项:

  • Auto (默认) - 使用操作系统特定的路径分隔符
  • / - 使用斜线作为路径分隔符
  • \\ - 使用反斜杠作为路径分隔符

跨编辑器组共享视图状态

添加了一个新设置 workbench.editor.sharedViewState 以配置编辑器视图状态(例如,编辑器中的滚动位置)在编辑器组之间共享的方式。

默认情况下,此设置被禁用以保留当前设置。如果您在靠边打开编辑器并稍后关闭该编辑器组,只是为了再次打开编辑器到靠边,则不会恢复视图状态,因为您正在打开一个新的编辑器组。但是,当您启用此设置时,除非为编辑器组找到更具体的视图状态,否则将在所有编辑器组中保留并使用最新的编辑器视图状态。

在这里插入图片描述

编辑器

在不同的折叠范围之间切换

以下的新指令可以将光标位置设置为相应的折叠:

  • 转到下一个折叠 ( editor.gotoNextFold )
  • 转到上一个折叠 ( editor.gotoPreviousFold )
  • 转到父级折叠 ( editor.gotoParentFold

这些命令目前没有默认键绑定,但是你可以通过以下方法添加自己的键盘快捷键: 首选项:打开键盘快捷键(kb(workbench.action.openGlobalKeybindings))

自动折叠 Import 语句

通过设置 editor.foldingImportsByDefault 来自动折叠 Import 语句。 当文件被打开后,折叠的状态将会被保存。

TypeScript,JavaScript,Java,C#,C++ 和其他具备折叠范围提供程序的编程语言都支持这项新功能。注:折叠范围提供程序特指将 Import 语句标注为 FoldingRangeKind.Imports 的提供程序。

选择项的种子搜索字符串

Find Widget 设置 editor.find.seedSearchStringFromSelection 已支持从非空选择中播种搜索字符串。默认情况下,当显示小部件时,编辑器将使用以下两项作为搜索关键词:

  1. 选择项。
  2. 空选择周围的单词。

内联建议的改进

我们改变了内联建议的呈现方式。这不仅修复了许多错误,而且还使自动换行识别了内联建议。

此外,现在支持了非尾随位置的多行内联建议。

嵌入提示的改进

我们还改变了嵌入提示的呈现方式。通过使用与内联建议相同的机制,嵌入提示现在也被用于自动换行。

这种机制还实现了嵌入提示周围的单独光标停靠。

终端

在窗口之间拖拽终端

现在,您可以任意地从标签页或一个窗口的编辑区域,拖拽终端到标签页,编辑区域,或者另一个窗口的面板。 file

子进程跟踪和关闭警告

当用户尝试关闭一个有子进程的终端时,terminal.integrated.confirmOnExit 和新的设置 terminal.integrated.confirmOnKill会警告用户。默认情况下,这仅影响编辑器区域中的终端,但用户可以配置为显示所有的(面板区域中)终端警告。

设置所提供的终端配置文件为默认

现在用户可以将插件所提供的终端配置文件设为默认的配置文件。

file

下划线和删除线支持

终端现在支持下划线和删除线属性。例如,用可以可以配置git来使用这些新属性:

file

上述的例子使用了下列 .gitconfig 参数:

[color "status"]   added = green bold   changed = red bold strike   untracked = cyan   branch = yellow black bold ul 

编辑区域靠边创建终端

现在,用户可以在活动编辑区域使用新指令workbench.action.createTerminalEditorSide 来创建一个靠边新的终端。

活动终端标签页指示器

主题现在可以使用主题键terminal.tab.activeBorder设置垂直线的颜色,用以指示活动的终端选项卡。

file

如果没有设置 terminal.tab.activeBorder,颜色将回退到tab.activeBorder

禁用终端标签页动画图标

terminal.integrated.tabs.enableAnimation会禁用终端标签页动画图标。如果是针对任务而不是微调器,播放按钮会被使用:

file

调试

改进了编辑器标题区域内的 播放 /调试 按键

2 月的版本中,我们引入了一个下拉按钮,用以在编辑器标题区域的中央(紧凑)位置对运行和调试命令进行分组。根据一些用户反馈,我们尝试通过记忆上次执行的操作来改进下拉按钮。下拉按钮现在将会拥有两个单击区域,一个用于默认动作(左),另一个用于下拉(右),其中,所选运行操作将被记忆并存为新的默认值。

请注意:

  • 如果只有一个运行或调试操作,则会省略下拉菜单。
  • 如果有多个运行或调试操作,所有操作都会出现在下拉菜单中,并且默认操作设置为下拉菜单中的第一个操作(前提是没有记住的操作)。
  • VS Code 重新启动时,会为特定工作区保留默认操作;它会为编辑器内容保留。

对扩展插件的贡献

实时预览

实时预览扩展插件本月出现了一些令人兴奋的新功能!这包括:

  • 内建 JavaScript 调试器兼容性的外部预览。
  • 请使用 Live Preview: Show Debug Preview 来尝鲜使用!
  • 对嵌入式浏览器的改进,例如 "在页面中查找" 的支持和快速访问 webvivew DevTools 。
  • 文件系统监视自动生成文件。
  • 期待更多!

要查看有关本月进度的更多详细信息,请参阅扩展的发行说明

在这里插入图片描述

在这里插入图片描述

GitHub 拉取请求和问题

GitHub 拉取请求和问题 扩展插件的工作仍在继续,它允许您响应、创建和管理拉取请求和问题。本月重点对问题的 "开始工作" 进行了扩展,让您可以处理当前打开的存储库之外的问题。

要了解所有新功能和更新,您可以查看 0.29.0 版扩展的完整变更日志

Jupyter

Jupyter扩展插件的工作仍在继续。要了解所有的新功能和更新,您可以查看 7 月版本的完整更新日志

互动窗口

Jupyter 交互窗口提供了另一种构建和使用 Jupyter 笔记本的方法,使用文本文件而不是笔记本界面。上个月,我们预览了 Jupyter 交互式窗口的升级版本,现在我们提供了具有更深入的工作台集成,包括对主题的支持、自定义键绑定、片段、与扩展的兼容性等!非常感谢我们的用户通过 GitHub 问题提供有关预览体验版的反馈。内置交互窗口现在已经成为了 1.59 版本中的默认界面。之前的界面在 "jupyter.enableNativeInteractiveWindow": false后将仍然可用,并会在即将发布的版本中删除。我们期待您的反馈

在这里插入图片描述

逐行运行

我们一直致力于支持 Jupyter 笔记本中的 "逐行运行" 功能。此功能本质上是一种简化的调试模式,可让您逐行执行单元代码,而无需任何复杂的调试 UI 。这依然是实验性的,您可以通过设置 "jupyter.experimental.debugging": true,在您选择的内核中安装 ipykernel 的第 6 版,然后选择单元格工具栏中的 " 按行运行" 按钮来尝鲜一下。

在这里插入图片描述

远程容器 devcontainer CLI

远程- 容器 扩展适用于在 VS Code 中使用 Docker 容器。它现在包含 devcontainer 命令行界面,让您可以轻松地打开容器中的文件夹 ( devcontainer open ) 或者构建开发容器映像 ( devcontainer build )。

您可以在 远程开发 发行说明中了解新的功能和错误修复。

预览功能

无标题文件的自动语言检测

我们很高兴地宣布无标题文件的自动语言检测的初始预览版,它使用机器学习来检测您正在编码的语言并自动设置无标题文件的语言模式。此功能利用了开源 ML 库 Tensorflow.js 和 GitHub 用户 @yoeo 来自 Guesslang 的 ML 模型。

在此版本中,该功能将默认关闭,但我们计划将其设为下一次迭代版本的默认设置。如果您想要启用它,请应用以下设置:

"workbench.editor.untitled.experimentalLanguageDetection": true 

举个例子,您可以打开一个无标题文件并将一段代码粘贴到您的编辑器中。

以下是一段自动识别的 Python 代码段:

在这里插入图片描述

此外,您可以通过打开语言选择器查看正在检测的语言。

在这里插入图片描述

注意:如果语言检测结果不够确信,那么您将保持当前的语言模式,语言选择器中不会显示任何结果,直到语言检测结果更有把握。

该设置还允许您提供语言覆盖,可用于指定您不想自动关闭的语言模式。 以下的例子展示了如何关闭 .md 文件自动检测:

"workbench.editor.untitled.experimentalLanguageDetection": true "[markdown]": { "workbench.editor.untitled.experimentalLanguageDetection": false } 

在您编辑无标题的 Markdown 文件时,自动语言检测功能不会运行。但是,如果您正在修改任何其他类型的无标题文件,自动语言检测功能会检测这些文件的内容。

我们已经将与 ML 模型交互的代码分离并合并到它自己的代码库中,作为 npm 包发布,该包存在于 vscode-languagedetection存储库中。

请让我们知道无标题文件的自动语言检测功能是否帮助到了您的日常工作!

TypeScript 4.4

此版本包括对 TypeScript 4.4 版本的支持。您可以在 TypeScript 博客上阅读有关 TypeScript 4.4 中新语言功能和改进的更多信息。一些工具亮点:

  • 在 JavaScript 和 TypeScript 文件中嵌入参数名称和类型的提示。
  • 纯 JS 文件中的基本拼写建议。只有当我们对错误和修复有把握时才会显示这些。

要开始使用 TypeScript 4.4 内测版本,请安装 TypeScript Nightly 扩展

如果您在使用 TypeScript 4.4 时遇到任何错误,请分享您的反馈并告诉我们。

反汇编视图

感谢微软 C++ 团队贡献的大量代码,我们很高兴在这个里程碑版本中包括了 反汇编视图 的预览功能。

反汇编视图可以从编辑器的上下文菜单中打开,用以显示活动堆栈帧的反汇编源码,它支持单步执行汇编指令,并且可以在单个指令上设置断点。

反汇编视图仅在活动的调试会话中可用。注意,底层调试扩展插件也需要有相应的支持。

目前,只有 C++Mock Debug可以支持反汇编视图。

在这里插入图片描述

从技术角度而言,VS Code 的反汇编视图实现了 DAP (Debug Adapter Protocol) 协议另外四个功能:

  • disassembly请求,用以提供基于内存位置的反汇编源码。
  • 堆栈帧上的 instructionPointerReference属性。
  • 步进请求的 granularity属性。
  • 指令断点和setInstructionBreakpoints请求。

扩展创作

测试 API

去年秋天,我们开始在 VS Code 中添加对运行测试的原生支持,本月,第一组与测试相关的 API 已经交付。与之前的扩展插件相比,这些 API 提供了更大的灵活性、更好的性能和更丰富的用户体验。查看有关编写测试扩展的指南以深入了解。

测试资源管理器 UI 插件的现有用户可以通过将 testExplorer.useNativeTesting设置为true来获得原生体验。但是,该转换是基于测试资源管理器 UI 扩展现有 API,因此不包括诸如丰富差异之类的一些功能。

Java 扩展包中包含的 Microsoft Java 测试运行器是最早采用测试 API 的扩展之一 。

新建文件菜单的贡献点

有助于创建新文件编辑器的扩展(例如笔记本或自定义编辑器)现在可以向新的 文件 /新文件 菜单贡献点贡献命令。可以从欢迎页面或文件菜单中的 "新建文件..." 项目访问此菜单。

在这里插入图片描述

丰富状态栏悬停

状态栏项目现在支持丰富的悬停,包括链接和图标 StatusBarItem.tooltip: string | IMarkdownString

file

  • 如果MarkdownString.supportThemeIcons设置为 true ,您可以使用带有 $(iconName)语法的图标。
  • 如果 MarkdownString受信任,还可以添加命令链接。语法:([test](command:vscode.newWindow))

状态栏警告颜色

表示警告的状态栏项目可以使用新添加的颜色 statusBarItem.warningBackgroundstatusBarItem.warningForeground

没有 additionalProperties 的对象设置

对象设置必须将 additionalProperties 设置为 false ,以便在设置编辑器中支持对象。否则,设置编辑器会解读为复杂设置(不规律的设置),并将用户定向到设置 JSON 文件。

多行字符串设置

要在设置编辑器中添加多行字符串设置的支持,请将 "editPresentation": "multilineText"作为键值配对添加到字符串设置中。将字符串设置更改为多行设置将导致设置编辑器在多行文本区域(而非单行输入框中)呈现设置值。

更新的 Codicons

我们已经添加了下列新图标到 codicon库中:

  • azure
  • compass-active
  • compass-active
  • compass-dot
  • compass
  • debug-all
  • debug-coverage
  • git-pull-request-closed
  • git-pull-request-draft
  • issue-draft
  • layers-active
  • layers-dot
  • layers

文本文档更改原因

当事件 workspace.onDidChangeTextDocument被触发时,事件对象的新属性reason 会告知用户文本更改的原因是撤消或重做操作。

语言服务器协议

语言服务器协议的下一个新版本以及对应的 npm 模块已经发布。3.17 版本包含了一个关于完成项标签详细信息的新提案,该提案符合 VS Code 本身的最新变化。

调试适配器协议

最终确定 " writeMemory" 请求和 " memory"事件提案

writeMemory请求已经完成,现在可以在 Debug Adapter Protocol的 1.48 版和与之相对应的 npm 模块中使用。如果调试适配器具有 supportsWriteMemoryRequest功能,客户端可以使用 writeMemory请求将字节写入给定位置的内存。

memory事件有一个新的提案,将在下一个里程碑中添加到 DAP 。

提议的扩展插件 API

每个里程碑版本都附有新提议的 API,扩展插件的作者们可以试用它们。我们期待您的反馈。如果您想要尝鲜提议的新 API,请完成以下步骤:

  • 您必须使用 Insiders 版本,因为提议的 API 经常被修改。
  • 你必须在你的扩展的 package.json文件中加入这一行: "enableProposedApi": true
  • 将最新版本的 vscode.proposed.d.ts文件复制到项目的源位置。

您将不能使用建议 API 发布扩展插件。因为新的版本可能会有重大变化,我们需要保证现有的扩展插件可以被继续使用。

isDefault 用于 TaskGroup

group属性存在于tasks.json 文件中定义的任务上,也通过任务 API 公开。 group属性有一个 isDefault 属性,该属性直到现在在 API 中都不可用。该提案将isDefault 属性公开为TaskGroup上的只读属性,以便扩展可以读取哪个任务是组的默认任务,但不能通过为组设置默认值来覆盖用户配置。

用于 AuthenticationGetSessionOptions 的 forceRecreate

到目前为止,用于获取身份验证会话对象的getSession API 从来没有能力要求用户需要再次登录。然而这对于使用 SAML/单点登录 (SSO) 体验的 GitHub 等身份验证服务是必需的,其中访问令牌最终会在 SSO 会话到期时失去对资源的访问权限。该提案为 AuthenticationGetSessionOptions添加了另一个名为 forceRecreate的属性,允许您要求用户再次登录。向用户显示类似于您指定 createIfNone 时显示的模式体验。

工程

基于 iframe 的 webviews 现在在桌面上随处可见

本月我们完成了从 Electron 的 webview 标签元素过渡到基于普通 <iframe>元素的 webview 。这更好地协调了 VS Code 的 webviews 跨桌面和 web 的实现,也让我们删除了很多现在冗余的代码。

Electron 13 更新

在这个里程碑版本中,我们完成了将 Electron 13 捆绑到 VS Code 的实验,这要感谢所有参与 Insiders 测试和自托管的参与者。这是 Chromium 91.0.4472.124 附带的主要 Electron 版本。此版本的 Node.js 版本没有变化,它仍然是 v14.16.0 。

Electron 沙盒支持的进展

随着我们准备让 VS Code 工作台启用 Electron 的沙盒功能,我们希望在 linux 上启用混合沙盒模式,且不在分布式软件包 deb 、rpm 、snap 、tar 存档中捆绑 cli 参数--no-sandbox 。Chromium 在 linux 上有一个多层沙盒模型。如果 Chromium 无法将命名空间沙盒用于第 1 层,它将尝试通过帮助程序 chrome-sandbox来使用 setuid 沙盒。要使 setuid 二进制文件工作,它需要满足以下条件:

  • 沙箱二进制文件必须可由 Chromium 进程执行。
  • 它必须是 SUID 并且可以被其他人执行。

我们能够为 deb 和 rpm 包保留这些条件。目前无法获得 snap 的这些权限,我们有以下跟踪问题 https://github.com/microsoft/vscode/issues/127140

至于其他使用 tar 存档的应用程序,如果应用程序无法使用命名空间沙盒(这在容器内运行时可能会发生)它将失败并显示以下错误:

FATAL:setuid\_sandbox\_host.cc(158)]  

找到了 SUID 沙盒助手二进制文件,但没有正确配置。而不是在没有沙盒的情况下运行,我现在正在中止程序。您需要确保 chrome-sandbox 由 root 用户拥有并且模式为 4755 。

如果发生这种情况,您可以使用以下两个选项之一来使其正常工作:

  • 修复 setuid helper 权限问题
sudo chown root <path-to-vscode>/chrome-sandbox sudo chmod 4755 <path-to-vscode>/chrome-sandbox 
  • 使用--no-sandbox标志运行

烟雾测试的一些改进

我们一直为每个构建版本运行一套完整的烟雾测试。我们测试打开 VSCode (桌面和 Web )并执行一堆 UI 元素以确保正确的功能。这个里程碑版本中我们在这个基础上投入了更多资源,从而使我们能够从最终计划中移除手动的烟雾测试。

烟雾测试现在可以在所有平台( macOS 、Linux 和 Windows )上运行。最重要的是,我们已经实现在每次代码提交时自动运行烟雾测试,从而我们可以及时地发现 VS Code 新版本可能引入的软件错误。

最后,感谢我们用于自动化 Web 冒烟测试的 Playwright 库,我们采用了他们的跟踪工具,这使得我们可以查看并且重复运行失败的烟雾测试。

学习资料

http://aka.ms/vscodelearn

重大修复

  • 26425:没有更改时不应显示"打开更改"按钮
  • 100815:外部终端在连接到远程 WSL 时中断
  • 106981:当窗口缩放设置为 -1 时,终端光标重影
  • 127959:调试程序暂停时将打开调试窗格
  • 129059:设置编辑器中的对象小组件不呈现说明
  • 129070:无法通过仅按"确定"按钮更正下拉列表设置值
  • 129415:无法在单一文件模式下运行用户任务

有人配过过机房用 nas 服务器么,差不多带 100 台服务器读写

Posted: 06 Aug 2021 04:36 AM PDT

最近领导要我整一台文件存储服务器,给了 3w 的预算,要带 100 台电脑算模型
目前 15 台电脑 smb 共享总共每秒大概有 4.2Gbps 的流量出口
smb 上共享文件主要是图片,单张 10Mbps 左右,单次 10 万张图片跑模型
查了查商用 nas 的价格,我知道这玩意肯定是买不起了
由于前任领导留下来了 40 多个 4t 硬盘,现任领导要求全部跑起来
所以查了多方资料选择 truenas 后列了这样的一个单子

cpu 双路 intel 银牌 4215r 2 带一台集群控制虚拟机
主板 超微 x11dpl-i 1
内存 三星 ddr4-32-2400-ecc 8
内存 intel 傲腾 持久内存 128g 2
网卡 cx456a 100g*2 1
硬盘 intel p4800x 750g 1 zfs log 写缓存日志系统
三星 PM983 3.84T 1 zfs l2acr 读缓存日志

阵列卡 不知道买点啥
电源 双路冗余 750w 电源 2
阵列柜 24 盘位 raid 阵列柜 1
机箱 4u 带热插拔机柜盘 1
现在有几个问题,
1.傲腾一代二代差别在那,能和这个 u 适配么,有没有适配文档
2.zfs 有些人说 slog 只有 16g 有用,剩余空间就是没用的这条是否有误
3.由于部分照片可能重复导入,是否还需要添加一个重复文件删除用的硬盘,大概需要多大?
4.由于之前没接触过 raid,hba 卡,光口 hba 是否能装 sas-80 线等
5.sas 似乎可以接很多硬盘,只要通过扩展卡就能 1 带 128 来着,但如果用线只能一分四,这是对的么
6.pcie2.0 的阵列卡,sas3.0 会出现带宽不够问题么
7.这里阵列柜是外置的,接口是金属的,肯定不是直接从卡上接出来的,应该买什么东西接
8.目前超微 pcie 好像只有 3.0,有必要找 4.0 的 ssd 么

2021-08-06 Go 微服务框架选谁

Posted: 06 Aug 2021 04:24 AM PDT

go-zero 、kratos 、micro?

希望能有使用过比较深的人来综合比较下。

开源征稿-程序员健康知识预防和康复

Posted: 06 Aug 2021 04:21 AM PDT

不久前开的坑,关于职业病的预防和康复的,但是奈何专业知识和经验不够,内容不丰富,希望有相关知识和经验的大佬们分享下

https://github.com/health4work/health4work

关于自建 NAS 服务的,主板 CPU 平台选择

Posted: 06 Aug 2021 04:19 AM PDT

前情提要→

之前发帖问家用 NAS 方案,根据楼下各位老哥回复,总结出来若干点

  • 1 、目前没有一个比较理想的 ARM+可扩展主板的那种专门为 nas 设计的集成方案,大多需要折腾。
  • 2 、关于第一点提到的比较理想的方案通常收取很高的溢价,比如群辉好一点的 4000+人民币可以拿下。
  • 3 、家用 NAS 方案,消费从低到高的可操作性方案为:
       A.路由上插大容量硬盘,最土的办法,但有时候土反而很实用        B.山寨设备+黑群晖,可能有未知坑        C.自建普通 x86 的 PC,各方面比较均衡        D.群辉,钱到位的话,解决方案也挺完善的 

看了各位的回复后我目前比较倾向于 C 方案,C 方案的优点是各方面均衡一些,扩展性比较好,基本上想接几块硬盘都能接得上,而且 windows 的软件设置也可以满足大多数对硬盘保护的需求,比如无读写时断电保护硬盘寿命,比如 raid,比如 ups 检测到市电中断时自动关机等等,如果有跟我一样单纯需要一个大容量存储服务,不需要其他任何骚操作的朋友欢迎使用同样的方案。。。

那么接下来就是具体型号选择的问题,既然没有 arm 板,那就要解决家用 PC 高噪音+高耗电的问题。考虑到噪音最大的硬盘大多数时候处于断电状态,可以认为是静音的,剩下的只需要选一个静音电源,加上性能够用,功耗较低的板 U 平台。

不知道 v2 有没有老哥有合适的具体型号推荐,我的想法是这样:

1 、考虑到要塞很多硬盘,类似群辉那种紧凑型机箱的方式不太现实,应该是 atx 或者 matx 大板 2 、理论上需要 7*24 开机,单纯做传输工作的话不需要多大的内存,但我觉得最好是有 ecc 功能 3 、基本上不需要什么性能,希望热量能尽可能低。不太清楚 x86 上有没有低到能够被动散热的设备....如果没有的话那应该就是省点一些就可以了,因为无论如何需要一台低转速风扇不间断地吹,所以热不热基本也不会有太大差别。 4 、主板的 sata 口尽量多一些,考虑到存储的盘不一定要买最大容量的,可能出于综合考量购买 6-16T 中间任何容量的盘,一般主板有 6 个以上的 sata 口,如果买 6T 的话就是至少 36T 容量,最多 96T,我感觉如果有更多 sata 口的话会自由一些。 

====================

最后问个题外话,关于 raid,我之前一直以为 windows 中设置好 raid1 或者 raid5 以后,如果出现错误 windows 会自动帮忙完成纠错过程,使用体验上是完全无感知的。不过上个帖子中有老哥暗示 raid5 配置很麻烦,看起来似乎当文件出现错误后还要手动提取 raid 数据进行恢复?

有没有老哥能讲一下 win 的 raid 到底是怎么回事,因为我以前开 raid 的电脑也确实没出现啥崩坏的情况,只是单纯开了就感觉受到保护了而已。。

用 Python 轻松完成一个分布式事务 TCC,保姆级教程

Posted: 06 Aug 2021 04:06 AM PDT

什么是分布式事务?银行跨行转账业务是一个典型分布式事务场景,假设 A 需要跨行转账给 B,那么就涉及两个银行的数据,无法通过一个数据库的本地事务保证转账的 ACID,只能够通过分布式事务来解决。

分布式事务就是指事务的发起者、资源及资源管理器和事务协调者分别位于分布式系统的不同节点之上。在上述转账的业务中,用户 A-100 操作和用户 B+100 操作不是位于同一个节点上。本质上来说,分布式事务就是为了保证在分布式场景下,数据操作的正确执行。

什么是 TCC 分布式事务,TCC 是 Try 、Confirm 、Cancel 三个词语的缩写,最早是由 Pat Helland 于 2007 年发表的一篇名为《 Life beyond Distributed Transactions:an Apostate's Opinion 》的论文提出。

TCC 组成

TCC 分为 3 个阶段

  • Try 阶段:尝试执行,完成所有业务检查(一致性), 预留必须业务资源(准隔离性)
  • Confirm 阶段:如果所有分支的 Try 都成功了,则走到 Confirm 阶段。Confirm 真正执行业务,不作任何业务检查,只使用 Try 阶段预留的业务资源
  • Cancel 阶段:如果所有分支的 Try 有一个失败了,则走到 Cancel 阶段。Cancel 释放 Try 阶段预留的业务资源。

TCC 分布式事务里,有 3 个角色,与经典的 XA 分布式事务一样:

  • AP/应用程序,发起全局事务,定义全局事务包含哪些事务分支
  • RM/资源管理器,负责分支事务各项资源的管理
  • TM/事务管理器,负责协调全局事务的正确执行,包括 Confirm,Cancel 的执行,并处理网络异常

如果我们要进行一个类似于银行跨行转账的业务,转出( TransOut )和转入( TransIn )分别在不同的微服务里,一个成功完成的 TCC 事务典型的时序图如下:

image.png

TCC 实践

下面我们进行一个 TCC 事务的具体开发

目前可用于 TCC 的开源框架,主要为 Java 语言,其中以 seata 为代表。我们的例子采用 python,使用的分布式事务框架为dtm,它对分布式事务的支持非常优雅。下面来详细讲解 TCC 的组成

下面我们来编写具体的 Try/Confirm/Cancel 的处理函数

@app.post("/api/TransOutTry") def trans_out_try():     return {"dtm_result": "SUCCESS"}  @app.post("/api/TransOutConfirm") def trans_out_confirm():     return {"dtm_result": "SUCCESS"}  @app.post("/api/TransOutCancel") def trans_out_cancel():     return {"dtm_result": "SUCCESS"}  @app.post("/api/TransInTry") def trans_in_try():     return {"dtm_result": "SUCCESS"}  @app.post("/api/TransInConfirm") def trans_in_confirm():     return {"dtm_result": "SUCCESS"}  @app.post("/api/TransInCancel") def trans_in_cancel():     return {"dtm_result": "SUCCESS"} 

到此各个子事务的处理函数已经 OK 了,然后是开启 TCC 事务,进行分支调用

# 这是 dtm 服务地址 dtm = "http://localhost:8080/api/dtmsvr" # 这是业务微服务地址 svc = "http://localhost:5000/api"  @app.get("/api/fireTcc") def fire_tcc():     # 发起 tcc 事务,其中 tcc_trans 进行具体的业务处理     gid = tcc.tcc_global_transaction(dtm, tcc_trans)     return {"gid": gid}  # tcc 事务的具体处理 def tcc_trans(t):     req = {"amount": 30} # 业务请求的负荷     # 调用转出服务的 Try|Confirm|Cancel     t.call_branch(req, svc + "/TransOutTry", svc + "/TransOutConfirm", svc + "/TransOutCancel")     # 调用转入服务的 Try|Confirm|Cancel     t.call_branch(req, svc + "/TransInTry", svc + "/TransInConfirm", svc + "/TransInCancel") 

至此,一个完整的 TCC 分布式事务编写完成。

如果您想要完整运行一个成功的示例,那么参考这个例子yedf/dtmcli-py-sample,将它运行起来非常简单

# 部署启动 dtm # 需要 docker 版本 18 以上 git clone https://github.com/yedf/dtm cd dtm docker-compose up  # 另起一个命令行 git clone https://github.com/yedf/dtmcli-py-sample cd dtmcli-py-sample pip3 install flask dtmcli requests flask run  # 另起一个命令行 curl localhost:5000/api/fireTcc 

TCC 的回滚

假如银行将金额准备转入用户 2 时,发现用户 2 的账户异常,返回失败,会怎么样?

我们将前面的 TransIn 处理函数,改成返回失败,整个事务最后就会失败回滚

@app.post("/api/TransInTry") def trans_in_try():     return {"dtm_result": "FAILURE"} 

我们给出事务失败交互的时序图

image.png 这个跟成功的 TCC 差别就在于,当某个子事务返回失败后,后续就回滚全局事务,调用各个子事务的 Cancel 操作,保证全局事务全部回滚。

TCC 网络异常

TCC 在整个全局事务的过程中,可能发生各类网络异常情况,典型的是空回滚、幂等、悬挂,由于 TCC 的异常情况,和 SAGA 、可靠消息等事务模式有相近的地方,因此我们把所有异常的解决方案统统放在这篇文章《子事务屏障,一个函数调用搞定分布式事务乱序》进行讲解

小结

在这篇文章里,我们介绍了 TCC 的理论知识,也通过一个例子,完整给出了编写一个 TCC 事务的过程,涵盖了正常成功完成,以及成功回滚的情况。相信读者通过这边文章,对 TCC 已经有了深入的理解。

阅读完此篇干货,欢迎大家访问https://github.com/yedf/dtm项目,给颗星星支持!

dtm支持多种语言,包括 GO 、python 、php 、node,您可以点击各语言客户端及示例访问

各大云厂商提供的环境版本太低好难受

Posted: 06 Aug 2021 04:04 AM PDT

比如腾讯云

serverless 自带的 php 版本最高才 7.2 、node 最高 12
容器服务自带的 k8s 最高支持才 1.18

各位大佬平时喜欢用新版的软件吗?

提交代码时 git commit message 是不是写的详细点比较好?

Posted: 06 Aug 2021 03:18 AM PDT

最近我无意中注意到同事代码时 commit message 写的是"1"、"111"、"。。。。"这种无意义的 message,就是下面这种: 1.png 2.jpg

进而联想到,我们在开发时,commit message 是不是写的详细一点比较好?

如何设置点击鼠标中键后的滚动速度上限?

Posted: 06 Aug 2021 01:38 AM PDT

点击鼠标中键(滚轮),会出现一个圆圈一样的东西,此时移动光标,页面会朝着对应的方向自动滚动,如果一不小心光标移动距离过大,页面就会滚动得非常快,有没有办法限制滚动的速度?

虚拟机里的内存 total 还会动态增加突破上限的?

Posted: 06 Aug 2021 01:31 AM PDT

简直神奇,我就跑了个 docker,内存 total 从 4G 暴涨到 6G,之前还有出现 7G,

组里 40 老大哥有错不改还注释他人代码怎么解

Posted: 06 Aug 2021 01:29 AM PDT

spring cloud 项目,用的 feign,框架是老大哥搭的。前阵子测试给我提 bug 说异常了代码还继续执行。 我就查了一下加了个全局的 decode,但是要求返回值都是统一的自定义 Respose 对象,拦截器里拿这个对象去反序列化。我们的代码绝大部分是标准返回自定义 Respose 对象的,但是老大哥偷懒直接返回了 VO 未拿 Respose 对象包装导致反序列化失败。 我给提了我去全局扫一遍帮他改,支支吾吾说要报告领导(产品还没上线而且又不牵扯业务逻辑),然后加了个 ifelse 把我的逻辑绕过去了(还没绕对,我 debug 一看还是有问题)。 然后就进入了扯皮阶段。好说歹说领导给同意我的做法了。我就把她的 ifelse 去掉了。提交至 master 。 然后第二天骚气的来了,前端给我提 bug 。 我一看好家伙他直接把我的拦截器给注释掉了,导致 feign 异常未捕获继续执行了

关于 oracle 数据库的培训,大家有什么好的建议不?

Posted: 06 Aug 2021 12:49 AM PDT

RT
有一定的基础,没有运维能力,打算报 51cto 的高级工程师培训,看中有老师带,生产上出了问题能给个指导
还有好的去处不?

decops 太大,我们先做 CI/CD,请大家给点意见方向吧

Posted: 06 Aug 2021 12:20 AM PDT

领导可能觉得我从大城市回去的,所以让我负责 devops 这块。在 v 友的建议下,目前打算先做 CI/CD 这部分,没有什么头绪,看了禅道提的一篇文章: https://www.zentao.net/redirect-index-19319.html 目前的思路是:让老板先用禅道管理目前的项目,然后用 zendata 的数据生成器和 ztf 的测试框架串联起来,刚好这个几个都开源免费,这样二次开发也方便很多。还可以集成 Jenkins 进来。 想的往往比较简单,不知道有没有人走过这个方案 https://www.zentao.net/redirect-index-19322.html,请给点意见吧。秃头了

zulu jdk for m1,有个坑

Posted: 05 Aug 2021 11:54 PM PDT

sun.security.rsa.RSAPublicKeyImpl
RSAPublicKeyImpl(AlgorithmId rsaId, BigInteger n, BigInteger e)
这个构造器有三个参数,但是 oracle jdk 是两个参数,假如我的代码不能动。。。完蛋。。。 而且后面 11 16 什么的一系列非 oracle 的各厂商 open jdk 都是三个参数,,,哎,这种底层有时候还得用 oracle 的

js 只有数字格式的版本号比较能直接用 > 嘛?

Posted: 05 Aug 2021 10:07 PM PDT

突然发现,这个版本号比较挺麻烦的。 我们版本号格式是 [..* ] 都是类似这种格式的,可能位数不同,只有数字和 [.] ,比如 1.1.1,2.1.1.1,这种。 直接 js > 比较版本号字符是靠谱的吧。

if('1.1.1' > '2.1.1.1'){  //  } 

protobuf 的内存如何全部释放

Posted: 05 Aug 2021 08:38 PM PDT

最近发现 protobuf 2.6.1 消息对象在出了作用域后,虽然析构函数会把它析构,但是内存貌似没有完全还给系统。

测试程序比如往 vector<protoObject> 里放了 10000 个 proto 消息(space used: 278388656),但是当它出了作用域后,内存并没有降低到 push_back 消息之前的内存,大概还有 140MB 的内存占用,即使我 shutDownProtobufLibrary 后也还是会有差不多的内存占用。

因为目前要先做一个大的 proto 消息(由很多小的 repeated proto 消息组成,小的 repeated 又有很多小消息组成),所以希望是做完后,小的 proto 消息都析构然后空间还给系统,只保留最后的大 proto 消息,但是看起来这个组合大的 proto 消息的函数结束后(目前把大消息也析构),内存并没有全部还给系统。因为消息之间有组合关系比较复杂,除了一些没法 move 的都 move 了。

问题: C++ protobuf 组完消息再让消息析构后,内存占用无法回到最开始的时候,有什么办法可以释放这一部分内存给系统吗?

C-P 要打开文件,如果文件在其他组里已经打开了,自动跳转到那个已经打开的文件

Posted: 05 Aug 2021 08:29 PM PDT

如题,这个能设置吗?

有了解 GIS 的么,请教个经纬度的问题?

Posted: 05 Aug 2021 08:20 PM PDT

在地球上给定 2 个点 a 和 b 的经纬度,沿着球面大圆连接 ab 两个点做一条最短线段。
现在求解:在 ab 上等距离的划分 n 个点,求出这 n 个点的经纬度坐标?

22 岁入坑前端有前景吗?

Posted: 05 Aug 2021 08:17 PM PDT

想学一门技术,只能用边角时间去学,22 岁入坑前端会晚吗? 之前学过一些 html 和 css 、javascript 、jquery 。不过很多都忘了。

使用 mybatis plus, springboot 启动特别慢,初始化 addMappedStatement 耗时很久

Posted: 05 Aug 2021 07:45 PM PDT

我看也有 issue 问了,换来的一顿嘲讽

https://github.com/baomidou/mybatis-plus/issues/1154

image_1628212235872.png

最近也一直在排查这个问题,还没有思路,mp 内置了很多原生的,但是遇到几百个上千个表的工程,这个启动速度就很可怕了

英特尔网卡 AX201 睡眠后高频率的 7025, 7026 事件,诸位有遇到过么

Posted: 05 Aug 2021 07:09 PM PDT

笔记本睡眠后,ax201 每分钟触发 7025,7026 事件各一次

7025 - Dump after return from D3 before cmd

7026 - Dump after return from D3 after cmd

desk.PNG

查了一下,似乎是 Modern Standby s0ix 睡眠引起的? sleep.PNG

golang 开源项目招纳共同维护者,比较容易上手

Posted: 05 Aug 2021 04:58 PM PDT

Hello, 我维护一个开源项目( https://github.com/kubernetes/kompose )有一段时间了,因为个人工作事情比较多,精力有限。所以开发以及 bug 修复整体进度比较慢。很多 issue 被自动 close 了,项目整体处于不活跃状态。当然主要原因是它已经完成了历史使命,现在用的人也不多,但还是有不少用户或者尝鲜的用户。所以想在这个里面发帖试试看有没有人兴趣。

项目整体是比较简单的一个 cli, 涉及到 k8s,docker,golang,docker-compose 等基础知识,是一个不错的练手机会。我会负责 PR 的审核以及问题解答。

联系邮箱: aGFuZy55YW5AaG90bWFpbC5jb20K

ip 未被识别成大陆,依然调转 com.hk ��薛定谔的 ip ...

Posted: 05 Aug 2021 04:43 PM PDT

今天晚上发现 google 搜索跳转到了 com.hk,但是和说好的还不太一样.

我了解的 ip 识别成了大陆,结果导致强制跳转 com.hk.

  • 默认安全搜索开.
  • 搜索界面下 ip 地址是大陆.

跳转 com.hk 就是犯病安全搜索,现在没有还能用...但是我这到底要不要换个 ip 啊...

话说现在分布式数据库大家都用什么成熟的方案?

Posted: 05 Aug 2021 02:05 PM PDT

传统的 MySQL,只要数据量一大,超过千万条基本上都要分库分表,分完之后各种查询也恶心。。。除非是对性能要求极高的项目,我觉得现在那些分布式数据库,可以无限水平扩展的表太好用了。

本人在阿里干外包,阿里内部大量应用自研的分布式关系型数据库 AnalyticDB,也就是 adb,基本上是无脑用,从来不用考虑数据量问题。阿里内部很多统计类、数据分析类的表都使用这个库,兼容 mysql 语法。

最多的时候我见过一个表有 900 亿条数据,实在过于夸张。。。

这个 adb 在阿里云上面是要钱的,不知道市面上有上面成熟的开源方案呢?

发现一个关于 Magisk 模块的离谱问题

Posted: 05 Aug 2021 07:40 AM PDT

Systemless host 配合 Adaway 可以使我用的 VPN 软件加快连接速度,不安装模块需要很久才能连上,安完模块就可以秒连。

我用的 LocationReport Enabler 禁用后今日校园和某些其他软件会闪退。

想了半天关于商品上架的有序问题,没有想到最优解。。

Posted: 05 Aug 2021 03:34 AM PDT

比如 100 个用户每个用户上架 3 个商品,要保证有序性

那么就用 MQ,可靠,异步。

那么就有一个问题:

Q1:假设 300 个商品,上传会调用内部服务不同接口有不同限流方式,比如第 1 阶段的第三个接口请求次数过度,导致限流,那么处于第一阶段的第三接口,怎么保证限流后的优先级问题?

如果用优先队列,也不能百分百保证,优先等级会被先处理,可能优先等级会被再次限流。。。

个人觉得用分布式锁,来解决出现优先队列时,先解决优先队列。但是感觉性能不好。

大家有没有好的建议?

No comments:

Post a Comment