小编foo*_*iey的帖子

能否将 Warp 终端作为 VS Code 中的集成终端?

我按照 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 文档也不包括,所以我高度怀疑这是不可行的,但我想知道是否有人可能找到了一些不太明显的解决方法。

visual-studio-code

34
推荐指数
3
解决办法
1万
查看次数

aiosqlite和SQLite在多线程模式下有什么区别?

我正在尝试异步处理多个文件,并且处理每个文件需要对 SQLite 数据库进行一些读取和写入操作。我一直在寻找一些选项,我在这里找到了 aiosqlite 模块。但是,我在这里阅读 SQLite 文档,它说它支持多线程模式。事实上,默认模式是“序列化”,这意味着它“可以被多个线程安全地使用,没有限制”。

我不明白有什么区别。aiosqlite 文档说:

aiosqlite 允许在主 AsyncIO 事件循环上与 SQLite 数据库交互,而不会在等待查询或数据获取时阻止其他协程的执行。它通过为每个连接使用一个共享线程来实现这一点。

我知道 aiosqlite 和 sqlite 上的“多线程”模式之间存在差异,因为多线程模式每个线程只需要一个连接,而在 aiosqlite 中,您可以跨多个线程重用这个单个连接。但这与序列化模式不一样,它可以“由多个线程无限制地使用”?

编辑:我现在的问题是“我目前的理解是否正确?”:

  1. “序列化”模式下的 Sqlite 可以同时被多个线程使用,因此如果我threading在 python 中使用该模块并生成多个线程,则将使用它。在这里,我可以选择为每个线程使用单独的连接或跨多个线程共享连接。
  2. aiosqlite 与 asyncio 一起使用。因此,由于 asyncio 有多个协程共享一个线程,因此 aiosqlite 也可以与一个线程一起使用。因此,我创建了一个在所有协程之间共享的连接。
  3. 由于 aiosqlite 基本上是 sqlite 的一个包装器,我可以结合 1 和 2 的功能。所以我可以有多个线程,其中每个线程都有一个带有多个协程的 asyncio 事件循环。因此,基本的 sqlite 功能将处理多线程,而 aiosqlite 将处理协程。

python sqlite multithreading python-asyncio

9
推荐指数
1
解决办法
982
查看次数

如果参数的默认值不是 None,是否应该使用 Typing.Optional?

所以我知道 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 似乎没有检测到任何一个的问题。

python typing mypy

5
推荐指数
1
解决办法
2974
查看次数

为什么当你设置一个不存在的类的属性时,python 不会抛出异常

我一直试图调试我的代码,结果发现这是我错误的原因,很难找到。一个简单的例子来演示我在说什么:

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)

它会按预期抛出错误。

那么,为什么首先存在此功能,以便能够在类的实例上创建新属性?幕后发生了什么来实现这种行为?有什么方法可以禁用这种行为,或者至少在编程时以某种方式捕获它?

python python-class

2
推荐指数
1
解决办法
108
查看次数

Google App Script getActiveSheet 返回最左边的工作表,而不是活动工作表

我想这个问题与我当前的问题最相似。但基本上,我有一个谷歌表格文件,底部有几张表格。我希望用户在他们当时打开的任何工作表上执行此脚本。

就像根据文档所说的上一个问题一样,活动工作表是电子表格 UI 中显示的工作表。我认为这意味着如果我在另一个选项卡中打开谷歌工作表文件,则当前选择和我可以查看的工作表将成为活动工作表。

但是,返回的实际活动工作表始终是底部选项卡最左侧的工作表。我已经通过切换工作表的顺序来确认这一点。因此,无论我实际上在 UI 中打开并可见哪个工作表,它总是会获取最左边的工作表。这是获取它的行。

var Sheet = SpreadsheetApp.openById("redactedid").getActiveSheet()
Run Code Online (Sandbox Code Playgroud)

这是应用程序脚本的已知错误吗?或者文档有误?如果是,是否有解决方法可以获取 UI 中当前打开的工作表?我不希望任何人必须在代码中对工作表名称进行硬编码,因为文件不断变化并且不断添加工作表。

google-sheets google-apps-script

1
推荐指数
1
解决办法
2200
查看次数