小编mac*_*ost的帖子

Jasmine:为什么要定义,而不是.toBeDefined?

我刚刚学习了Jasmine库,我注意到Jasmine的内置断言数量非常有限.我也注意到,尽管数量有限,但它的两个断言似乎是多余的:toBeDefined/ toBeUndefined.

换句话说,这两者似乎都会检查同样的事情:

expect(1).toBeDefined();
expect(undefined).not.toBeUndefined();
Run Code Online (Sandbox Code Playgroud)

这有什么理由,就像一个toBeDefined不一样的情况toBeUndefined?或者这只是Jasmine中的一个断言,它有两种完全相同的被调用方式?

jasmine

10
推荐指数
1
解决办法
7556
查看次数

Python中两个列表的有序交集

我知道在Python中,如果我有:

list_1 = [1,2,3]
list_2 = [2,3,4]
Run Code Online (Sandbox Code Playgroud)

我可以做以下事情来找到两者之间的交集:

list(set(list_1) & set(list_2))
# = [2,3]
Run Code Online (Sandbox Code Playgroud)

但是这种方法存在一个问题:集合不像列表那样维护顺序.所以如果我真的有:

list_1 = [3,2,1]
list_2 = [2,3,4]
Run Code Online (Sandbox Code Playgroud)

我明白了:

list(set(list_1) & set(list_2))
# = [2,3]
Run Code Online (Sandbox Code Playgroud)

即使我更喜欢从第一个列表中获得订单,即:

# = [3,2]
Run Code Online (Sandbox Code Playgroud)

是否有另一种交叉技术可以使得到的"交集"与第一个列表保持相同的顺序?

python list

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

检查本机代码

有什么办法可以在Javascript中探索本机代码吗?我想看看Function()类中包含了什么.

javascript

9
推荐指数
1
解决办法
4239
查看次数

有哪些最常见的Git分支方案/提交生命周期?

首先,对不起,如果这是重复,但我尝试搜索,所有我能找到的是如何在Git和诸如此类的分支.那不是我想要的那么多; 我试图找出不同的人如何设置他们的Git分支以匹配他们的工作流程.

让我举个例子说明我们公司是如何做到的:

  1. 开发人员在本地提交他们自己的分支
  2. 开发人员将提交推送到他们的远程,其中连续构建系统检查它,另一个开发人员检查它
  3. 如果审核/构建通过,则提交将合并到QA分支中(如果失败,则会在审核/构建通过之前进行更多提交)
  4. 如果提交失败QA,则进行还原提交以将其取出
  5. 在准备好足够的QA提交后,我们的主分支获得提交(QA分支基于它,因此不需要合并)
  6. 定期分支取自主分支,并用于释放"进入野外".如果在此处发现问题,则将再次使用还原提交来删除代码
  7. 发布后,开发人员将他们的分支机构重新分支到主分支(获得他们以前的提交和其他开发人员的提交)

现在,这个系统存在一些问题; 我会在评论中注意到一些,但我并不是真的在寻找"请为我修复我们的系统",我只是想看看我们可以使用的其他分支选项,以便我可以权衡各种可能性.

所以,如果你曾经在多家使用过Git的公司工作过(或者更好,如果你是一位看过大量Git设置的顾问),请你分享一下:不同的公司如何设置Git分支(以及移动提交)他们之间)促进发展的各个阶段......尽可能地尽量减少烦恼?我敢肯定必须有一些共同的模式......但我不知道它们是什么.

PS如果您只看过一个Git设置,但您认为它很有意思,请务必发布.但是,我想将答案提供给那些提供最佳可能选项细分的人,我希望这会来自已经看过几个Git设置的人.

git git-branch

9
推荐指数
1
解决办法
994
查看次数

使用git filter-branch通过提交消息删除提交

简单版本:

如果我有一个分支"foo-555",有一堆提交消息,如:

  • foo 555:等等
  • foo 123:等等等等
  • foo 555:等等等等
  • foo 321:blahblah

