小编Jos*_*eph的帖子

docker-compose --env-file 根本不起作用

我正在尝试这个:

https://docs.docker.com/compose/environment-variables/#substitute-environment-variables-in-compose-files

正如文档所述,这是我的 docker-compose.yml:

services:
  web:
   image: "${IMAGE}"
Run Code Online (Sandbox Code Playgroud)

这是我的 .env.dev 文件

IMAGE=node:12
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的命令:

docker-compose --env-file ./.env.dev up 
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

WARNING: The IMAGE variable is not set. Defaulting to a blank string.
Traceback (most recent call last):
  File "bin/docker-compose", line 3, in <module>
  File "compose/cli/main.py", line 67, in main
  File "compose/cli/main.py", line 126, in perform_command
  File "compose/cli/main.py", line 1070, in up
  File "compose/cli/main.py", line 1066, in up
  File "compose/project.py", line 615, in up
  File "compose/service.py", line 350, in ensure_image_exists
  File "compose/service.py", line …
Run Code Online (Sandbox Code Playgroud)

substitution docker docker-compose

8
推荐指数
1
解决办法
1944
查看次数

PHP 包含同一库的不同版本

如果我有相同的第三方库(或类)的不同版本,它们当然具有相同的命名空间和类名。有没有办法将它们包含在同一个项目中以避免名称冲突?

当我们有一个单独开发组件的模块化项目时,会发生此问题的另一种情况。所以我们可以有不同的模块在它们自己的文件夹中包含相同的外部库文件,但是当然当模块被加载时,我们会发生类冲突。

在本文中加载同一类的多个版本

用户建议使用此代码:

namespace old {
   include /lib/api-1.0/library.php;
}
namespace foo {
   include /lib/api-2.0/library.php;
}

$oldlibary = new old\Library();
$newlibrary = new foo\Library();
Run Code Online (Sandbox Code Playgroud)

但当然它不起作用。无论如何,类都会发生冲突,因为它们被声明为全局而不是变量。

那么..是否有另一种解决方案不手动编辑要包含的所有库名称空间?

提前致谢

php namespaces version include libraries

6
推荐指数
1
解决办法
1257
查看次数

当同时使用 Jest 和 ESM 时,如何避免混合静态和动态导入?

最近我不得不将我的项目迁移到ESM,主要是因为我使用的许多依赖项不再与CommonJS兼容。

通过这样做,我遇到了很多麻烦,但我一步步解决了。然而,我现在用Jest进行测试的方式比以前更糟糕。

这就是我之前使用spyOn图书馆的方式:

it('stringFormatMatchValidatorFactory return the correct result', async () => {
  const spiedValidate = jest.spyOn(ValidatorHelper, 'validateStringFormat');
  const testDataFunctionMatch = Validator.stringFormatMatchValidatorFactory({
    toMatch: true,
    pattern: StringFormatEnum.ALL,
  });
});
Run Code Online (Sandbox Code Playgroud)

这就是我现在必须这样做的:

import { importMockedEsm } from '@nestjs-yalc/jest/esm.helper.js';
import { DeepMocked } from '@golevelup/ts-jest';

const ValidatorHelper = (await importMockedEsm(
  '../validator.helper.js',
  import.meta,
)) as DeepMocked<typeof import('../validator.helper.js')>;

const Validator = await import('../validator.decorator.js');

// [...]


