这样您将替换所有具有最大值的元素
#get the max value of the array
max_value = np.max(r2)
#all the element with the max value will be replaced with the first value
r2[r2 == max_value] = r2[0][0]
#put the max value in the first position
r2[0][0] = max_value
对我来说,问题是我没有为indexformat属性提供值(在 elasticsearchSinkoptions
对象中)。相反,我将其放在端点上,就像您通过REST插入数据时应该做的那样。总而言之,以下代码为我解决了问题:
var jsonFormatter = new CompactJsonFormatter();
var loggerConfig = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Map("Name", "**error**", (name, writeTo) =>
{
var currentYear = DateTime.Today.Year;
var currentWeek = calendar.GetWeekOfYear(DateTime.Now,
CalendarWeekRule.FirstDay,
DayOfWeek.Monday);
writeTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("<opensearch endpoint>"))
{
CustomFormatter = jsonFormatter,
TypeName = "_doc",
IndexFormat = $"my-index-{currentYear}-{currentWeek}",
MinimumLogEventLevel = LogEventLevel.Information,
EmitEventFailure = EmitEventFailureHandling.RaiseCallback |
EmitEventFailureHandling.ThrowException,
FailureCallback = e =>
Console.WriteLine(
"An error occured in Serilog ElasticSearch sink: " +
$"{e.Exception.Message} | {e.Exception.InnerException?.Message}")
});
});
Log.Logger = loggerConfig.CreateLogger();
当然,您还需要正确设置OpenSearch,以便它可以自动将策略自动到您的索引等。
我不能比@larsks提供的出色答案更好,但是请让我尝试给您一些想法。
正如@larsks还指出的那样,任何Shell环境变量都将优先于您的Docker-Compose .env
文件中定义的。
当大约“ nofollow noreferrer”>环境变量, ,强调我的:
您可以使用
.env
文件设置环境变量的默认值
在项目目录中自动撰写(父文件夹)
您的撰写文件)。 在外壳环境中设置的值覆盖了这些
设置在.env
文件。中
这意味着,例如提供这样的外壳变量:
DB_USER= tommyboy docker-compose up
将一定会覆盖您在 .env
文件中可以定义的任何变量。
解决该问题的一种可能解决方案是尝试直接使用 .env
文件,而不是环境变量。
在搜索有关您问题的信息时,我遇到了这篇很棒的文章。
除其他事项外,除了解释您的问题外,它还在帖子末尾提到了一种注释,基于使用 django-environ
package 。
我不知道库,但是看来它提供了一种直接从配置文件读取配置的应用程序的替代方法:
import environ
import os
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# Set the project base directory
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Take environment variables from .env file
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
# False if not in os.environ because of casting above
DEBUG = env('DEBUG')
# Raises Django's ImproperlyConfigured
# exception if SECRET_KEY not in os.environ
SECRET_KEY = env('SECRET_KEY')
# Parse database connection url strings
# like psql://user:[email protected]:8458/db
DATABASES = {
# read os.environ['DATABASE_URL'] and raises
# ImproperlyConfigured exception if not found
#
# The db() method is an alias for db_url().
'default': env.db(),
# read os.environ['SQLITE_URL']
'extra': env.db_url(
'SQLITE_URL',
default='sqlite:////tmp/my-tmp-sqlite.db'
)
}
#...
如果需要,似乎您可以
可能 python-dotenv 允许您遵循类似的方法。
当然,值得一提的是,如果您决定使用此方法,则需要使 .env
文件添加到您的Docker-Compose Web服务和关联的容器,也许是安装和其他卷或复制 .env
文件到 Web
目录您已经将其安装为卷。
您仍然需要应对PostgreSQL容器配置,但是以某种方式可以帮助您实现评论中指出的目标,因为您可以使用相同的 .env
file(当然是重复的一)。
根据您的评论,另一个可能的解决方案可能是使用Docker Secrets。
例如,以与秘密在kubernetes的工作相似的方式,如:
在Docker swarm服务方面,一个秘密是一大堆数据,例如
作为密码,SSH私钥,SSL证书或其他作品
不应通过网络传输或存储的数据
在Dockerfile或应用程序的源代码中未加密。
您可以使用Docker Secret来集中管理此数据,并且
将其安全地传输到需要访问的那些容器
它。秘密在公交期间和在Docker中休息进行了加密
群。给定的秘密只能用于那些服务
已被授予明确访问它,并且只有当
服务任务正在运行。
简而言之,它为跨Docker Swarm服务存储敏感数据提供了一种方便的方法。
重要的是要了解,只有在使用 docker swarm swarm模式。
Docker Swarm是Docker提供的一项编排服务,与Kubernetes再次相似,当然还有差异。
假设您正在以Swarm模式运行Docker,则可以基于官方docker-compose docker秘密示例示例:
version: '3'
services:
postgres:
image: postgres:10.5
ports:
- 5105:5432
environment:
POSTGRES_DB: directory_data
POSTGRES_USER: /run/secrets/db_user
POSTGRES_PASSWORD: password
secrets:
- db_user
web:
restart: always
build: ./web
ports: # to access the container from outside
- "8000:8000"
environment:
DEBUG: 'true'
SERVICE_CREDS_JSON_FILE: '/my-app/credentials.json'
DB_SERVICE: host.docker.internal
DB_NAME: directory_data
DB_USER_FILE: /run/secrets/db_user
DB_PASS: password
DB_PORT: 5432
command: /usr/local/bin/gunicorn directory.wsgi:application --reload -w 2 -b :8000
volumes:
- ./web/:/app
depends_on:
- postgres
secrets:
- db_user
secrets:
db_user:
external: true
请注意以下内容。
我们正在定义一个秘密 db_user
secrets 部分。
这个秘密可以是基于文件或计算例如,从中的标准来看:
echo "tommyboy" | docker secret create db_user -
秘密应暴露于需要的每个容器。
对于Postgres的情况,如,您可以使用Docker Secrets定义 Postgres_initdb_args
的值 postgres_password
, Postgres_user
和 Postgres_db
:秘密变量的名称与带有后缀 _file的普通范围相同
。
在我们的用例中,我们定义了:
POSTGRES_USER_FILE: /run/secrets/db_user
在Django容器的情况下,此功能不受欢迎,但是由于您可以编辑 settings.py
,因为您需要,例如,在此简单但很棒的文章您可以使用助手功能在 settings.py
文件中读取所需值,例如:
import os
def get_secret(key, default):
value = os.getenv(key, default)
if os.path.isfile(value):
with open(value) as f:
return f.read()
return value
DB_USER = get_secret("DB_USER_FILE", "")
# Use the value to configure your database connection parameters
这可能更有意义地存储数据库密码,但这也可能是数据库用户的有效解决方案。
请考虑评论也是如此出色的文章。
基于这个问题似乎是由Django容器中的环境变量变化引起的,您可以尝试的最后一件事就是以下内容。
您 settings.py
文件的唯一要求是用配置声明不同的全局变量。但这并不是什么可以看待它们的说法:实际上,我在答案中揭示了不同的方法,毕竟是Python,您可以使用该语言来满足您的需求。
此外,重要的是要了解,除非在您的dockerfile中更改任何变量,否则当Postgres和Django容器都是创建时,将会收到完全相同的 .env
。具有完全相同的配置的文件。
考虑到这两件事,您可以尝试在您的 settings-py
文件中创建Django容器本地副本,并在重新启动之间或在任何原因之间使用它导致变量更改。
在您的 settings.py
(请为代码的简单性来原谅我,我希望您能得到这个想法):
import os
import ast
env_vars = ['DB_NAME', 'DB_USER', 'DB_PASS', 'DB_SERVICE', 'DB_PORT']
if not os.path.exists('/tmp/.env'):
with open('/tmp/.env', 'w') as f:
for env_var in env_vars:
f.write(env_var)
f.write('=')
f.write(os.environ[env_var])
f.write('\n')
with open('/tmp/.env') as f:
cached_env_vars = f.read()
cached_env_vars_dict = ast.literal_eval(cached_env_vars)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': cached_env_vars_dict['DB_NAME'],
'USER': cached_env_vars_dict['DB_USER'],
'PASSWORD': cached_env_vars_dict['DB_PASS'],
'HOST': cached_env_vars_dict['DB_SERVICE'],
'PORT': cached_env_vars_dict['DB_PORT']
}
#...
}
我认为上述任何批准都更好,但是当然可以确保环境变量一致性累积的环境和容器重新启动。
我知道您想按日期获得订单详细信息
orders.GroupBy(x => x.date.Date)
.Select(x => new { date = x.Key, list = x.ToList().Sum(y => y.OrderDetails.Sum(od => CommonUtils.ComputeQuantity(od))))})
在中间件中的数据库中检查电子邮件已经存在以下流程
public class InputModelValidator : AbstractValidator<InputModel>
{
private EditContext _editContext;
public InputModelValidator(EditContext editContext)
{
_editContext=editContext;
RuleFor(e => e.FirstName).NotEmpty().WithMessage("First name is required.");
RuleFor(e => e.LastName).NotEmpty().WithMessage("Last name is required.");
RuleFor(e => e.Email).NotEmpty().WithMessage("Email is required.");
RuleFor(e => e.Email).EmailAddress().WithMessage("Email is not valid.").Must(IsEmailexist).WithMessage("{PropertyName} Is Already Exist.");;
}
private bool IsEmailexist(string Email)
{
return _editContext.userInfo.where(em=>em.EmailId==Email).FirstOrDefault()!=null?true:false;
}
}
清除应用程序缓存后,它对我有用
php artisan optimize:clear
如果我处于这种情况下,我会修改我的设计,以使X落在A和B之外。这是因为它会更有效。因为每次切换片段时,可以说从A到B,A Enters 暂停
状态>状态和B ENTER
恢复
状态。状态的变化将需要组件来对其小部件采取行动,这将消耗处理能力。如果x在外面,则不需要处理,因为它没有重新渲染。如果您仍然想以这种方式实现事物,请制作 Data
持久,而不是整个 fragment
。当在屏幕上呈现片段时,还必须将其呈现。没有其他选择。您不能仅仅在屏幕上渲染一个块,但希望在父母渲染之前已经在屏幕上渲染了一些孩子。这就是为什么您会看到 onCreate
传递 bundle
param的原因。该参数包含所有需要保留的数据,这就是为什么事物可以呈现相同的原因。将数据与 Architecture 分开是一个好主意。希望这会有所帮助。
那是正确的语法。您正在使用哪个版本的SinglestoredB?
singlestore [test]> create table y (col2 datetime default now());
Query OK, 0 rows affected (1.691 sec)
编辑:这需要一个我相信SinglestoredB的7.0版。较旧的版本仅支持时间戳列上的默认值(),而不是DateTime。
对于任何寻找真正简单的ES6解决方案以复制,粘贴和采用的人:
const dateToString = d => `${d.getFullYear()}-${('00' + (d.getMonth() + 1)).slice(-2)}-${('00' + d.getDate()).slice(-2)}`
// how to use:
const myDate = new Date(Date.parse('04 Dec 1995 00:12:00 GMT'))
console.log(dateToString(myDate)) // 1995-12-04
感谢@Granier发布解决方案。它帮助我解决了同一问题。这是下一个解决方案略有不同的解决方案。
- 运行Granier的解决方案,直到您进行 sudo gitlab-ctl重新启动
您的gitlab服务器。 - SSH进入您的Gitlab-Runner系统,并根据以下两个命令基于
<
openssl s_client -showcerts -connect gitlab.example.com:443
-servername gitlab.example.com&lt; /dev/null 2&gt;/dev/null | OpenSSL X509 -OUTFORM PEM&GT; /etc/gitlab-runner/certs/gitlab.example.com.crt
sudo gitlab-runner寄存器-tls-ca-file =/etc/gitlab-runner/certs/gitlab.example.com.crt
在1中,在gitlab服务器上创建了一个新证书。在2中,您使用第一个命令将该证书下载到指定的DIR中,然后在第二个命令中使用它来注册您的跑步者。
请注意,MyGitlab-site.com和gitlab.example.com需要更改为您的URL的方式。
NX具有自己的样式加载程序,它是您合并的配置的一部分。
要解决此问题,您必须从NX Config删除该加载程序。我通过循环浏览所有 module.rules
并忽略我不想要的任何一个。因此,要解决您的问题,您将这样做:
module.exports = (config, context) => {
const conf = merge(config, {
module: {
rules: [
{
test: /\.sass$/i,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: {
localIdentName: '[local]__[hash:base64:5]'
}
}
},
{
loader: 'sass-loader',
options: {
implementation: sass
}
}
]
}
]
}
});
// Remove unwanted NX rules
const mods = [];
conf.module.rules.forEach((rule) => {
if (rule.test != '/\\.css$|\\.scss$|\\.sass$|\\.less$|\\.styl$/') {
mods.push(rule);
}
});
conf.module.rules = mods;
return conf;
};
这花了我很长时间来弄清楚。根据您的NX版本,您的CSS规则可能有所不同。只需 console.log(rule.test)
检查您要忽略的规则是什么。
在“详细信息”视图中,使用@obseverObject var项目:item
,
并且在主视图中需要 @fetchrequest
。我建议在XCode中创建一个新项目,然后检查核心数据框以学习结构。
关注点的分离。您可以在 onModeLcreating
的情况下流利地配置每个实体。也就是说,在您的应用程序增长之前,您发现 onModeLcreating
突然包含一千行代码,事物开始出现不顺序。然后是时候开始将事情分开以保持理智了。
ientityTypeconfiguration
接口提供了一种无需自己实施逻辑的方法。每个实体的配置可以分为自己的独立单元,如果您在 onModeLcreating
中调用 applyconfigurations fromAssembly
,则可以自动应用它们。
这与启动
类相似,从.NET 6之前,它处理了依赖项注入和请求管道/中间件的服务配置。这一切都是在申请启动时完成的,但是没有理由在同一代码单元中必须发生。
现在,.NET 6的入门模板将所有这些模板放在 program.cs
使用顶级语句中,这对于小应用程序很好,但是最终您将需要类似于>的东西启动
类,以防止 program.cs
变得肿。
如果您愿意,可以通过公式进行。
If you wish you can do it by formula.
在PowerQuery表中如何计数行,仅包含文本值