我按照 Warp 文档中的说明进行操作,但这仅替换了外部终端(它作为单独的窗口打开)。 https://www.warp.dev/blog/how-to-open-warp-vscode
我希望 Warp 取代 vscode 在集成终端中对 xterm 的使用,但我似乎不知道如何做到这一点。我的尝试是编辑 settings.json 中的配置文件:
"terminal.integrated.profiles.osx": {
"bash": {
"path": "bash",
"args": [
"-l"
],
"icon": "terminal-bash"
},
"zsh": {
"path": "zsh",
"args": [
"-l"
]
},
"fish": {
"path": "fish",
"args": [
"-l"
]
},
"tmux": {
"path": "tmux",
"icon": "terminal-tmux"
},
"pwsh": {
"path": "pwsh",
"icon": "terminal-powershell"
},
"warp": {
"path": "/Applications/Warp.app/Contents/MacOS/stable",
"icon": "/Applications/Warp.app/Contents/Resources/Warp.icns"
}
},
"terminal.integrated.defaultProfile.osx": "warp",
Run Code Online (Sandbox Code Playgroud)
但这只是在一个单独的窗口中打开 Warp,并且现有的集成终端包含 Warp 的输出日志。
Warp 文档不包括更改集成终端,vscode 文档也不包括,所以我高度怀疑这是不可行的,但我想知道是否有人可能找到了一些不太明显的解决方法。
我正在尝试异步处理多个文件,并且处理每个文件需要对 SQLite 数据库进行一些读取和写入操作。我一直在寻找一些选项,我在这里找到了 aiosqlite 模块。但是,我在这里阅读 SQLite 文档,它说它支持多线程模式。事实上,默认模式是“序列化”,这意味着它“可以被多个线程安全地使用,没有限制”。
我不明白有什么区别。aiosqlite 文档说:
aiosqlite 允许在主 AsyncIO 事件循环上与 SQLite 数据库交互,而不会在等待查询或数据获取时阻止其他协程的执行。它通过为每个连接使用一个共享线程来实现这一点。
我知道 aiosqlite 和 sqlite 上的“多线程”模式之间存在差异,因为多线程模式每个线程只需要一个连接,而在 aiosqlite 中,您可以跨多个线程重用这个单个连接。但这与序列化模式不一样,它可以“由多个线程无限制地使用”?
编辑:我现在的问题是“我目前的理解是否正确?”:
threading在 python 中使用该模块并生成多个线程,则将使用它。在这里,我可以选择为每个线程使用单独的连接或跨多个线程共享连接。所以我知道 Typing.Optional 的标准用例,这意味着它是类型和 None 之间的联合。例如
def my_func(a, b=None):
# type: (str, Typing.Optional[str]) -> str
# do stuff with the strings
Run Code Online (Sandbox Code Playgroud)
但是如果 B 的默认值是实际字符串怎么办?
def my_func(a, b='hello'):
Run Code Online (Sandbox Code Playgroud)
b 的类型应该是Optional[str] 还是只是str?因为从用户的角度来看它是可选的,因为调用此函数时不需要传递值,但这并不意味着 None 应该起作用。Mypy 似乎没有检测到任何一个的问题。
我一直试图调试我的代码,结果发现这是我错误的原因,很难找到。一个简单的例子来演示我在说什么:
class Test():
def __init__(self):
self.a = 0
x = Test()
x.b = 2
print(x.a)
print(x.b)
Run Code Online (Sandbox Code Playgroud)
此代码不会抛出任何错误。事实上,它会成功打印出 0 和 2。所以即使 Test 不包含实例变量b,它仍然会在我分配它时创建它。如果我初始化第二个测试变量
y = Test()
print(y.b)
Run Code Online (Sandbox Code Playgroud)
它会按预期抛出错误。
那么,为什么首先存在此功能,以便能够在类的实例上创建新属性?幕后发生了什么来实现这种行为?有什么方法可以禁用这种行为,或者至少在编程时以某种方式捕获它?
我想这个问题与我当前的问题最相似。但基本上,我有一个谷歌表格文件,底部有几张表格。我希望用户在他们当时打开的任何工作表上执行此脚本。
就像根据本文档所说的上一个问题一样,活动工作表是电子表格 UI 中显示的工作表。我认为这意味着如果我在另一个选项卡中打开谷歌工作表文件,则当前选择和我可以查看的工作表将成为活动工作表。
但是,返回的实际活动工作表始终是底部选项卡最左侧的工作表。我已经通过切换工作表的顺序来确认这一点。因此,无论我实际上在 UI 中打开并可见哪个工作表,它总是会获取最左边的工作表。这是获取它的行。
var Sheet = SpreadsheetApp.openById("redactedid").getActiveSheet()
Run Code Online (Sandbox Code Playgroud)
这是应用程序脚本的已知错误吗?或者文档有误?如果是,是否有解决方法可以获取 UI 中当前打开的工作表?我不希望任何人必须在代码中对工作表名称进行硬编码,因为文件不断变化并且不断添加工作表。