it('stringFormatMatchValidatorFactory return the correct result', async () => {
  const spiedValidate = jest.spyOn(ValidatorHelper, 'validateStringFormat'); …
Run Code Online (Sandbox Code Playgroud)

javascript mocking jestjs es6-modules

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

将 TypeORM 实体模型类与 NestJS-GraphQL 模式类型结合使用是否合适?

我正在使用NestJSTypeORM创建GraphQL API 。从经典的 User 实体开始,我创建了 和,如 Nestjs 文档所述。user.type.tsuser.entity.ts

这是内容的示例:

  • user.entity.ts
@Entity({ schema: 'mydb', name: 'userList' })
export class User {

    @Column('varchar', { name: 'guid', unique: true, length: 36 })
    guid: string;

    @Column('varchar', { name: 'firstName', length: 50 })
    firstName: string;

    @Column('varchar', { name: 'lastName', length: 100 })
    lastName: string;

    // ...
Run Code Online (Sandbox Code Playgroud)
  • user.type.ts
@ObjectType()
export class UserType {
  @Field({
    name: 'ID',
    description: 'Global Universal ID of the User',
  })
  guid: string;

  @Field()
  firstName: string; …
Run Code Online (Sandbox Code Playgroud)

dry typescript graphql typeorm nestjs

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

为什么python中的Singleton会多次调用__init__,如何避免呢?

我已经在python中实现了单例模式,但是我注意到了init,尽管返回了相同的实例,但每次我调用MyClass都会调用。

我该如何避免呢?

class Test(object):
    def __init__(self, *args, **kwargs):
        object.__init__(self, *args, **kwargs)

class Singleton(object):
  _instance = None

  def __new__(cls):
    if not isinstance(cls._instance, cls):
        cls._instance = object.__new__(cls)
    return cls._instance

class MyClass(Singleton):
    def __init__(self):
        print("should be printed only 1 time")
        self.x=Test()
        pass

a = MyClass() # prints: "should be printed only 1 time"
b = MyClass() # prints ( again ): "should be printed only 1 time"

print(a,b) # prints: 0x7ffca6ccbcf8 0x7ffca6ccbcf8
print(a.x,b.x) # prints: 0x7ffca6ccba90 0x7ffca6ccba90
Run Code Online (Sandbox Code Playgroud)

python singleton initialization

3
推荐指数
2
解决办法
1803
查看次数

Java重载的奇怪行为

我有一些java重载和动态参数的问题..

import java.lang.*;

public class Program
{
     public static void main(String []args){
        testOverloading("Test string");
        testOverloading(new Object());
        testOverloading( true ? "Must be a string" : new Object());
     }

     public static void testOverloading(String test) {
         System.out.println("it's a string");
     }

     public static void testOverloading(Object test) {
         System.out.println("it's an object");
     }

}
Run Code Online (Sandbox Code Playgroud)

运行此代码,java假设"true?"必须是一个字符串":new Object()"是一个对象而不是一个字符串..输出如下:

it's a string
it's an object
it's an object
Run Code Online (Sandbox Code Playgroud)

对于这类问题有解决方案/解释吗?

更新:

我也尝试过使用不同的方法:

变化:

testOverloading( true ? "Must be a string" : new Object());
Run Code Online (Sandbox Code Playgroud)

testOverloading( true ? "Must be a …
Run Code Online (Sandbox Code Playgroud)

java parameters overloading dynamic

2
推荐指数
1
解决办法
95
查看次数

检索 document.cookie getter 和 setter

我正在尝试覆盖 document.cookie,因为我需要控制 cookie 创建,但似乎在 document.cookie 上投射的 getOwnPropertyDescriptor 没有检索其 getter 和 setter(在 chrome 和 firefox 上尝试过)。有人可以向我解释这种行为吗?

https://jsfiddle.net/1363ktwp/7/

var obj={};

// creating a property using document.cookie descriptors
Object.defineProperty(
    obj, 
    "oldCookie",   
    Object.getOwnPropertyDescriptor(document, "cookie")
);
    
// setting cookies succesfully
document.cookie="test1=ok;path=/;expires=365;";
document.cookie="test2=ok;path=/;expires=365;";

alert(document.cookie);

Object.defineProperty(document, "cookie", {
    get: function () {
        return obj.oldCookie;
    },
    set: function (cookie) {
        /*
            ...preliminar operations
        */
        
        obj.oldCookie = cookie;
    }
});
    
// obj.oldCookie is just a string without getter/setter
// so assignments below doesn't works correctly
document.cookie="test3=ok;path=/;expires=365;";
document.cookie="test4=ok;path=/;expires=365;";

alert(document.cookie);
Run Code Online (Sandbox Code Playgroud)

javascript browser cookies

2
推荐指数
2
解决办法
2424
查看次数