并且我想删除所有不以"foo 555:"开头的提交,有没有办法使用git filter-branch(或其他任何工具)?

原始版本(更详细):

在我们的存储库中,我们有一个约定,其中每个提交消息都以某种模式开头:

Redmine#555:SOME_MESSAGE

我们还进行了一些重新定位,以便将潜在的发布分支更改引入特定问题的分支.换句话说,我可能有分支"foo-555",但在我将它合并到分支"预发布"之前,我需要获得预发布的任何提交,foo-555没有(所以foo- 555可以快进合并到预发布).

但是,由于预发布有时会发生变化,因此我们有时会遇到从预发布中引入提交的情况,但之后的提交会从预发布中删除.很容易识别来自预发布的提交,因为提交消息中的数字与分支号码不匹配; 例如,如果我在我的foo-555分支中看到"Redmine#123:...",我知道它不是我的分支的提交.

所以现在问题是:我想删除所有"不属于"分支的提交; 换句话说,任何提交:

  • 在我的foo-555分支中,但不在预发布分支中(pre-release..foo-555)
  • 有一个不以"Redmine#555"开头的提交消息

但当然"555"因分支而异.有没有办法使用filter-branch(或任何其他工具)来实现这一目标?目前我能看到的唯一方法就是进行交互式rebase("git rebase -i")并手动删除所有"不良"提交.

git

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

当内容扩展超过窗口大小时,在绝对定位的元素上设置100%的高度

所以在阅读Stack Overflow和网络后,我发现有两个主要技巧可以实现100%的高度:

  1. 在HTML和BODY上设置高度:100%
  2. 将您的元素设置为:
    • 身高:100%,或
    • top:0,bottom:0,position:absolute

然而,即使有这些技巧,我也难以将绝对定位的DIV的高度设置为真正的100%.我可以获得100%的视口大小,但如果用户向下滚动,那么很明显div不会真正具有100%的高度.

我在这里做了一个简单的JS小提琴:http: //jsfiddle.net/9FEne/

我的问题是:有没有人知道任何进一步的技巧来获得一个真正的(即内容高度,而不是视口高度)100%高度绝对定位div?

css height css-position

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

过滤jQuery数据表时如何忽略HTML?

我正在使用jQuery DataTables插件,并且其中的过滤功能存在轻微问题.如果我有一个包含内容的表格单元格<a href='foo6'>Blah</a>,并且我过滤为"6",那么即使"Blah"中没有"6",该单元格也会显示出来.我想做的是让DataTables插件在进行过滤时忽略HTML.

我已经尝试过搜索DataTables网站,发现冲突,无用的线索.一篇帖子提示我sType:'html'在aaColumns的定义中需要一个选项,但我尝试了它并没有帮助......加上后来的帖子暗示当前版本的DataTables会自动检测HTML sType.我还发现了这段代码:

// Make filtering ignore HTML (see http://datatables.net/plug-ins/filtering)
$.fn.dataTableExt.ofnSearch['html'] = function ( sData ) {
    var n = document.createElement('div');
    n.innerHTML = sData;
    if (n.textContent) {
        return n.textContent.replace(/\n/g," ");
    } else {
        return n.innerText.replace(/\n/g," ");
    }
};
Run Code Online (Sandbox Code Playgroud)

应该解决的问题......但事实并非如此.

所以,我的问题是:有没有人知道如何在过滤行时使DataTables忽略非文本(即HTML)内容?

javascript jquery jquery-datatables

9
推荐指数
1
解决办法
4538
查看次数

如何从Require.js导出全局变量?

我正在尝试使用Require.js创建一个外部库.感谢Require.js没有正确编译单个js文件Require.js(almond.js)Timing Off我已经弄清楚如何将所有内容"编译"到一个优化/构建的文件中,并且该单个文件可以正常工作.只有一个问题:我无法弄清楚如何为我的库设置变量.

假设我希望我的库可以创建window.Foo.我尝试使用以下main.js文件:

