小编dar*_*mkd的帖子

正则表达式混乱 - ?括号内外

这个正则表达式:

(a)?b\1c
Run Code Online (Sandbox Code Playgroud)

与此相符不符合"bc":

(a?)b\1c
Run Code Online (Sandbox Code Playgroud)

确实匹配它.为什么是这样?我认为这些陈述是相同的.

regex

6
推荐指数
1
解决办法
147
查看次数

使用 Watir-Webdriver/Selenium 在 Firefox 中指定自定义用户数据目录

我可以使用 Chrome 驱动程序执行以下操作:

b = Watir::Browser.new :chrome, :switches => ['--user-data-dir=C:/some_folder/'] # same philosophy for selenium, just a bit of a different syntax.
Run Code Online (Sandbox Code Playgroud)

这将创建一个新的用户数据目录,其中将存储所有 cookie、书签、缓存等。基本上,创建一个新的配置文件。如果这样的文件夹不存在,它将创建它。如果它确实存在,它将从中加载cookies/所有相关文件。

有没有办法使用 Firefox 驱动程序来做同样的事情?我一直在研究创建 Firefox 配置文件的方法,我发现的只是这篇文章:创建新的 Firefox 配置文件,它不能解决我的问题,因为我希望自动完成它,就像上面的 Chrome 驱动程序一样。另外,您似乎可以使用以下命令创建新的配置文件:

profile = Selenium::WebDriver::Firefox::Profile.new
Run Code Online (Sandbox Code Playgroud)

但我还没有找到用我指定的名称保存该配置文件的方法。

ruby firefox selenium watir-webdriver selenium-webdriver

6
推荐指数
2
解决办法
7656
查看次数

选择器:具体在右侧?

学习jQuery说:

具体在选择器的右侧,而在左侧则不太具体.

// Unoptimized:
$( "div.data .gonzalez" );

// Optimized:
$( ".data td.gonzalez" );
Run Code Online (Sandbox Code Playgroud)

我理解左侧的部分,但右侧尺寸的具体部分是什么?现代浏览器的真实情况如何?据我所知,Sizzle引擎不适用于现代浏览器.让我们修改我们的"未优化"示例,通过删除以下内容来包括我们需要在右侧"特定"的事实div:

// Unoptimized modification:
$( ".data .gonzalez" );
Run Code Online (Sandbox Code Playgroud)

对于我们已经拥有的"优化"示例(适用于现代浏览器):

  1. 已经queryselectorall拜访了.data
  2. getElementsByTagName关于td从结果从第1步设置.
  3. 调用queryselectorall用于.gonzales从结果从第2步设置

与我们的"未经优化的修改"示例:

  1. 已经queryselectorall拜访了.data
  2. 呼叫queryselectorall.gonzales从1,结果一步

基本上,我们正在跳过第2步.所以不会:

$( ".data .gonzalez" );
Run Code Online (Sandbox Code Playgroud)

跑得比:

$( ".data td.gonzalez" );
Run Code Online (Sandbox Code Playgroud)

对于现代浏览器而言,使"特定于选择器的右侧大小"的原则已经过时了吗?

jquery

6
推荐指数
1
解决办法
81
查看次数

jQuery链接与动画函数的回调

说我有一些我想要动画的元素:

$('.hey').show(1000).slideUp(1000);
Run Code Online (Sandbox Code Playgroud)

这和之间有什么区别:

$('.hey').show(1000, function() {
  $(this).slideUp(1000);
});
Run Code Online (Sandbox Code Playgroud)

就内部发生的事情而言?据我所知,动画在jQuery中是异步的.所以,第一个例子,showslideUp应该火在同一时间.在第二,slideUp应该只在show结束后开火.

然而,出于某种原因,人们喜欢这个答案说他们是"相同的".尽管他们的工作方式不同(显而易见),为什么它们相同(在第一个例子中,返回会立即发生,与第二个不同)?

javascript jquery animation

6
推荐指数
1
解决办法
94
查看次数

这种与 splat 运算符的并行赋值在 Ruby 中是如何工作的?

letters = ["a", "b", "c", "d", "e"]
first, *second = letters
first  # => "a"
second # => "["b", "c", "d", "e"]
Run Code Online (Sandbox Code Playgroud)

我明白这会产生什么,但无法理解这一点。这基本上是 Ruby 的魔法吗?无法想到任何其他编程语言可以支持使用 splat 运算符进行这种类型的赋值。

ruby

5
推荐指数
1
解决办法
782
查看次数

为什么一切都是Ruby中的Class实例?

