我正在遵循此文档: https: //authjs.dev/reference/adapter/mongodb以使用 next-auth。这是相关代码:
import NextAuth from "next-auth"
import { MongoDBAdapter } from "@auth/mongodb-adapter"
import clientPromise from "../../../lib/mongodb"
...
export default NextAuth({
providers,
adapter: MongoDBAdapter(clientPromise),
})
Run Code Online (Sandbox Code Playgroud)
我收到以下错误,这对我来说毫无意义:
Type 'Adapter' is not assignable to type 'Adapter | undefined'.
Type 'Adapter' is not assignable to type 'DefaultAdapter & { createVerificationToken: (verificationToken: VerificationToken) => Awaitable<VerificationToken | null | undefined>; useVerificationToken: (params: { ...; }) => Awaitable<...>; }'.
Type 'Adapter' is not assignable to type 'DefaultAdapter'.
Types of property 'createUser' are incompatible.
Type …
Run Code Online (Sandbox Code Playgroud) 经过长时间的调试后,我发现为什么我的应用程序使用python regexps很慢.这是令我惊讶的事情:
import datetime
import re
pattern = re.compile('(.*)sol(.*)')
lst = ["ciao mandi "*10000 + "sol " + "ciao mandi "*10000,
"ciao mandi "*1000 + "sal " + "ciao mandi "*1000]
for s in lst:
print "string len", len(s)
start = datetime.datetime.now()
re.findall(pattern,s)
print "time spent", datetime.datetime.now() - start
print
Run Code Online (Sandbox Code Playgroud)
我机器上的输出是:
string len 220004
time spent 0:00:00.002844
string len 22004
time spent 0:00:05.339580
Run Code Online (Sandbox Code Playgroud)
第一个测试字符串长220K,匹配,匹配非常快.第二个测试字符串长20K,不匹配,计算需要5秒!
我知道这个报告http://swtch.com/~rsc/regexp/regexp1.html里面说python,perl,ruby中的regexp实现有点不理想......这是什么原因?我没想到会发生如此简单的表达.
添加 我的原始任务是依次拆分一个字符串尝试不同的正则表达式.就像是:
for regex in ['(.*)sol(.*)', '\emph{([^{}])*)}(.*)', .... ]:
lst = re.findall(regex, text) …
Run Code Online (Sandbox Code Playgroud) 这是编写此格式化函数的简洁方法:
def percent(value,digits=0):
return ('{0:.%d%%}' % digits).format(value)
>>> percent(0.1565)
'16%'
>>> percent(0.1565,2)
'15.65%'
Run Code Online (Sandbox Code Playgroud)
问题是格式化具有给定位数的数字,我不喜欢同时使用'%'运算符和格式方法.
我正在使用pandas
Web服务器(apache + modwsgi + django)并且有一个难以重现的错误,现在我发现它是由大熊猫不是线程安全引起的.
经过大量的代码缩减后,我终于找到了一个简短的独立程序,可以用来重现问题.你可以在下面看到它.
关键是:与这个问题的答案相反,这个例子表明即使使用非简单的操作也不会修改数据帧,大熊猫就会崩溃.我无法想象这个简单的代码片段如何可能对线程不安全......
问题是在Web服务器中使用pandas和numpy.可能吗?我怎么用庞大熊来修复我的代码?(锁定使用的一个例子会很有帮助)
以下是导致分段错误的代码:
import threading
import pandas as pd
import numpy as np
def let_crash(crash=True):
t = 0.02 * np.arange(100000) # ok con 10000
data = pd.DataFrame({'t': t})
if crash:
data['t'] * 1.5 # CRASH
else:
data['t'].values * 1.5 # THIS IS OK!
if __name__ == '__main__':
threads = []
for i in range(100):
if True: # asynchronous
t = threading.Thread(target=let_crash, args = ())
t.daemon = True
t.start()
threads.append(t)
else: …
Run Code Online (Sandbox Code Playgroud) firebase https://firebase.google.com/docs/web/setup 的文档告诉我们我们可以安全地公开 firebase apiKey:
注意: Firebase 配置对象包含 Firebase 项目的唯一但非秘密的标识符。
本教程解释了如何获取 apiKey 并将其插入到我们的 Web 应用程序的 HTML 代码中。每个人都可以读取该密钥。我会理解这只是一个识别密钥。
但最近我收到了来自谷歌的这条消息:
我们检测到与以下 Google Cloud Platform 项目相关联的可公开访问的 Google API 密钥:
[...]
密钥是在以下 URL 中找到的:
[...]
我们认为您或您的组织可能无意中在公共来源或公共网站上发布了受影响的 API 密钥(例如,凭据错误地上传到 GitHub 等服务。)
请注意,作为项目/帐户所有者,您有责任保护您的密钥。因此,我们建议您采取以下步骤来纠正这种情况:
- 如果此密钥是公开的(或者无法阻止可公开访问的密钥):登录 Google Cloud Console 并查看您帐户上的 API 和结算活动,确保使用情况符合您的预期。向您的 API 密钥添加 API 密钥限制(如果适用)。
- 如果此密钥不打算公开:重新生成已泄露的 API 密钥:在云控制台平台中搜索凭据,编辑泄露的密钥,然后使用重新生成密钥按钮轮换密钥。有关更多详细信息,请查看有关处理受损 GCP 凭据的说明。立即采取措施确保您的 API 密钥未嵌入公共源代码系统、存储在下载目录中或以其他方式无意共享。向您的 API 密钥添加 API 密钥限制(如果适用)。
总的来说,我会说这两种信息来源相互对比。apiKey 是“非秘密的”是真的吗?另请阅读相关问题是否安全地将 Firebase apiKey 公开给公众?我不太确定。我知道如果规则允许,apiKey 足以访问整个数据库。
第一个问题:我想知道我是否可以确信 apiKey 只提供对数据库的访问(可以受规则限制),或者它是否还可以访问有关项目的其他信息。存储呢?用户可以读取文件吗?能写出来吗?该密钥称为“Web API 密钥”,因此我理解它是项目的唯一标识符。在收到来自 google 的消息之前,我更多地将其视为标识符而不是密钥。由于对项目 API 的每次访问对于作为项目所有者的我来说都是潜在的成本,因此我理解为了计费需要一个密钥。
第二个问题。因为我想完全控制用户可以在数据库中访问的内容,所以我的应用程序将 REST api …
我想知道构造一个Q(...)
与查询集中没有对象匹配的对象的正确方法.看来,双方Q()
并~Q()
匹配所有的对象!
我想创建一个链接,打开一个模型的django admin添加页面,其中一些字段已预填.
我检查了可以将参数添加到添加表单的GET字典中,如下所示:
<a href='/admin/myapp/mymodel/add?name=John'>add new mymodel with name John</a>
Run Code Online (Sandbox Code Playgroud)
(实际上我得到了{%url'admin:myapp_mymodel_add'%}的网址,但这只是为了明确).
现在,这适用于数值,文本值和外键.但是DateTime字段呢?当我尝试通过这样的字段时(我尝试了许多格式,例如"2014-05-09 10:10:00")我总是得到一个"服务器错误"抱怨:
'unicode'对象没有属性'date'
在代码行中:
解压缩中的django/forms/widgets.py,第902行
def decompress(self, value):
if value:
value = to_current_timezone(value)
return [value.date(), value.time().replace(microsecond=0)] ...
return [None, None]
Run Code Online (Sandbox Code Playgroud)
其中变量"value"具有我传递给URL的值...
问题1.我认为服务器代码不应该根据用户传递的值引发异常...这不是django库中的错误吗?
问题2.如何解决我的问题,即通过GET参数将初始日期时间传递给模型的管理"添加"页面?
我在'np.einsum'的文档中理解的是,置换字符串将给出向量中轴的置换.以下实验证实了这一点:
>>> M = np.arange(24).reshape(2,3,4)
>>> M.shape
(2, 3, 4)
>>> np.einsum('ijk', M).shape
(2, 3, 4)
>>> np.einsum('ikj', M).shape
(2, 4, 3)
>>> np.einsum('jik', M).shape
(3, 2, 4)
Run Code Online (Sandbox Code Playgroud)
但这我无法理解:
>>> np.einsum('kij', M).shape
(3, 4, 2)
Run Code Online (Sandbox Code Playgroud)
我希望(4,2,3)相反......我的理解有什么问题?
我有一些代码使用 scipy.integration.cumtrapz 来计算采样信号的反导数。我想使用辛普森规则而不是梯形。然而 scipy.integration.simps 似乎没有累积的对应物......我错过了什么吗?有没有一种简单的方法可以与“scipy.integration.simps”进行累积集成?
我已经为无服务器 Web 应用程序启动了一个 Firebase 项目。我可以从客户端访问 Firestore 数据库。在无服务器端,我编写了一个在 http 请求上调用的函数。该函数试图通过 Firestore 对象访问数据库,但它失败了,因为 Firestore 对象没有我认为应该具有的 collection() 函数。在输出中,我显示了 Firestore 对象的内容。
const functions = require('firebase-functions');
exports.noteList = functions.https.onRequest((req, res) => {
db = functions.firestore;
console.dir(db);
db.collection("notes").listDocuments().then(documentRefs => {
return db.getAll(documentRefs);
}).then(documentSnapshots => {
res.json(documentSnapshots);
});
});
Run Code Online (Sandbox Code Playgroud)
输出:
{ provider: 'google.firestore',
service: 'firestore.googleapis.com',
defaultDatabase: '(default)',
document: [Function: document],
namespace: [Function: namespace],
database: [Function: database],
_databaseWithOpts: [Function: _databaseWithOpts],
_namespaceWithOpts: [Function: _namespaceWithOpts],
_documentWithOpts: [Function: _documentWithOpts],
DatabaseBuilder: [Function: DatabaseBuilder],
NamespaceBuilder: [Function: NamespaceBuilder],
snapshotConstructor: [Function: snapshotConstructor],
beforeSnapshotConstructor: [Function: beforeSnapshotConstructor], …
Run Code Online (Sandbox Code Playgroud)