我有一台运行 Catalina 的 MacBook Pro,带有一个额外的显示器。我通常在一个显示器(iTerm2、VSCode 等)上安装与开发相关的应用程序,而在另一个显示器(Chrome、Slack 等)上安装其他所有应用程序。
有时(不是一直),当我切换桌面(Ctrl+left或Ctrl+right),使用 Spotlight 访问应用程序(Cmd+space和类型),或使用Cmd+Tab切换应用程序时,焦点会突然跳转到 iTerm2 或 VSCode。即使 iTerm2 或 VSCode 当前未显示,也会发生这种情况;例如,如果我尝试在显示器 1 上切换到 Chrome,而 iTerm2 在显示器 2 上的另一个隐藏桌面上,Chrome 将出现在显示器 1 上,然后显示器 2 将显示包含 iTerm2 的桌面滑入视图(以及聚焦 iTerm2) .
这严重影响了工作流程,因为这种行为是不可预测的,并且涉及在错误的应用程序中输入大量内容并伸手去拿鼠标。是什么导致了这种行为?
我有一个在本地运行的 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)
为什么我的并行测试进程不能正确访问它们各自克隆的测试数据库?
我的应用程序有一个 Django 3.1 后端,带有django-allauth和dj-rest-auth(积极支持django-rest-auth 的分支)。
我的移动和 Web 前端已经可以通过 REST 使用 Facebook 和 Google 登录。我现在正在尝试将 Salesforce 添加为第 3 种 REST 社交登录方法,但遇到了问题。
我已按照Salesforce的django-allauth 说明进行操作:
https://www.mywebdomain.com/accounts/salesforce/login/callback/我一直在使用客户端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并 …
我的父组件中有一些 React Native 组件<View>,我希望为每个<View>子组件应用边距。有没有一种直接的方法来设置道具或样式<View>来产生这个结果?
我创建了一个具有多条线(默认情况下为1像素粗细)的Chart.js线图,我希望用户能够将鼠标悬停在任何特定的线图上(而不仅仅是点),并让该图更改其线宽(即3像素)。在Chart.js中可以这样做吗?
我在 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 项目,它使用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) 我有一个 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 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 ×6
django-cache ×2
django-redis ×2
python ×2
caching ×1
chart.js ×1
django-stubs ×1
firebase ×1
heroku ×1
iterm2 ×1
javascript ×1
jsforce ×1
json ×1
macos ×1
mypy ×1
react-native ×1
reactjs ×1
redis ×1
salesforce ×1
testing ×1