简单来说:是
{
"diary":{
"number":100,
"year":2006
},
"case":{
"number":12345,
"year":2006
}
}
Run Code Online (Sandbox Code Playgroud)
或者
{
"diary_number":100,
"diary_year":2006,
"case_number":12345,
"case_year":2006
}
Run Code Online (Sandbox Code Playgroud)
使用 Elasticsearch 时更好?
在我的情况下,总键只有几个(10-15)。哪个更好的性能明智?
用例是显示来自 noSQL 数据库(主要是 dynamoDB)的数据。还将其输入 Elasticsearch。
在常规的 React 应用程序中,我会使用 Redux 来管理状态,在匹配 中的任何路由之前我会分派初始数据App,但是,在 Remix 中不建议使用 Redux,因此我useContext改为使用 Redux。
有没有一种方法可以调用加载器在/无需匹配任何路由之前获取初始数据(例如会话、对象等),然后将该数据存储在全局存储中context,然后可以由存储中的任何组件访问?这样,API 只会在应用程序初始化期间被调用。
我现在正在调用 的加载器中的初始数据root.tsx,获取它useLoaderData,然后将其作为道具传递给以StoreProvider在全局状态下分派它,但是,我认为不应该这样做。
export let loader: LoaderFunction = async ({ request }) => {
let user = await getUser(request);
const products = await db.product.findMany();
return { user: user?.username, products };
};
function App() {
const data = useLoaderData<LoaderData>();
return (
<html lang="en">
...
<StoreProvider initData={data}>
<body>
...
<Outlet />
<ScrollRestoration />
<Scripts />
{process.env.NODE_ENV === "development" && …Run Code Online (Sandbox Code Playgroud) 使用 POST 获取文件和一些参数并返回 JSON 响应的 API。
curl -X POST www.endpoint.com \
-F file=@/myfile.txt \
-F foo=bar # other params
Run Code Online (Sandbox Code Playgroud)
我使用二进制数据与 Lambda + API 网关一起工作,但 10MB 限制是问题所在。
我考虑过将文件上传到 S3 的 POST API。然后由 Lambda 读取生成的事件。但为此我有几个问题-
amazon-s3 amazon-web-services aws-lambda aws-api-gateway serverless-framework
我在 AWS Lambda 上使用 Javascript SDK 来生成签名 URL。但getSignedUrl仅返回路径样式的URL。我尝试过设置s3ForcePathStyle为 false。
const params = {
Bucket: 'bucket_name',
Key: 'key_name'
};
const options = {
signatureVersion: 'v4',
useAccelerateEndpoint: false,
// endpoint: new AWS.Endpoint('https://bucket_name.s3.amazonaws.com'),
s3ForcePathStyle: false
};
const client = new AWS.S3(options);
exports.handler = async (event) => {
const signedURL = await (new Promise((resolve, reject) => {
client.getSignedUrl('putObject', params, (err, data) => {
if (err) {
reject(err);
}
else {
resolve(data);
}
});
}));
return signedURL;
};
Run Code Online (Sandbox Code Playgroud)
如果我取消注释, …
我正在尝试使用层在 Lambda 上部署 .so 文件。这些文件是使用 Amazon Linux docker 映像编译的。我将图层以 zip 格式上传,所需文件位于 /lib/ 中。但是我的代码无法读取这些文件。
from ctypes.util import find_library
def lambda_handler(event, context):
liblept=find_library('lept') # present in /opt/lib
libpng=find_library('png') # present in Lambda's default library
print(liblept) # gives None
print(libpng) # gives libpng.so.4
Run Code Online (Sandbox Code Playgroud)
我尝试将 /opt/lib 添加到LD_LIBRARY_PATH环境变量,但它不起作用。事实证明 LD_LIBRARY_PATH 默认有 /opt/lib -
print(os.environ.get("LD_LIBRARY_PATH"))
Run Code Online (Sandbox Code Playgroud)
输出
/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib
Run Code Online (Sandbox Code Playgroud) 我在 Lambda 上使用的 python 包 (OCRMYPDF) 需要 leptonica 库liblept.so.5。在隔离导入代码时,我发现问题在于find_library('lept')。打印结果返回 None。
from ctypes.util import find_library
def lambda_handler(event, context):
liblept=find_library('lept')
print("liblept:%s"%liblept)
Run Code Online (Sandbox Code Playgroud)
我正在使用的 python 包需要许多本机编译的依赖项。我正在尝试使用 lambda 层导入它们。
/opt/
/opt/bin/
/opt/lib/
/opt/lib/liblept.so.5
/opt/tesseract
Run Code Online (Sandbox Code Playgroud)
我可以使用 CDLL 访问该文件(代码如下)。但我不想重写包并用 CDLL 替换每个 find_library() 。是否可以设置find_library的导入目录?
/opt/
/opt/bin/
/opt/lib/
/opt/lib/liblept.so.5
/opt/tesseract
Run Code Online (Sandbox Code Playgroud)
我使用了 docker 镜像来构建层。/opt/bin 中依赖于 leptonica 的文件正在运行(tesseract 运行正常,也测试了 OCR)。
liblept=CDLL("/opt/lib/liblept.so.5") # found
print("liblept:%s"%liblept)
Run Code Online (Sandbox Code Playgroud)
输出
START RequestId: d826d36c-4ce9-4b67-b501-8c9042edcf80 Version: $LATEST
tesseract 4.1.0
leptonica-1.78.0
libgif 5.1.4 : libjpeg 6b (libjpeg-turbo 1.2.90) : libpng 1.2.49 : …Run Code Online (Sandbox Code Playgroud) 我正在创建一个认知用户池,其中用户电话号码作为唯一密钥。我想集成 Steam 社交登录来记录用户的 steam ID。问题是 AWS Cognito 支持 OpenID 连接,而 Steam 仅提供OpenID 2.0(已弃用的标准)。
有人成功地将两者结合起来吗?如果不是,那么应该使用什么方法?
用例要求用户仅存储自己的 Steam ID。直接通过文本字段接受 Steam ID 可能会被滥用。
我正在使用带有 Admin SDK 的云 Firebase 函数从我的 Firestore 集合中获取最新文档。排序基于timestamp字段。该值是在编写文档时明确提供的。
获取代码:
const fetchedTransaction = (await transactionsColRef.orderBy('timestamp', 'desc')
.limit(1).get()).docs[0]
console.log(fetchedTransaction)
console.log('Transaction created at', fetchedTransaction.createTime.toDate())
Run Code Online (Sandbox Code Playgroud)
这些console.log语句打印以下输出。看_createTime在底部。
输出:
const fetchedTransaction = (await transactionsColRef.orderBy('timestamp', 'desc')
.limit(1).get()).docs[0]
console.log(fetchedTransaction)
console.log('Transaction created at', fetchedTransaction.createTime.toDate())
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来排序文档,而_createTime不是timestamp每次都写入一个值。使用orderBy('_createTime')或orderBy('createTime')没有效果。
firebase google-cloud-functions firebase-admin google-cloud-firestore
令a、b 和c 为128 位数字。a * b当中间值溢出 128 位时,就会发生幻像溢出。然而,除法后的最终结果numerator / c可以容纳 128 位。
对于 64 位及更小的数字,可以转换为 128 位或使用muldiv crate。对于 128 位数字执行此操作的最佳方法是什么?问题是:
其中 LSB 位于索引 0,MSB 位于索引 63。类似地,它应该扩展到 u32 和其他类型。
let my_num: u64 = 100; // 0b1100100
let msb = get_msb(my_num); // 0
let lsb = get_lsb(my_num); // 0
Run Code Online (Sandbox Code Playgroud)
更正:MSB 在第 63 位应为 0,而不是在索引 6 处为 1
x考虑到负数是已知的,在内部哪种方法更有效?生成的正数将转换为无符号类型。
let x = -1;
let y = x.abs() as u32;
let z = -x as u32;
Run Code Online (Sandbox Code Playgroud)