小编sun*_*unw的帖子

当我在具有多个显示器的 macOS 中切换桌面时,为什么焦点切换到另一个意外的应用程序(在我的情况下是 iTerm2 或 VSCode)?

我有一台运行 Catalina 的 MacBook Pro,带有一个额外的显示器。我通常在一个显示器(iTerm2、VSCode 等)上安装与开发相关的应用程序,而在另一个显示器(Chrome、Slack 等)上安装其他所有应用程序。

有时(不是一直),当我切换桌面(Ctrl+leftCtrl+right),使用 Spotlight 访问应用程序(Cmd+space和类型),或使用Cmd+Tab切换应用程序时,焦点会突然跳转到 iTerm2 或 VSCode。即使 iTerm2 或 VSCode 当前未显示,也会发生这种情况;例如,如果我尝试在显示器 1 上切换到 Chrome,而 iTerm2 在显示器 2 上的另一个隐藏桌面上,Chrome 将出现在显示器 1 上,然后显示器 2 将显示包含 iTerm2 的桌面滑入视图(以及聚焦 iTerm2) .

这严重影响了工作流程,因为这种行为是不可预测的,并且涉及在错误的应用程序中输入大量内容并伸手去拿鼠标。是什么导致了这种行为?

macos multiple-monitors iterm2 visual-studio-code

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

Django 并行测试:测试过程错误地访问测试数据库

