我刚刚学习了Jasmine库,我注意到Jasmine的内置断言数量非常有限.我也注意到,尽管数量有限,但它的两个断言似乎是多余的:toBeDefined/ toBeUndefined.
换句话说,这两者似乎都会检查同样的事情:
expect(1).toBeDefined();
expect(undefined).not.toBeUndefined();
Run Code Online (Sandbox Code Playgroud)
这有什么理由,就像一个toBeDefined不一样的情况toBeUndefined?或者这只是Jasmine中的一个断言,它有两种完全相同的被调用方式?
我知道在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)
是否有另一种交叉技术可以使得到的"交集"与第一个列表保持相同的顺序?
首先,对不起,如果这是重复,但我尝试搜索,所有我能找到的是如何在Git和诸如此类的分支.那不是我想要的那么多; 我试图找出不同的人如何设置他们的Git分支以匹配他们的工作流程.
让我举个例子说明我们公司是如何做到的:
现在,这个系统存在一些问题; 我会在评论中注意到一些,但我并不是真的在寻找"请为我修复我们的系统",我只是想看看我们可以使用的其他分支选项,以便我可以权衡各种可能性.
所以,如果你曾经在多家使用过Git的公司工作过(或者更好,如果你是一位看过大量Git设置的顾问),请你分享一下:不同的公司如何设置Git分支(以及移动提交)他们之间)促进发展的各个阶段......尽可能地尽量减少烦恼?我敢肯定必须有一些共同的模式......但我不知道它们是什么.
PS如果您只看过一个Git设置,但您认为它很有意思,请务必发布.但是,我想将答案提供给那些提供最佳可能选项细分的人,我希望这会来自已经看过几个Git设置的人.
简单版本:
如果我有一个分支"foo-555",有一堆提交消息,如:
并且我想删除所有不以"foo 555:"开头的提交,有没有办法使用git filter-branch(或其他任何工具)?
原始版本(更详细):
在我们的存储库中,我们有一个约定,其中每个提交消息都以某种模式开头:
Redmine#555:SOME_MESSAGE
我们还进行了一些重新定位,以便将潜在的发布分支更改引入特定问题的分支.换句话说,我可能有分支"foo-555",但在我将它合并到分支"预发布"之前,我需要获得预发布的任何提交,foo-555没有(所以foo- 555可以快进合并到预发布).
但是,由于预发布有时会发生变化,因此我们有时会遇到从预发布中引入提交的情况,但之后的提交会从预发布中删除.很容易识别来自预发布的提交,因为提交消息中的数字与分支号码不匹配; 例如,如果我在我的foo-555分支中看到"Redmine#123:...",我知道它不是我的分支的提交.
所以现在问题是:我想删除所有"不属于"分支的提交; 换句话说,任何提交:
但当然"555"因分支而异.有没有办法使用filter-branch(或任何其他工具)来实现这一目标?目前我能看到的唯一方法就是进行交互式rebase("git rebase -i")并手动删除所有"不良"提交.
所以在阅读Stack Overflow和网络后,我发现有两个主要技巧可以实现100%的高度:
然而,即使有这些技巧,我也难以将绝对定位的DIV的高度设置为真正的100%.我可以获得100%的视口大小,但如果用户向下滚动,那么很明显div不会真正具有100%的高度.
我在这里做了一个简单的JS小提琴:http: //jsfiddle.net/9FEne/
我的问题是:有没有人知道任何进一步的技巧来获得一个真正的(即内容高度,而不是视口高度)100%高度绝对定位div?
我正在使用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)内容?
我正在尝试使用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我的优化/构建文件加载后如何定义?
我正在用 Visual Studio Code(不是 Typescript)编写 Javascript。不过,我说"checkJs": true(“关于JavaScript文件启用类型检查”),以我compilerOptions在jsconfig.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功能,而我的大部分代码都没有被我无法做到的错误/警告消息强调任何关于。
如果我尝试使用$.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调用中)修复括号,它确实...但它也有副作用,即它不会序列化嵌套对象. …
javascript ×3
git ×2
jquery ×2
ajax ×1
almond ×1
css ×1
css-position ×1
git-branch ×1
height ×1
jasmine ×1
list ×1
python ×1
requirejs ×1