您还必须告诉捆绑程序在 svelte.config.js 中使用它
kit: {
vite: {
resolve: {
alias: {
$routes: path.resolve('./src/routes')
}
}
}
}
也就是说,请记住路由文件夹中的所有文件,除了以下划线开头的文件之外) 被视为路线。因此,如果您有文件 /src/routes/db.js
,用户可以访问 http://yoursite.domain/db
。
很少有任何理由从那里导入文件,如果您需要这样做,它可能不是路由或端点,可以安全地放入 lib
中,而不是
更新 31.01.2023
上面的答案是在对 SvelteKit 中的路由工作方式进行重大修改之前编写的。如今,路由是基于目录的,只有文件 +page.svelte
才会真正创建路由(因此 /src/routes/about/+page.svelte
将为您提供 <代码>/about路线)。这意味着您可以安全地将其他文件和组件添加到路由文件夹中。
如果您首先获取您关心的值,然后才使用view
将其解释为矩阵,那么会更容易思考:
# setting up
>>> import torch
>>> import numpy as np
>>> x=np.arange(24) + 3 # just to visualize the difference between indices and values
>>> x
array([ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26])
# taking the values you want and viewing as matrix
>>> ft = torch.FloatTensor(x)
>>> ft[[13, 16, 19, 22]]
tensor([16., 19., 22., 25.])
>>> ft[[13, 16, 19, 22]].view(2,2)
tensor([[16., 19.],
[22., 25.]])
鉴于您在评论中注意到实际上有“另一个列行号”,您现在使用它来删除高行号。
首先是一个要“工作”的假数据表:
CREATE OR REPLACE TABLE too_much_data AS
select *
from values
('name_2022/01/01.csv' ,262627, '2022-01-01','2022-01-02', 1),
('name_2022/01/01.csv' ,262627, '2022-01-01','2022-01-02', 2),
('name_2022/01/02.csv' ,262627, '2022-01-02','2022-01-03', 3),
('name_2022/01/02.csv' ,262627, '2022-01-02','2022-01-03', 4)
t(filename, id, start1, end1, file_row_number);
现在让我们看看该表:
SELECT * FROM too_much_data;
FILENAME | ID | START1 | END1 | FILE_ROW_NUMBER |
---|---|---|---|---|
name_2022/01/01.csv | 262627 | 2022-01-01 | 2022-01-02 | 1 |
name_2022/01/01.csv | 262627 | 2022-01-01 | 2022-01-02 | 2 |
name_2022/01/02.csv | 262627 | 2022-01-02 | 2022-01-03 | 3 |
name_2022/01/02.csv | 262627 | 2022-01-02 | 2022-01-03 | 4 |
所以这些是我们的行想要删除的是:
SELECT filename, id, start1, end1, file_row_number
FROM too_much_data
QUALIFY file_row_number <> min(file_row_number) over(partition by filename, id, start1, end1);
FILENAME | ID | START1 | END1 | FILE_ROW_NUMBER |
---|---|---|---|---|
name_2022/01/01.csv | 262627 | 2022-01-01 | 2022-01-02 | 2 |
name_2022/01/02.csv | 262627 | 2022-01-02 | 2022-01-03 | 4 |
因此 DELETE 可以是:
DELETE FROM too_much_data as d
USING (
SELECT filename, id, start1, end1, file_row_number
FROM too_much_data
QUALIFY file_row_number <> min(file_row_number) over(partition by filename, id, start1, end1)
) as td
WHERE d.filename = td.filename and td.id = d.id and td.start1 = d.start1 and td.end1 = d.end1 and td.file_row_number = d.file_row_number;
行数已删除 |
---|
2 |
SELECT * FROM too_much_data;
文件名 | ID | START1 | END1 | FILE_ROW_NUMBER |
---|---|---|---|---|
name_2022/01/01.csv | 262627 | 2022-01-01 | 2022-01-02 | 1 |
name_2022/01/02.csv | 262627 | 2022-01-02 | 2022-01-03 | 3 |
您可以使用 基于脚本排序相同。您可以提供排序顺序,脚本将根据该顺序对您的响应进行排序。
POST index/_search
{
"query": {
"terms": {
"id": ["12", "34", "6", "22"]
}
},
"sort": {
"_script": {
"type": "number",
"script": {
"inline": "params.sortOrder.indexOf(doc['id'].value)",
"params": {
"sortOrder": ["12", "34", "6", "22"]
}
},
"order": "asc"
}
}
}
这两个错误完全无关。
数据库连接错误
第一个问题,我相信这是您目前真正关心的问题,根据问题的标题,它表明 Heroku CLI 无法在您的本地找到 PostgreSQL 客户端 > 机器。
在 Windows 上设置 Postgres
使用 Windows 安装程序在 Windows 上安装 Postgres。
请记住更新 PATH 环境变量以添加 Postgres 安装的
bin
目录。该目录类似于:C:\Program Files\PostgreSQL\
。像\bin heroku pg:psql
这样的命令取决于 PATH,如果 PATH 不正确,这些命令将不起作用。
如果您尚未在本地安装 Postgres,请安装。 (无论如何,这是一个好主意,因为您应该在本地开发,并且可能需要一个数据库。)
然后确保 添加其 < code>bin/ 目录添加到 PATH
环境变量。
Nodemon 错误
第二个问题是因为您尝试在生产中使用nodemon。 Heroku 在构建 Node.js 应用程序后将开发依赖项从 Node.js 应用程序中剥离出来,这通常是有意义的。 Nodemon 是一个开发工具,不应该用于生产托管。
根据 package.json
的内容,这可能就像将 start
脚本从 nodemon some-script.js
更改为 start
脚本一样简单代码>节点some-script.js。或者,您可以添加一个 Procfile
以及您实际想要在 Heroku 上运行的命令:
web: node some-script.js
从技术上讲,使用 Spring Boot for Apache Geode [同样适用于 GemFire] (SBDG),特别是在连接 Spring [Boot] 应用程序的 Pivotal CloudFoundry (PCF) 环境中运行时,或者在您的情况下,Spring Cloud Data Flow (SCDF) 应用程序连接到 Pivotal Cloud Cache (PCC) 服务实例(即 PCF 中的 GemFire),然后 SBDG 将自动连接、身份验证和授权当您的 Spring [Boot] 应用程序被推送到 PCF 后,您的应用程序。
注意:Pivotal CloudFoundry (PCF) 现在更名为 VMware Tanzu Appliation Service (TAS),Pivotal Cloud Cache (PCC) 现在更名为 VMware Tanzu GemFire for VMS。
当然,这假设在配置 PCC 服务实例时正确设置和配置了 PCF/PCC 环境,特别是 VCAP 环境变量。
如果您没有使用 Spring Boot for Apache Geode,则不会对 PCF/PCC 环境(VCAP 环境变量)进行“自动”检查,因此您需要负责用于处理连接、身份验证等。SBDG
专门设计用于跨环境处理这些问题,并提供自动配置来处理 Spring Boot 应用程序推送到连接到的 PCF 时的连接、身份验证和其他问题个人计算机委员会。
更多详细信息可以在文档< /a>.
此外, 获取Started Sample 引导用户在本地上下文中使用 Apache Geode 构建 Spring Boot 应用程序,然后在本地切换到非托管客户端/服务器拓扑,最后在 PCF 等托管上下文中推送并运行该应用程序,连接(和验证)与PCC。
不过,所有这些都需要SBDG。
我不确定 SCDF 在幕后是否使用了 SBDG。它可能仅使用 Spring Data for Apache Geode (SDG),在这种情况下,您可能需要将 SDG 依赖项替换为 SBDG。
此过程中很可能还涉及其他工作,因为我不清楚 SCDF 在使用 SCDF(源/接收器)时代表您创建哪些特定的 GemFire/Geode 对象(例如缓存实例),这些对象可能与 自动配置由SBDG提供。
例如,如果 SCDF 为您创建一个缓存实例(即 ClientCache
),那么它将覆盖自动创建 ClientCache
的 SBDG 自动配置 > 实例]3< /a>,默认情况下。如果是这种情况,那么您将再次对安全性(身份验证)负责,因为必须在创建 GemFire/Geode 缓存实例(例如 ClientCache
)之前配置安全性。
注意:这是 GemFire/Geode 要求,而不是 Spring 要求。
因此,SBDG 的自动配置安排在应用时的优先级和顺序上是经过深思熟虑的。如果 SBDG 自动配置被您显式覆盖,或者被另一个框架(例如 SCDF)隐式覆盖,那么您就有责任了解 GemFire/Geode 配置的期望(内部)。
另一方面,如果您确定 SBDG 位于应用程序类路径中并且正确使用,那么此问题可能源于应用程序使用了错误的分配用户。
如果您的环境相当复杂,声明多个用户具有不同的分配权限集,那么您的应用程序可能需要使用不同的用户分配来运行,在这种情况下,您应该查看这个特定的 文档部分。
与往常一样,您应该确保 Spring [Boot | CDF] 应用程序在本地非托管环境中正确运行,并且在 PCF 等托管环境中远程运行之前具有类似的设置和配置。
目标 SBDG 一直很明确,并且 SBDG 已经过测试并证明了这一效果。
请在这里分享尽可能多的细节(代码、配置等),以便我们能够正确分类这个问题。
问题在于,您使用计划设置了一堆作业(每 7 秒一个,每 8 秒一个,...),然后一次运行它们,因此实际运行的作业数量会高得多。如果我理解正确的话,您真正想要的是运行每个作业之前 7 到 14 秒之间的随机等待时间。
您可以在没有计划包的情况下轻松完成此操作(尽管也可能有一种方法,但不确定):
import random
import webbrowser as wb
import time
def job():
wb.open('https://en.wikipedia.org/wiki/Main_Page')
X = str(input("Are your ready, yes or no (answer in lower case)"))
while X != "yes":
X = str(input("put yes!!!"))
while True:
job()
time.sleep(random.randint(7, 14))
首先,进入发生错误的区域中的 Cloudwatch 日志,使用 Log Insights 查找错误。您将获得有关 Lambda 提出 503 原因的更多详细信息。
我敢打赌这是 SQS 权利。
正如这里引用的:
https://github.com/aws-amplify/amplify-hosting /issues/2175#issuecomment-900514998
可像这样修复:
TL;DR:向您的 lambda 添加 SQS 权限函数执行角色。
3/ 在 JSON 中编辑权限策略并添加以下内容:
{
"Action": [
"sqs:*"
],
"Resource": [
"arn:aws:sqs:us-east-1:*:*"
],
"Effect": "Allow"
}
查看并应用,它应该可以工作。
这是准确的音译。不过,可能有更好的方法来做到这一点,如果没有其他人这样做的话,也许我会稍后再回来讨论。
defmodule Example do
def run do
input = ~w(A B C D E F)
tuples = Enum.zip(input, tl(input))
results = [false, true, true, false, true]
combined = Enum.zip(tuples, results)
first_item = hd(input)
small_list = [first_item]
big_list = []
{small_list, big_list} =
Enum.reduce(combined, {small_list, big_list}, fn
{{_left, right}, true}, {small_list, big_list} ->
{[right | small_list], big_list}
{{_left, right}, false}, {small_list, big_list} ->
{[right], [Enum.reverse(small_list) | big_list]}
end)
case small_list do
[] -> big_list
_ -> [Enum.reverse(small_list) | big_list]
end
|> Enum.reverse()
end
end
输出:
[["A"], ["B", "C", "D"], ["E", "F"]]
尝试这样的事情:
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.abstractsonline.com/pp8/#!/10517/sessions/@timeSlot=Apr08/1')
//page_source = driver.page_source
element = driver.find_elements_by_xpath('.//li[@class="result clearfix"]//h1')
for el in element:
id=el.get_attribute("data-id")
print(id)
您可以使用我为我的一个项目构建的这个函数。我在日、小时、分钟、秒级别上构建了这个功能。我已经根据您的需要减少了它。
def compare_hours(constraint: dict) -> bool:
from datetime import datetime
"""
This is used to compare a given hours,minutes against current time
The constraint must contain a single key and value.
Accepted keys are:
1. before:
eg {"before": "17:30"}
2. after:
eg: {"after": "17:30"}
3. between:
eg: {"between": "17:30, 18:30"}
4. equal:
eg: {"equal": "15:30"}
Parameters
----------
constraint : dict
A dictionary with keys like before, after, between and equal with their corresponding values.
Returns
-------
True if constraint matches else False
"""
accepted_keys = ("before", "after", "between", "equal")
assert isinstance(constraint, dict), "Constraint must be a dict object"
assert len(constraint.keys()) == 1, "Constraint contains 0 or more than 1 keys, only 1 is allowed"
assert list(constraint.keys())[0] in accepted_keys, f"Invalid key provided. Accepted keys are {accepted_keys}"
key = list(constraint.keys())[0]
time_split = lambda x: list(map(int, x.split(":")))
try:
if key == "before":
hours, minutes = time_split(constraint.get(key))
dt = datetime.now()
if dt < dt.replace(hour=hours, minute=minutes):
return True
return False
elif key == "after":
hours, minutes = time_split(constraint.get(key))
dt = datetime.now()
if dt > dt.replace(hour=hours, minute=minutes):
return True
return False
elif key == "between":
dt = datetime.now()
values = constraint.get(key).replace(' ', '').split(",")
assert len(values) == 2, "Invalid set of constraints given for between comparison"
hours, minutes = time_split(values[0])
dt1 = dt.replace(hour=hours, minute=minutes)
hours, minutes = time_split(values[1])
dt2 = dt.replace(hour=hours, minute=minutes)
assert dt2 > dt1, "The 1st item in between must be smaller than second item"
if dt > dt1 and dt < dt2:
return True
return False
else:
hours, minutes = time_split(constraint.get(key))
dt = datetime.now()
if dt == dt.replace(hour=hours, minute=minutes):
return True
return False
except Exception as e:
print(e)
您可以根据需要重复使用该功能。例如:
if compare_hours({"before": "21:00"}) and compre_hours({"after": "18:30"}):
"do something"
这本质上与使用“ Between”选项相同。
您声明了数组,但没有初始化它。这意味着数组的每个槽内部都没有 0,但可以有一个随机值。
因此,执行 a[part-1] += 1 会将 1 添加到随机值(请注意,如果 part 为 0 或 > 到 k,则超出范围)。你需要将每个“槽”初始化为 0。
尝试编译并执行它来理解:
#include <stdio.h>
int main()
{
int arr[5];
for (int i = 0; i < 5; i++)
{
printf("%d\n", arr[i]);
}
}
首先,您需要从列表中找到要比较的对象。最简单的方法是迭代您的列表并检查标题(假设标题在您的列表中):
int firstComparisonValue = 0;
for(TopMangaData m :TopMangaData)
if(m.getTitle().equals(firstComparison))
firstComparisonValue = m.getRating();
int secondComparisonValue = 0;
for(TopMangaData m :TopMangaData)
if(m.getTitle().equals(secondComparison))
secondComparisonValue = m.getRating();
然后比较您的值并打印出大的标题
if(firstComparisonValue > secondComparisonValue){
System.out.println("First manga has higher rating")
}
else if (firstComparisonValue < secondComparisonValue){
System.out.println("Second manga has higher rating")
}
else {
System.out.println("Both have the same rating!")
}
您是否尝试使用 Node 服务器生成的数据预填充 HTML 表单?
如果是这种情况,您可以使用诸如
ejs
pug
handlebars
等模板引擎来呈现动态数据,或者您可以简单地使用 AJAX 请求到服务器来获取数据并将其显示在您的 UI 中,就像框架一样。Are you trying to prefill a HTML form with the data generated by the Node server?
If that's the case, you can use a templating engine like
ejs
pug
handlebars
etc to render dynamic data or you can simply use AJAX request to the server to fetch data and display it in your UI like the frameworks do.想要将值从nodejs服务器推送到html表单