我有一个在本地运行的 Django 3.0.8 项目,连接到本地 PostgreSQL 数据库 ( postgres:///myapp)。当我运行时python manage.py test,我的单元测试运行良好;一个名为test_myapp自动的测试数据库被创建,并被正确访问。

但是,当我运行时python manage.py test --parallel 8,测试失败。我看到正确生成了 8 个克隆数据库(test_myapp_1, test_myapp_2,..., test_myapp_8),但我收到如下错误:

psycopg2.OperationalError: FATAL:  database "myapp_3" does not exist

Run Code Online (Sandbox Code Playgroud)

似乎对于并行测试,数据库访问不正确(尝试访问数据库myapp_N而不是test_myapp_N)。我试图弄清楚我的本地配置是否有问题,但这就是我在基本配置中的全部内容:

DATABASES = {
    'default': env.db('DATABASE_URL', default='postgres:///myapp'),
}
DATABASES['default']['ATOMIC_REQUESTS'] = True
Run Code Online (Sandbox Code Playgroud)

为什么我的并行测试进程不能正确访问它们各自克隆的测试数据库?

python testing django

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

无法使用 dj-rest-auth + django-allauth 登录 Salesforce

我的应用程序有一个 Django 3.1 后端,带有django-allauthdj-rest-auth(积极支持django-rest-auth 的分支)。

我的移动和 Web 前端已经可以通过 REST 使用 Facebook 和 Google 登录。我现在正在尝试将 Salesforce 添加为第 3 种 REST 社交登录方法,但遇到了问题。

我已按照Salesforcedjango-allauth 说明进行操作

  • 使用 id 和 openid 范围(以及其他一些范围)创建了一个 Salesforce Connected App,并将回调 URL 设置为 https://www.mywebdomain.com/accounts/salesforce/login/callback/
  • 在 Django 中创建了一个 SocialApplication,在“Key”字段中使用客户端 ID、密码和登录 URL ( https://login.salesforce.com/ )
  • 在 INSTALLED_APPS 中包含 allauth.socialaccount.providers.salesforce

我一直在使用客户端JSforce在前端启动 Salesforce 身份验证请求,但如果其他方法更简单/更好/等,我愿意接受其他方法。

jsforce.browser.login()在我客户的 JS 代码中运行会打开 Salesforce 登录弹出窗口。输入 Salesforce 登录凭据后,Salesforce 系统重定向到我定义的回调 URL,从而生成一个显示以下文本的页面:

社交网络登录失败
尝试通过您的社交网络帐户登录时发生错误。

该页面地址栏中的 URL 如下所示:

https://www.mywebdomain.com/accounts/salesforce/login/callback/#access_token=00D3t000004QWRm%21ARwAQPfHWiM6jdB43dlyW6qjEw._34mjzGi_Jv6YCXp0QssT.9F9lCge5_YaH8gqTy3Od6SywCs8X9zOGv145SyviBVeGdn0&instance_url=https%3A%2F%2Fna123.salesforce.com&id=https%3A%2F%2Flogin.salesforce.com%2Fid%2F00D3t000004QWRmEAO%2F0053t000008QBetAAG&issued_at=1606802917608&signature=KvxAX0WBCFQYY%2BO25id9%2FXxpbh2q2d2vWdQ%2FFV5FCBw%3D&state=jsforce0.popup.c0ockgct29g&scope=id+api+web+refresh_token+openid&token_type=Bearer
Run Code Online (Sandbox Code Playgroud)

我试图调试,并在我的后台打印错误,但两者auth_error.code并 …

django salesforce django-allauth django-rest-auth jsforce

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

在 React Native 中为组件的子组件添加边距?

我的父组件中有一些 React Native 组件<View>,我希望为每个<View>子组件应用边距。有没有一种直接的方法来设置道具或样式<View>来产生这个结果?

reactjs react-native

5
推荐指数
0
解决办法
1238
查看次数

Chart.js:鼠标悬停时,线系列(在许多之中)如何改变线的颜色和粗细?

我创建了一个具有多条线(默认情况下为1像素粗细)的Chart.js线图,我希望用户能够将鼠标悬停在任何特定的线图上(而不仅仅是点),并让该图更改其线宽(即3像素)。在Chart.js中可以这样做吗?

javascript chart.js chartjs-2.6.0

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

需要 Firebase JSON 的 Django 应用程序的 Heroku 配置?

我在 Heroku 上部署了一个 Python Django 应用程序,它通过drf-firebase-auth 库使用 Firebase (由于多种原因我必须使用它)。我知道配置不应被签入版本控制,但我不确定在我的情况下如何避免它。drf-firebase-auth 库要求将 Firebase 凭证 JSON 文件保存在我的代码的目录结构中。我如何本质上通过 Heroku 环境变量传递此 JSON,而不需要将 JSON 文件提交到我的 git 存储库(并推送到 Heroku),以便我可以为暂存/生产/等进行正确的配置设置?

drf-firebase-auth 库指示我将其添加到我的代码库中settings.py,并将非常敏感的firebase.json文件保存到我的代码库中:

DRF_FIREBASE_AUTH = {
    'FIREBASE_SERVICE_ACCOUNT_KEY': 'project/config/firebase.json'
}
Run Code Online (Sandbox Code Playgroud)

这个第三方库中的实现看起来有点像这样:

import firebase_admin
from drf_firebase_auth.settings import api_settings

...

firebase_credentials = firebase_admin.credentials.Certificate(
    api_settings.FIREBASE_SERVICE_ACCOUNT_KEY
)
firebase = firebase_admin.initialize_app(firebase_credentials)
...
Run Code Online (Sandbox Code Playgroud)

问题是我想避免将此 Firebase JSON 提交到 git 以便部署到 Heroku。

django configuration json heroku firebase

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

Django 与 mypy:如何解决由于扩展“AbstractUser”的自定义“User”模型类重新定义字段而导致的不兼容类型错误?

我有一个现有的 Django 项目,它使用User扩展的自定义模型类AbstractUser。由于各种重要原因,我们需要重新定义该email字段,如下:

class User(AbstractUser):
    ...
    email = models.EmailField(db_index=True, blank=True, null=True, unique=True)
    ...
Run Code Online (Sandbox Code Playgroud)

最近添加了通过 mypy 进行键入检查。但是,当我执行 mypy 检查时,出现以下错误:

错误:赋值中的类型不兼容(表达式的类型为“EmailField[str | int | Combinable | None, str | None]”,基类“AbstractUser”将类型定义为“EmailField[str | int | Combinable, str]”)[任务]

我怎样才能让 mypy 允许这种类型重新分配?我不想仅仅使用,# type: ignore因为我希望使用它的类型保护。

对于上下文,如果我确实使用# type: ignore,那么我会从我的代码库中得到数十个以下 mypy 错误的实例:

错误:无法确定“电子邮件”的类型 [has-type]

以下是我的设置的详细信息:

python version: 3.10.5
django version: 3.2.19
mypy version: 1.6.1
django-stubs[compatible-mypy] version: 4.2.6
django-stubs-ext version: 4.2.5
typing-extensions version: 4.8.0
Run Code Online (Sandbox Code Playgroud)

python django mypy django-stubs

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

Django 中的缓存和 django-channels 通道层可以使用相同的 Redis 存储吗?

我有一个 Django 3.1 应用程序,它使用 Redis 作为其缓存后备存储 (django-redis)。我希望使用 django-channels,它能够使用 Redis 作为通道层

同时为缓存和 django-channels 通道层使用相同的 Redis 存储是否安全?换句话说,我希望在我的 settings.py 中包含以下内容,并且我想知道这是否可以。

import environ

env = environ.Env()

REDIS_HOST = env('REDIS_HOST', default='127.0.0.1')
REDIS_PORT = env('REDIS_PORT', default='6379')

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        "LOCATION": "redis://" + REDIS_HOST + ":" + REDIS_PORT + "/0",
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
            'CONNECTION_POOL_KWARGS': {'max_connections': 30},
            'IGNORE_EXCEPTIONS': True,
        }
    }
}

CHANNEL_LAYERS = {
    "default": {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        "CONFIG": {
            "hosts": [(REDIS_HOST, int(REDIS_PORT))],
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

django django-cache django-redis django-channels

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

有没有办法为 Django 缓存锁设置过期时间?

我有一个 Django 3.1.3 服务器,它通过 django-redis 4.12.1 使用 Redis 进行缓存。我知道缓存锁通常可以通过以下方式设置:

with cache.lock('my_cache_lock_key'):
    # Execute some logic here, such as:
    cache.set('some_key', 'Hello world', 3000)
Run Code Online (Sandbox Code Playgroud)

with一般来说,当块执行完成时,缓存锁就会释放。但是,我的代码中有一些自定义逻辑,有时不会释放缓存锁(出于我自己的原因,这很好)。

我的问题:有没有办法为 Django 缓存锁设置超时值,与设置缓存值的超时值非常相似(cache.set('some_key', 'Hello world', 3000))?

django caching django-cache redis django-redis

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