我想使用Vagrant为我的团队提供一个共同的开发环境.主机完全不同:
在VM内部我们想要运行Linux.
到目前为止,一切都很好.
现在我们的想法是每个开发人员都应该能够使用他们选择的IDE,因此我们引入了一个同步文件夹,该文件夹共享主机和VM之间的源代码.这基本上也适用......除了符号链接.
在我们的源代码中,我们实际上有一些符号链接,这在VM内部的Linux中不是问题,但在Windows上作为主机,这会导致问题.我们唯一不能做的就是摆脱符号链接,所以我们需要另一种方法来解决这个问题.
到目前为止,我们尝试了许多选择:
symlink has no referent
(每个符号链接有一个错误).我无法想象我们是这个星球上唯一或第一个遇到共享文件夹中的多平台主机和符号链接问题的人.
你如何解决这个问题,以便我们可以保持符号链接,但仍然使用不同的主机操作系统?
我正在使用docopt来解析命令行参数.这是有效的,它会产生一个地图,例如
map[<host>:www.google.de <port>:80 --help:false --version:false]
Run Code Online (Sandbox Code Playgroud)
现在我想将值host
和port
值连接到一个字符串,并在两个值之间加上冒号.基本上,如:
host := arguments["<host>"] + ":" + arguments["<port>"]
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,因为我收到错误消息:
无效操作:arguments [""] +":"(不匹配的类型interface {}和string)
所以显然我需要将我从地图中得到的值(只是interface{}
,所以它可以是任何东西)转换为字符串.现在我的问题是,我该怎么做?
假设执行a Vagrantfile
需要安装特定的Vagrant插件.所以,基本上你需要做的是
$ vagrant plugin install foobar-plugin
$ vagrant up
Run Code Online (Sandbox Code Playgroud)
如果跳过第一步,则vagrant up
失败.
Vagrant中是否有一个选项可以让它自动安装插件?换句话说:Vagrantfile
在创建和启动计算机之前,是否可以在哪个插件中指定自动安装?
TypeScript 3.7 现在支持可选的链操作符。因此,您可以编写如下代码:
const value = a?.b?.c;
Run Code Online (Sandbox Code Playgroud)
即,您可以使用此运算符访问对象的属性,其中对象本身可能是null
或undefined
。现在我想做的基本相同,但属性名称是动态的:
const value = a?[b]?.c;
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个语法错误:
错误 TS1005: ':' 预期。
我在这里做错了什么?这甚至可能吗?
PS:提案似乎暗示这是不可能的(但也许我的语法示例错了)。
关于是否将.tfstate
文件提交到Git 的问题,我有点疑惑.该Terraform文档状态:
Terraform
terraform.tfstate
默认情况下也会将一些状态放入文件中.这个状态文件非常重要; 它将各种资源元数据映射到实际资源ID,以便Terraform知道它正在管理什么.必须保存此文件并将其分发给可能运行Terraform的任何人.我们建议简单地将其置于版本控制中,因为它通常不会太大.
另一方面,现在,使用Terraform时对最佳实践的接受和赞成回答如下:
Terraform配置可用于在不同的基础架构上配置多个盒子,每个盒子可以具有不同的状态.由于它也可以由多个人运行,因此该状态应该位于集中位置(如S3),而不是 git.
(原作者的重点,而不是我)
谁是对的,如果是的话,为什么?
在 TypeScript 中,某些类型是使用extends keyof
或定义的in keyof
。我试图理解它们的意思,但到目前为止我没有成功。
我得到的是,keyof
单独返回一个联合类型,该类型将所有名称作为可能的值存在于您在keyof
.
type T = keyof string;
Run Code Online (Sandbox Code Playgroud)
T
因此等价于startsWith | endsWith | trim | substring | ...
。
这样对吗?
现在,如果我去想想什么extends keyof
和in keyof
意味着,我的直觉以下称:
extends keyof
是派生自 的任何类型T
,即它具有所有这些可能的值,但可能更多。in keyof
是从 中获取值的任何类型T
,但不一定是全部(有可能,但可能更少)。所以,从这个 POVextends keyof
将描述一个>=
关系,in keyof
将描述一个<=
关系。这样对吗?如果不是,那什么是正确的?
如果您有以下情况,Docker文档建议使用该ONBUILD
指令:
例如,如果您的映像是可重用的python应用程序构建器,则需要将应用程序源代码添加到特定目录中,并且可能需要在此之后调用构建脚本.您现在不能只调用ADD和RUN,因为您还无法访问应用程序源代码,并且每个应用程序构建都会有所不同.您可以简单地为应用程序开发人员提供一个样板Dockerfile来复制粘贴到他们的应用程序中,但这样做效率低,容易出错且难以更新,因为它与特定于应用程序的代码混合在一起.
基本上,这一切听起来都不错,但这确实意味着每次改变某些东西时我都必须重新创建app容器,即使它只是一个错字.
这似乎不是非常有效,例如在创建用于在浏览器中更改内容,保存和点击刷新的Web应用程序时.
你怎么处理这个?
我正在使用VirtualBox在Vagrant内部运行基于Ubuntu 12.04的盒子.到目前为止,一切都很好 - 除了一件事:
我们假设VM正在运行.然后,主机进入待机模式.在再次唤醒之后,VM仍在运行,但其内部时钟继续在主机发生故障时停止的位置.所以这基本上意味着:让主机进入睡眠状态15分钟,再次唤醒,然后VM的内部时钟延迟15分钟.
我该如何解决这个问题(由于明显的原因,手动设置时间不是一个选项;-))?有没有办法在主机系统更改其状态时在Vagrant VM内运行脚本?
我在文档中读到,默认情况下,VirtualBox Guest Additions每隔10秒与主机同步一次.显然这没有发生,但我找不到它被禁用的任何地方.那么任何想法?
PS:安装Guest Additions并匹配正在使用的VirtualBox版本.
我有一个包含http(s)服务器的Node.js应用程序.
在特定情况下,我需要以编程方式关闭此服务器.我目前正在做的是调用它的close()
函数,但这没有用,因为它等待任何保持活动的连接首先完成.
因此,基本上,这会关闭服务器,但仅在最短120秒的等待时间之后.但我希望服务器立即关闭 - 即使这意味着与当前处理的请求分手.
我不能做的是一个简单的
process.exit();
Run Code Online (Sandbox Code Playgroud)
因为服务器只是应用程序的一部分,应用程序的其余部分应该保持运行.我正在寻找的是概念上的东西,例如类似的server.destroy();
东西.
我怎么能实现这个目标?
PS:通常需要连接的保持活动超时,因此减少此时间不是可行的选择.
您经常在网上看到使用闭包是JavaScript中的大量内存泄漏源.大多数时候,这些文章都涉及混合脚本代码和DOM事件,其中脚本指向DOM,反之亦然.
我知道闭包可能是一个问题.
但是Node.js怎么样?在这里,我们自然没有DOM - 所以没有机会像浏览器一样有内存泄漏副作用.
关闭可能还有哪些其他问题?任何人都可以详细说明或指点我这方面的好教程吗?
请注意,此问题明确针对Node.js,而不是浏览器.
vagrant ×3
node.js ×2
typescript ×2
clock ×1
closures ×1
connection ×1
devops ×1
docker ×1
go ×1
http ×1
javascript ×1
keep-alive ×1
keyof ×1
memory-leaks ×1
rsync ×1
sync ×1
terraform ×1
vagrantfile ×1
virtualbox ×1