我觉得我在这里错过了一些大事.我已经阅读了typescript 2.0中新的strictNullCheck优点的所有细节.我很乐意使用它但是当我在我的项目中打开它时,它会发现我正在使用的支持库及其相关类型定义的问题.
我可以更改我的代码以具有声音类型定义,但我没有一种简单的方法来更新我使用的所有其他库.这是否有效意味着我不能使用strictNullCheck直到/除非我使用的库更新为严格null安全?
我正在移植一个应用程序以在 k8s 中运行。我遇到了 ingress 问题。我正在尝试找到一种方法来限制在任何给定时间向部署管理的每个后端 Pod 发出的 REST API 请求数量。
请参阅下图所示的架构。
Ingress 由 nginx-ingress 管理。对于给定的一组 URL 路径,入口将请求转发到以 REST API 后端进程部署为目标的服务。部署还由 HPA 根据 CPU 负载进行管理。
我想要做的是找到一种方法对入口请求进行排队,这样运行我们的 API 后端进程的任何 pod 中的请求永远不会超过 X 个。(例如,每个 Pod 一次只允许 50 个请求)
有谁知道如何像这样设置请求限制?
作为一个额外的问题,我需要做的下一件事是让 HPA 监视请求排队并自动扩展/缩小部署,以将 Pod 数量与当前正在处理/排队的请求数量相匹配。例如,如果每个 Pod 可以同时处理 100 个正在运行的请求,而我们当前要处理的负载级别为 1000 个请求,则自动缩放到 10 个 Pod。
如果有用的话,我还计划为这个集群安装 linkerd。也许它有一种可以提供帮助的能力。
我正在关注应用引擎网站上有关使用GAE进行单元测试编码的建议.我已将PseudoRandomHRConsistencyPolicy概率设置为0%,以强制代码考虑数据尚未一致的情况.问题是,在我的测试套件中,我想做一些数据设置(创建数据并向数据存储添加数据),并且需要一种方法来强制数据存储区在执行测试代码之前将所有数据刷新为一致状态.(即确保数据存储区将返回我下次进行查询时写入的所有全局实体).
有没有办法做到这一点,如果没有,其他人在使用一致性模型时如何在他们的测试套件中设置数据?
python google-app-engine unit-testing google-cloud-datastore
我们有一个非标准的subversion存储库,我们想要转换为Git.问题是我真的不知道从哪里开始,以确保我们保持完整的历史,但最终不会完全混乱.
我们的存储库拥有我们公司产品套件的最近6年历史,并经历了多次重组.在所有情况下,我们都有一个核心平台代码库,然后是几个项目/插件,它们以不同的方式组合在核心平台之上.
前几年的结构如下:
-- plugin1
- trunk
- branches
- tags
-- pluginX
- trunk
- branches
- tags
-- trunk (core platform)
- <various sub dirs)
-- branches (various feature branches of the entire repository)
- refactoring1
- refactoringX
-- tags (various tags of customer releases of full respository)
- customerX_1.x
-- vendor (vendor drops and tracking of 3rd party source deps)
- 3rd_party_code_A
- 3rd_party_code_X
Run Code Online (Sandbox Code Playgroud)
随着时间的推移,我们添加了几个目录,包括:
-- releases (replaced tags; branches for released stable versions of repos)
-- …Run Code Online (Sandbox Code Playgroud) 我在基于 Angular 2.4 的应用程序中进行了相当广泛的测试。我们尚未能够测试的一个领域是带有输入的表单。我最终将其归结为一个小测试用例。我有一个显示问题的 plnkr:https://plnkr.co/edit/NyeAoh2Uo5rJT9if6j64 (请参阅 form_bug.spec.ts)
注意:我根据测试指南中的代码的工作方式来构建此示例。
问题是,当我们将输入与 ngModel 连接起来,然后在测试套件中更新输入时,仅当输入不在表单内时,数据才会流入组件。如果我们将其添加到表单中,那么数据将无法正确流动。
代码的核心部分是:
@Component({
selector: 'with-form-test',
template: `
<div>
<div class="show_val">{{testVal}}</div>
<form>
<input name="test_val" id="val_id" [(ngModel)]="testVal" />
</form>
</div>
`,
})
class WithFormTestComp {
testVal: string = 'start';
}
Run Code Online (Sandbox Code Playgroud)
和测试。其中的两个 Expect() 检查失败。
describe('WithFormTest', () => {
let fixture: ComponentFixture<WithFormTestComp>;
let comp: WithFormTestComp;
let comp_de: DebugElement;
function getInput(): DebugElement {
return comp_de.query(By.css('input'));
}
function getShowVal(): DebugElement {
return comp_de.query(By.css('.show_val'));
}
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
FormsModule,
],
declarations: [
WithFormTestComp, …Run Code Online (Sandbox Code Playgroud) 我一直在尝试调试 K8S 部署中的一个非常奇怪的延迟。我已经追踪到下面的简单复制。看起来是,如果我在启动探测器上设置了一个 initialDelaySeconds 或将其保留为 0 并且有一次失败,那么探测器在一段时间内不会再次运行,并以至少 1-1.5 分钟的延迟进入就绪状态:真状态。
我在本地使用 Ubutunu 18.04 和 microk8s v1.19.3 运行以下版本:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: microbot
name: microbot
spec:
replicas: 1
selector:
matchLabels:
app: microbot
strategy: {}
template:
metadata:
labels:
app: microbot
spec:
containers:
- image: cdkbot/microbot-amd64
name: microbot
command: ["/bin/sh"]
args: ["-c", "sleep 3; /start_nginx.sh"]
#args: ["-c", "/start_nginx.sh"]
ports:
- containerPort: 80
startupProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 0 # 5 also has same issue
periodSeconds: …Run Code Online (Sandbox Code Playgroud) 我似乎缺少一些 Firebase 分析事件。我认为问题可能是 firebase 正在缓存事件并且每小时只发送一次。
就我而言,我有一个用户加载的 Web 应用程序,他们可能只停留几分钟,然后就决定不想使用该应用程序。我仍然想捕捉他们的事件,特别是他们认为该应用程序不适合他们并正在传递它的事实。但 Firebase Analytics 似乎没有发送这些事件。根据文档,我的最佳猜测是缓存没有被清空,因为超时尚未过去,并且 Firebase Analytics 不知道它们正在关闭框架并且不会返回。
如果重要的话,我发送事件的方式是这样的。(从技术上讲,我正在使用 Angularfire 的分析包装器,但据我所知,只是像这样直接调用)
const analytics = getAnalytics();
logEvent(analytics, 'decline_using_app', {
details: '...',
});
Run Code Online (Sandbox Code Playgroud)
我已经看到基本的谷歌分析 gtags 库在发送事件时支持事件回调。
但我似乎无法找到一种使用 Firebase 分析来强制立即发送事件的方法,或者更好的是,刷新任何待处理的事件缓存,以便我可以确保所有事件都已被捕获。
有谁知道如何做到这一点,或者我的分析对于我所看到的是否合理?
google-analytics-api firebase google-analytics-firebase firebase-analytics
我有一些代码可以动态地添加/删除我的一个页面组件.这似乎工作正常,我的方法基于Rob Wormald的令人敬畏的Ng2高级谈话.
以标准方式执行操作如下所示:
@Component({
template: `
<parent-component>
<template #dyn_target></template>
</parent-component>
`
})
export class MyComp {
@ViewChild('dyn_target', {read: ViewContainerRef}) myTarget;
constructor(protected cfr: ComponentFactoryResolver) {}
ngOnInit(): void {
const factory = this.cfr.resolveComponentFactory(DynComp);
const compRef = this.myTarget.createComponent(factory);
}
}
Run Code Online (Sandbox Code Playgroud)
一切都快乐而有效.但现在我的问题是,如果组件的目标位置是*ngIf内部的元素,我该如何做这样的事情?我有代码知道*ngIf何时应该显示新元素,但我不知道如何在*ngIf内查找目标的ViewContainerRef.
@Component({
template: `
<parent-component>
<other-comp></other-comp>
<div *ngIf="showMe"
<nested-comp>
<template #dyn_target></template>
</nested-comp>
</div>
</parent-component>
`
})
export class MyComp {
@ViewChild('dyn_target', {read: ViewContainerRef}) myTarget;
showMe: boolean = false;
constructor(protected cfr: ComponentFactoryResolver) {}
addDynComponent(): void {
// Q: how do I do …Run Code Online (Sandbox Code Playgroud) 我们一直在尝试将虚拟机用于构建服务器.我们的构建服务器都在运行WinXP32,我们在Ubuntu 9.10上运行的VMWare Server 2.0上托管它们.我们构建了C,C++,python包和其他各种部署任务(安装程序,7z文件,存档等)的组合.使用VMWare托管构建服务器的管理非常好.我们可以移动它们,在一个大型8核盒子上共享系统资源,通过Web界面远程访问系统,并且基本上可以更好地管理事物.
但问题是,与使用物理机器相比,性能似乎从糟糕到可怕,取决于它是什么日子.事实证明这非常令人沮丧.有时主机的系统负载将超过20,有时则低于1.它似乎不是基于系统上实际完成的工作量.我怀疑系统中存在瓶颈,但我似乎无法弄清楚它是什么.(最近的嫌疑人是I/O,但是我们有一个专用的1TB 7200RPM SATA 2驱动器,32MB的缓存除了虚拟机之外什么都不做.看起来就像1-2机器一样.所有其他规格似乎也足够了.8GB RAM ,每个VM 2GB,8个内核,每个vm 1个).
因此,在耗尽了我能想到的一切之后,我想转向Stack Overflow社区.
任何帮助将不胜感激.
我是git的新手,我遇到了一个大问题.即如果我做错了,如何将存储库恢复到良好状态.我已经看到如何使用'git revert'进行更改以撤消之前的更改,我已经阅读了很多关于stackoverflow和相关位置的问题,但我还没有找到一个简单的方法来简单地说"把我的本地存储库位回到它之前我做X的"其中X可能是提交,合并或其他存储库操作.
很长的故事:
今天,当我尝试按照Subgree Merging的ProGit书中的步骤设置第三方依赖项(Jasmine)的子树分支时,这一点特别困难.我按照这些步骤设置了一个本地存储库,其中包含一个跟踪远程Jasmine存储库的分支.然后我使用read-tree将其连接到我的probject中的子目录,一切都很好.不幸的是,Jasmine分支包含一个非公共URL的子模块引用,当我尝试解决这个问题时,我在跟踪远程存储库的分支上进行了更改(和提交).无论我做了什么来试图恢复这些提交/更改,我的'git push'命令都不能再工作了,因为存储库认为我对Jasmine代码进行了更改,并试图将它们推回到我正在跟踪的公共URL .
简介:在我发出由我的git newbie状态引起的命令之前,我搞砸了部分存储库并无法弄清楚如何将其恢复到原始状态.
无论如何要回滚整个存储库的一些提交/更改,还是我只需要再次克隆它并在发生这种情况时重新开始?
angular ×2
git ×2
kubernetes ×2
python ×2
automation ×1
build ×1
c++ ×1
dvcs ×1
firebase ×1
git-svn ×1
github ×1
hpa ×1
linkerd ×1
microk8s ×1
svn ×1
typescript ×1
unit-testing ×1
vmware ×1