window.Foo = require([], function() {
    window.Foo = {someValue: 1};
    return {someValue: 2};
});
Run Code Online (Sandbox Code Playgroud)

和一个包装器结束片段:

    return require('main');
}));
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我尝试通过window.Foo从require调用内部显式设置并通过结束片段的返回值从外部显式设置Foo来将Foo暴露给全局空间.但是没有人工作; 如果我console.log(window.foo)在加载构建文件后添加一个权限,它会告诉我这window.Foo是未定义的.

如果我做一个window.setTimeout window.Foo最终会设置(to {someValue: 1}),但我不能指望我的用户必须用超时包装所有代码.任何人都可以解释一下window.Foo我的优化/构建文件加载后如何定义?

requirejs almond

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

在 VS Code 中,我可以验证我的 Javascript 但忽略特定的 Typescript 错误吗?

我正在用 Visual Studio Code(不是 Typescript)编写 Javascript。不过,我说"checkJs": true(“关于JavaScript文件启用类型检查”),以我compilerOptionsjsconfig.json启用自动进口。

现在我已经这样做了,我收到了Typescript错误(波浪线),例如:

JSX 元素类型“Foo”没有任何构造或调用签名。ts(2604)

我可以通过禁用有效性检查来删除这些,但是我会失去正常的 Javascript 有效性检查。

我的问题是:是否可以进行自动导入和Javascript有效性检查,但VS Code 中没有Typescript错误?例如,是否可以设置一些标志jsconfig.json来禁用最后带有“ts”的错误?

如果没有,我如何修复 Javascript 文件中的 Typescript 错误......而不必采用 Typescript?

编辑:只是为了帮助澄清我想象的那种解决方案......假设我们在这里谈论 ESLint。是的,我可以在文件顶部添加注释以使 ESLint 忽略该文件,但随后我会丢失所有 linting。

我更在寻找能够说"ts2604": false"ts*": false.eslintrc文件中的等价物,或者更类似的东西。换句话说,我不想采用 Typescript,也不想失去所有类型意识......我只想要 VS Code 的强大Javascript功能,而我的大部分代码都没有被我无法做到的错误/警告消息强调任何关于。

javascript visual-studio-code

9
推荐指数
1
解决办法
2093
查看次数

如何防止$ .ajax将[]添加到我的密钥名称(没有processData:false)?

如果我尝试使用$.ajaxPOST一个数据字典,如:

{
    list: ["fake_id_0"],
    mapType: "fakeToRealId"
}
Run Code Online (Sandbox Code Playgroud)

jQuery做了一些奇怪的事情; 它将数据转换为:

{
    list[]: ["fake_id_0"],
    mapType: "fakeToRealId"
}
Run Code Online (Sandbox Code Playgroud)

如您所见,它为list键添加括号,但不是mapType键.现在在一般的REST意义上,是的,人们通常使用括号来命名具有数组值的键...但是我的服务器不能以这种方式工作,所以如果我尝试POST list[]我有问题.

我已经跟踪了这个问题,直到$.ajax处理parseData选项,在这段代码中:

// Convert data if not already a string
if ( s.data && s.processData && typeof s.data !== "string" ) {
    s.data = jQuery.param( s.data, s.traditional );
}
Run Code Online (Sandbox Code Playgroud)

如果我使用processData: false它确实跳过那个块......但是它也没有为我提供URLEncode我的数据.

所以,我的问题是:如何在没有jQuery的情况下进行$.ajax调用,processData: true修改我的密钥名称?或者失败了,我如何使用processData: false,但除了括号添加之外,仍然可以从该选项中获得所有效果?

PS或者,如果这是所有非标准的jQuery行为,由我所拥有的一些插件引起,请告诉我相反:-)

*编辑*

我回答了自己的问题,然后删除了答案,因为我意识到它有缺陷.我回答说设置选项traditional:true(在$.ajax调用中)修复括号,它确实...但它也有副作用,即它不会序列化嵌套对象. …

ajax jquery

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