这可能是一个愚蠢的问题,但我是使用Docker-compose的新手.到目前为止,我喜欢它...但我有一些很长的构建时间.我有一个包含多个依赖项的项目,每次进行更改时我都需要显然重建源代码.现在,我正在呼吁docker-compose build重建容器,然后是一个docker-compose up.问题是:
它正在为源代码所做的每一次更改重建整个容器(这需要很长时间 - 获取依赖项/等).这显着减慢了我的速度.
我真的觉得我应该能够在容器上运行命令来重建然后重新运行可执行文件,就像这样:
docker-compose run web go build . docker-compose run web ./app要么
docker-compose run web go build . docker-compose restart这应该有效,因为我正在使用卷在主机和容器之间共享代码.不应该需要重新获取所有依赖项.它不应该使用新建的可执行文件吗?但是,这并不反映构建的更改和端口转发似乎中断.
作为参考,这是我的Dockerfile:
FROM golang:1.8
COPY . /go/src/github.com/codeblooded/test1
WORKDIR /go/src/github.com/codeblooded/test1
RUN echo $PATH
RUN go get -d -v ./...
RUN go install -v ./...
RUN go build -o test1 .
CMD ["test1"]
EXPOSE 3470
Run Code Online (Sandbox Code Playgroud)
还有我的docker-compose.yml文件:
version: '3'
services:
postgres:
image: postgres
volumes:
- ./db/data/psql:/var/lib/postgresql/data
- ./db/schema:/db/schema
redis: …Run Code Online (Sandbox Code Playgroud) 我是Ruby的新手.我熟悉其他几种语言.我的问题是关于调用方法不按顺序.例如:
def myfunction
myfunction2
end
def myfunction2
puts "in 2"
end
Run Code Online (Sandbox Code Playgroud)
我怎么能在声明之前调用myfunction2?有几种语言可以在顶部或.h文件中声明它.红宝石如何处理它?
我是否总是需要遵循:
def myfunction2
puts "in 2"
end
def myfunction
myfunction2
end
Run Code Online (Sandbox Code Playgroud)
当我需要def initialize为一个类调用另一个方法时,主要是这会让我感到烦恼.
这是一个关于这些方法中的哪一个被认为是最Pythonic 的问题。我不是在寻找个人意见,而是在寻找什么是惯用的。我的背景不是 Python,所以这对我有帮助。
我正在开发一个可扩展的 Python 3 项目。这个想法类似于工厂模式,只是它基于函数。
本质上,用户将能够创建一个自定义函数(跨包和项目),我的工具可以找到并动态调用该函数。它还可以使用柯里化来向下传递参数(但此处不包含该代码)
我的目标是遵循良好的 Pythonic 实践。我在两种策略之间左右为难。而且,由于 Python 不是我的专长,我想知道以下做法的优缺点:
使用装饰器
registered = {}
def factoried(name):
def __inner_factory_function(fn):
registered[name] = fn
return fn
return __inner_factory_function
def get_function(name):
return registered[name]
Run Code Online (Sandbox Code Playgroud)
然后,下面的函数就自动注册了...
@factoried('foo')
def build_foo():
print('hi')
Run Code Online (Sandbox Code Playgroud)
这看起来很合理,但对于那些不熟悉装饰器的人来说确实有点神奇。
强制对抽象类进行子类化并使用 __subclasses__()
如果使用子类,则无需注册。但是,我觉得这会在可能不需要完整类时强制定义类。此外,.__subclasses__()引擎盖下的使用对消费者来说也很神奇。但是,即使是 Java 也可以用于搜索带有注释的类。
显式注册
忘记以上所有内容并强制显式注册。没有装饰器。没有子类。就像这样:
def build_foo():
# ...
factory.register('foo', build_foo)
Run Code Online (Sandbox Code Playgroud)我是C#的新手.将main()方法放在"类"中的目的是什么.不会为这个"所谓的"类创建任何对象.我不知道为什么他们将整个程序视为类和方法.另外为什么main()函数被称为方法?显然它是在课堂上,但我总是把它称为一个功能.像这样:
using System;
public class MyApp // What is the purpose of this class?
{
public static void main() // Why is this called a method & not a function when no objects use it?
{
//Statements Here
}
}
Run Code Online (Sandbox Code Playgroud) 在py.test文档中,它描述了将工厂方法声明为fixture,例如:
@pytest.fixture
def make_foo():
def __make_foo(name):
foo = Foo()
foo.name = name
return foo
return __make_foo
Run Code Online (Sandbox Code Playgroud)
与仅定义make_foo函数并使用它相比,这样做有什么好处/缺点?我不明白为什么它是固定装置。
在 Java 中,我们可以使用ScriptEngine. 这对于基于通用命名约定构建框架非常有用。在 JavaScript 中,当然有eval(). Swift 是否有某种机制来评估包含 swift 表达式的字符串?我知道这可能会被滥用;然而,它会简化我目前的发展。