我不太了解Ruby对象模型的一些东西.首先,Ruby中的一切是一个实例Class吗?这些都产生了真实:

p Object.instance_of?(Class)
p Class.instance_of?(Class)
p Module.instance_of?(Class)
p BasicObject.instance_of?(Class)
class Hello; end
p Hello.instance_of?(Class)
Run Code Online (Sandbox Code Playgroud)

我不知道怎么可能,如果它Object是一个超类Class,它怎么能同时成为它的超类Class和它的一个实例(Ruby对象模型上的大多数图清楚地说明了这个层次结构)?这允许像这样的一些疯狂:

p BasicObject.is_a?(Object) #=> true
Run Code Online (Sandbox Code Playgroud)

这里BasicObject.classClassClass.is_a?(Object).

顺便说一句,使用Ruby 2.0.

ruby

5
推荐指数
1
解决办法
345
查看次数

Rails 中的多列索引顺序

我理解为什么索引顺序在 Rails 中很重要(来自这样的答案),例如,如果我有:

add_index :admin_users_pages, ["user_id", "page_id"]
Run Code Online (Sandbox Code Playgroud)

所以我应该把“缩小行数”的字段设置得最快,但我不确定这是什么意思。假设我有 2 个用户,有 2 个唯一 ID,还有 300 个页面,有 300 个唯一 ID,那么将哪一个放在第一位是更明智的选择?假设我有 150 个页面供第一个用户使用,150 个页面供第二个用户使用,索引是否会类似于:

user_id page_id
1       1
1       2  
1       3
Run Code Online (Sandbox Code Playgroud)

或者 page_id 根本不会被排序,只有索引,所以我应该得到类似的东西:

user_id page_id
1       143
1       93  
1       31
Run Code Online (Sandbox Code Playgroud)

indexing database-design ruby-on-rails

5
推荐指数
1
解决办法
1525
查看次数

向左和向右定位元素

是否有关于 CSS 不允许您同时指定顶部和底部或左侧和右侧值的内容

这个例子为例

div {
  width: 100px;
  height: 100px;
}
.first {
  background-color: blue;
  position: relative;
  left: 100px;
  right: 50px;
}
.second {
  background-color: yellow;
}
Run Code Online (Sandbox Code Playgroud)
<div class="first"></div>
<div class="second"></div>
Run Code Online (Sandbox Code Playgroud)

尝试删除right: 50px,位置将保持不变。这是怎么回事?

css

4
推荐指数
2
解决办法
3444
查看次数

CSS前缀与非前缀,使用两次?

如果你有一个带有前缀的CSS属性:

-webkit-transform: rotate(10deg);
-ms-transform: rotate(10deg);
transform: rotate(10deg);
Run Code Online (Sandbox Code Playgroud)

并且到达使用前缀版本的浏览器,是否会忽略未加前缀的属性,或者同时处理前缀版本来应用属性两次?

css

4
推荐指数
1
解决办法
93
查看次数

反复调用ReactDOM.render和内存泄漏

在此React页面上,它表示您手动需要调用,unmountComponentAtNode因为:

这很重要,经常被遗忘.忘记调用unmountComponentAtNode将导致您的应用程序泄漏内存.

我有一个应用程序,它反复将属性传递给根组件并调用ReactDOM.render.我是否需要调用unmountComponentAtNode容器元素以防止"内存泄漏",无论这意味着什么?

我试着这样做的,发现它会导致所有的子组件重新安装,同时呼吁ReactDOM.render没有unmountComponentAtNode似乎做一个diff,并且不再安装任何的子组件.

所以ReactDOM.render没有电话可以unmountComponentAtNode吗?这会导致任何内存泄漏吗?在这个页面上它说ReactDOM.render:

如果ReactElement先前已呈现为容器,则会对其执行更新,并仅在必要时更改DOM以反映最新的React组件.ReactDOM.render()控制传入的容器节点的内容.第一次调用时,内部的任何现有DOM元素都会被替换.后来的调用使用React的DOM diffing算法进行有效更新.

它没有提到任何副作用.

编辑:我使用Chrome做了一些简单的任务,我ReactDOM.render使用有/无需使用1个简单组件100万次unmountComponentAtNode.根据Chrome任务管理器的说法,该页面大约需要5秒钟才能完成而没有它冻结并消耗10倍(我停止了它因为它冻结了我的窗口).因此,unmountComponentAtNode当证据表明使用它可能会导致内存泄漏时,不确定它们是什么意思.

reactjs

4
推荐指数
1
解决办法
2678
查看次数