小编bar*_*azs的帖子

Angular 模块导入的动态配置

我们的 Angular 12 应用程序有一个模块,该模块导入我们想要根据配置文件配置的依赖项,该配置文件在运行时可用,而在编译时不可用。

有问题的软件包是ng-intercom,尽管我想其他软件包稍后也会出现同样的问题。

动态配置背后的动机是我们的应用程序在 4 个不同的环境中运行,我们不想为每个环境创建单独的构建,因为它们之间的唯一区别是包含后端 URL 和一些应用程序 ID 的配置文件(例如对讲机、Facebook 应用 ID 等)

这就是目前所讨论的导入方式:

imports: [
  ...
  IntercomModule.forRoot({
    appId: env.intercomID,
    updateOnRouterChange: true,
  }),
  ...
Run Code Online (Sandbox Code Playgroud)

问题是appID 应该是可配置的,env 变量应该动态加载。目前,它是导入并编译到代码中的 JSON,但这意味着我们无法在不同环境中更改它,而不为每个环境重新构建代码:

import env from '../../assets/environment.json';
Run Code Online (Sandbox Code Playgroud)

然而,我们有一个APP_INITIALIZER,它不会阻止模块在解析之前被导入:

{
  provide: APP_INITIALIZER,
  useFactory: AppService.load,
  deps: [AppService],
  multi: true,
},
Run Code Online (Sandbox Code Playgroud)

...以及相关的配置加载器:

static load(): Promise<void> {
  return import('../../assets/environment.json').then((configuration) => {
    AppService.configSettings = configuration;
  });
}
Run Code Online (Sandbox Code Playgroud)

我们可以使用此配置,而我们的组件和服务不会出现问题。

我们设法在angularx-social-login的配置中实现了我们想要的结果:

providers: [
  ...
  {
    provide: 'SocialAuthServiceConfig', …
Run Code Online (Sandbox Code Playgroud)

typescript intercom angular

12
推荐指数
1
解决办法
4147
查看次数

键盘覆盖移动设备中 Angular Material 对话框组件中表单中的焦点输入字段

我在 Angular Material Dialog 组件中有一个表单。我的问题是,当输入字段获得焦点时,移动设备中的键盘打开会覆盖用户想要写入的输入字段。

当键盘打开 HTML 的主体时,会获得适当的边距底部,但是,这不适用于对话框的包装器 (cdk-overlay-container),因为它的位置是固定的。

我的想法: 1,从固定更改为绝对可以解决我的问题,但是由于我的主容器是一个巨大的滚动容器,只有当我以编程方式滚动到顶部时才有效,我真的不喜欢。

2,如果我可以检测到键盘被打开,我可以向父容器添加一个类,但是,我不知道如何在不将事件附加到我们拥有的每个输入字段的情况下执行此操作,这感觉很丑陋且不必要地沉重(因为我必须发送事件来通知其他组件)。我还需要知道键盘的大小,我不确定这是否可行。

Android 和 iOS 上都会出现此问题。

css android-softkeyboard angular-material angular

6
推荐指数
0
解决办法
1026
查看次数

使用Lambda时聚合失败

我正在尝试将应用程序的各个部分从熊猫移植到dask,并且在dask DataFrame的groupby中使用lamdba函数时遇到障碍。

import dask.dataframe as dd

dask_df = dd.from_pandas(pandasDataFrame, npartitions=2)
dask_df = dask_df.groupby(
                        ['one', 'two', 'three', 'four'],
                        sort=False
                    ).agg({'AGE' : lambda x: x * x })
Run Code Online (Sandbox Code Playgroud)

此代码失败,并出现以下错误:

ValueError: unknown aggregate lambda

我的lambda函数在我的应用程序中比在这里更复杂,但是lambda的内容无关紧要,错误始终相同。文档中有一个非常相似的示例,因此这应该可以正常工作,但我不确定缺少什么。

相同的groupby在熊猫中也有效,但我需要提高其性能。

我正在使用dask 0.12.0和python 3.5。

python dask

5
推荐指数
1
解决办法
641
查看次数

使用 Docker exec 运行 Java 命令失败,并显示“没有此类文件或目录”

我在 Scala 项目中使用Docker Java 客户端以编程方式创建映像并启动带有卷的容器,然后当这一切完成后,还会在附加卷之一中可用的 jar 文件中执行 Java 类。

  // Constructing the container and getting it's ID
  val containerID = dockerClient
    .createContainerCmd(imageID)
    .withName(s"${namePrefix}_${RandomStringUtils.randomAlphanumeric(12)}")
    .withTty(true)
    .withVolumes(volume)
    .withBinds(new Bind("/home/core/docker-dependencies", new Volume("/opt/dependencies")))
    .exec()
    .getId
  // Starting the container
  dockerClient
    .startContainerCmd(containerID)
    .exec()
Run Code Online (Sandbox Code Playgroud)

我试图运行的命令:

val command = s"""bash -c "java -cp /opt/dependencies/Platforms-assembly-0.2.4.jar com.org.test.platforms.common.Endpoint param1 param2}""""
Run Code Online (Sandbox Code Playgroud)

命令中引用的 jar 文件在创建容器时绑定的卷中可用。

我尝试运行不同版本的命令,例如简单的 Java 命令(不带bash -c),我还尝试了不同的位置,例如本地 PC 上的文件位置或运行 Docker 的计算机上的路径,遗憾的是结果相同。

  // Preparing the command for execution
  val executionID = dockerClient
    .execCreateCmd(containerID)
    .withCmd(command)
    .exec()
    .getId
  // …
Run Code Online (Sandbox Code Playgroud)

docker docker-java

5
推荐指数
1
解决办法
2623
查看次数

将图像设置为 Three.js 场景背景使其变得模糊

我想将一张图像设置为场景的背景。我的问题是,当我按照以下方式执行操作时,图像变得模糊:

textureLoader.load("images/background/space.png", function(t) {
  scene.background = t;
});
Run Code Online (Sandbox Code Playgroud)

问题不是图像本身,如果我将其设置为画布的背景或只是将其作为网格添加到场景中,那很好,但是在我的用例中这不是可接受的解决方案,因为我需要使用 Lensflare 和发光效果,但只有设置了场景背景时混合才有效,否则会发生这种情况:

在此输入图像描述

将图像作为网格添加到场景中也不起作用,因为移动鼠标时相机会旋转,并且我不希望图像移动,它应该充当背景。

模糊和不模糊之间的区别确实很明显。下面是模糊和不模糊时图像的一部分。

模糊:

在此输入图像描述

脆皮:

在此输入图像描述

我尝试多次设置此背景(如场景背景、相机背景、CSS 的画布背景),希望其中一个位于场景背景之上,但事实并非如此。我还查看了 scene.background 的属性,但没有什么引起我的注意(尝试将各向异性设置为高值)。

有没有办法阻止场景背景变得模糊?

javascript css three.js

4
推荐指数
1
解决办法
4050
查看次数

无需身份验证即可创建存储桶

我们将Couchbase从4.6社区版更新到5.0.0-2873企业版用于测试目的,我们使用java-client的软件在尝试打开存储桶时开始抛出InvalidPasswordException.

正如我所发现的,每个新创建的存储桶都有authType ='sasl'和随机生成的saslPassword.我尝试使用CLI而不是GUI创建存储桶:

couchbase-cli bucket-create -c localhost:8091 -u Administrator -p password --bucket=general --bucket-ramsize=1300 --bucket-type=couchbase --bucket-password=
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR: unrecognized arguments: --bucket-password=password
Run Code Online (Sandbox Code Playgroud)

我也尝试了具有相同结果的bucket-edit功能.

根据文档,论证应该是有效的.

我也尝试使用REST API来更改存储桶身份验证(以及类似的密码),但即使这没有抛出任何错误,authType和密码保持不变.

curl -X POST -u Administrator:password -d 'authType=none' http://<host>:8091/pools/default/buckets/general
Run Code Online (Sandbox Code Playgroud)

再次,根据文档,这应该工作.

如果我查询sasl密码的存储桶信息并为openBucket函数提供,那么连接有效,但我们真的不想在我们的系统中使用此功能.

那么,在我们的5.0EE Couchbase设置中如何删除存储桶认证的任何其他想法?

authentication couchbase

3
推荐指数
1
解决办法
1320
查看次数