小编Joh*_*hir的帖子

如何检查JavaScript中是否定义了变量?

如何检查是否以跨浏览器的方式定义了JavaScript变量?

在使用FireBug日志记录编写一些JavaScript时遇到了这个问题.我写了一些代码如下:

function profileRun(f) {
    // f: functions to be profiled
    console.profile(f.constructor);
    f();
    console.profileEnd(f.constructor);
}
Run Code Online (Sandbox Code Playgroud)

它在FireFox/FireBug中工作正常,但它在IE8 RC1中报告错误.所以,我想检查执行环境中是否存在控制台变量.

下面的代码在FireFox中工作正常,但在IE8 RC1中没有.

function profileRun(f) {
    if (console != undefined) {
        console.profile(f.constructor);
    }

    f();

    if (console != undefined) {
        console.profileEnd(f.constructor);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做的话.它适用于IE8 RC1.为什么?

function profileRun(f) {
    if (window.console != undefined) {
        console.profile(f.constructor);
    }

    f();

    if (window.console != undefined) {
        console.profileEnd(f.constructor);
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有任何跨浏览器的方式来检查它?

javascript dom undefined

460
推荐指数
0
解决办法
26万
查看次数

如何在RSpec中运行单个测试/规范文件?

我希望能够运行单个spec文件的测试 - 例如,我正在编辑的一个文件. rake spec执行所有规格.我的项目不是Rails项目,所以rake spec:doc不起作用.

不知道这是否重要,但这是我的目录结构.

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb

ruby testing rspec

271
推荐指数
11
解决办法
20万
查看次数

OAuth 2中隐式授权授权类型的目的是什么?

我不知道我是否只是有某种盲点或什么,但我已多次阅读OAuth 2规范并仔细阅读邮件列表档案,我还没有找到一个很好的解释为什么隐含格兰特已经开发出用于获得访问令牌的流程.与授权代码授予相比,似乎只是放弃了客户端身份验证,没有非常令人信服的理由.这是如何"针对使用脚本语言在浏览器中实现的客户端进行优化"(引用规范)?

两个流程都是相同的(来源:http://tools.ietf.org/html/draft-ietf-oauth-v2-22):

  1. 客户端通过将资源所有者的用户代理指向授权端点来启动流.
  2. 授权服务器对资源所有者进行身份验证(通过用户代理),并确定资源所有者是否授予或拒绝客户端的访问请求.
  3. 假设资源所有者授予访问权限,授权服务器使用先前提供的重定向URI(在请求中或在客户端注册期间)将用户代理重定向回客户端.
    • 重定向URI包括授权代码(授权代码流)
    • 重定向URI包括URI片段中的访问令牌(隐式流)

这是流量分裂的地方.在这两种情况下,此时重定向URI都是由客户端托管的某个端点:

  • 在授权代码流中,当用户代理使用URI中的授权代码命中该端点时,该端点上的代码会将授权代码及其客户端凭据交换为访问令牌,然后可以根据需要使用该令牌.例如,它可以将其写入页面上的脚本可以访问的网页中.
  • Implicit流完全跳过此客户端身份验证步骤,只是加载带有客户端脚本的网页.这里有一个可爱的技巧,URL片段可以防止访问令牌过多传递,但最终结果基本相同:客户端托管的站点提供一个页面,其中包含一些可以获取访问令牌的脚本.

因此我的问题是:通过跳过客户端身份验证步骤获得了什么?

user-agent oauth oauth-2.0

242
推荐指数
7
解决办法
7万
查看次数

Rails 4真实性令牌

当我遇到一些真实性令牌问题时,我正在研究一个新的Rails 4应用程序(在Ruby 2.0.0-p0上).

在编写响应json的控制器时(使用respond_to类方法),当我尝试使用创建记录时,我create开始ActionController::InvalidAuthenticityToken尝试异常curl.

我确定我设置-H "Content-Type: application/json"并设置数据,-d "<my data here>"但仍然没有运气.

我尝试使用Rails 3.2(在Ruby 1.9.3上)编写相同的控制器,并且我没有任何真实性令牌问题.我四处搜索,看到Rails 4中的真实性令牌发生了一些变化.据我所知,它们不再自动插入表格了?我想这会以某种方式影响非HTML内容类型.

有没有办法解决这个问题,而无需请求HTML表单,抢夺真实性令牌,然后使用该令牌发出另一个请求?还是我完全错过了一些非常明显的东西?

编辑:我刚尝试使用脚手架在新的Rails 4应用程序中创建一个新记录而不改变任何东西,我遇到了同样的问题所以我想这不是我做的事情.

ruby ruby-on-rails authenticity-token ruby-on-rails-4

198
推荐指数
7
解决办法
13万
查看次数

如何在bash循环列表中转义空格?

我有一个bash shell脚本循环遍历某个目录的所有子目录(但不是文件).问题是某些目录名称包含空格.

以下是我的测试目录的内容:

$ls -F test
Baltimore/  Cherry Hill/  Edison/  New York City/  Philadelphia/  cities.txt
Run Code Online (Sandbox Code Playgroud)

以及遍历目录的代码:

for f in `find test/* -type d`; do
  echo $f
done
Run Code Online (Sandbox Code Playgroud)

这是输出:

test/Baltimore
test/Cherry
Hill
test/Edison 
test/New
York
City
test/Philadelphia

Cherry Hill和纽约市被视为2或3个单独的条目.

我尝试引用文件名,如下所示:

for f in `find test/* -type d | sed -e 's/^/\"/' | sed -e 's/$/\"/'`; do
  echo $f
done
Run Code Online (Sandbox Code Playgroud)

但无济于事.

必须有一个简单的方法来做到这一点.


以下答案很棒.但为了使这更复杂 - 我并不总是想使用我的测试目录中列出的目录.有时我想将目录名称作为命令行参数传递.

我接受了查尔斯关于设置IFS的建议,并提出了以下建议:

dirlist="${@}"
(
  [[ -z "$dirlist" ]] && dirlist=`find test -mindepth 1 -type d` && IFS=$'\n'
  for …
Run Code Online (Sandbox Code Playgroud)

bash whitespace loops

117
推荐指数
5
解决办法
12万
查看次数

"导出"在shell编程中做了什么?

据我所知,变量赋值是相同的,无论它是否在"export"之前.这是为了什么?

bash shell zsh

110
推荐指数
3
解决办法
10万
查看次数

什么是正则表达式,它将匹配没有子域的有效域名?

首先抱歉第10,000次RegEx问题,

我意识到还有其他与域相关的问题,但正则表达式要么不正常,要么太复杂,要么对于具有子域,协议和文件路径的URL.

我更简单,我需要验证一个域名:

google.com

stackoverflow.com

所以这是一个最新形式的域名 - 甚至不是像www这样的子域名.

  1. 字符应该只是az | AZ | 0-9句点(.)和短划线( - )
  2. 域名部分不应以短划线( - )开头或结尾(例如-google-.com)
  3. 域名部分的长度应介于1到63个字符之间
  4. 扩展(TLD)现在可以是#1规则下的任何内容,我可以稍后对列表进行验证,但它应该是1个或更多字符

编辑:TLD显然是2-6个字符

没有.4修订版: TLD实际上应该被标记为"子域名",因为它应该包含像.co.uk这样的东西 - 我想可能的唯一验证(除了检查列表之外)将是'在第一个点之后应该有一个或者规则#1下的更多角色

非常感谢,相信我,我确实尝试过!

regex validation domain-name

106
推荐指数
11
解决办法
19万
查看次数

Faye vs. Socket.IO(和Juggernaut)

Socket.IO似乎是最流行和最活跃的WebSocket仿真库.Juggernaut使用它来创建一个完整的pub/sub系统.

Faye也很受欢迎,并拥有自己的javascript库,使其完整的功能可与Juggernaut相媲美.Juggernaut使用节点作为其服务器,而Faye可以使用节点或机架.Juggernaut使用Redis进行持久化(更正:它使用Redis作为pub/sub),而Faye只将状态保存在内存中.

  1. 一切都准确吗?
  2. Faye说它实现了Bayeux - 我认为Juggernaut没有这样做 - 是因为Juggernaut处于较低级别(IE,我可以使用Juggernaut实现Bayeux)
  3. 如果想要,Faye可以切换到使用Socket.IO浏览器javascript库吗?或者他们的javascript库做了根本不同的事情?
  4. 项目之间是否还有其他建筑/设计/哲学差异?

bayeux publish-subscribe juggernaut websocket socket.io

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

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

如何让rspec-2提供与测试失败相关的完整跟踪?

现在,如果我使用我的测试套件rake spec我得到一个错误:

1) SegmentsController GET 'index' should work
   Failure/Error: get 'index'
   undefined method `locale' for #
   # ./spec/controllers/segments_controller_spec.rb:14:
      in `block (3 levels) in '

这是正常的,因为我有一个错误:)

问题是跟踪不是很有帮助.我知道它突破了segments_controller_spec.rb,第14行,但这只是我称之为测试的地方:

### segments_controller_spec.rb:14
get 'index'
Run Code Online (Sandbox Code Playgroud)

我更喜欢实际的断行和完整的跟踪,而不是spec文件夹中的部分.

跑步--trace并没有帮助.

ruby testing rspec rspec2 ruby-on-rails-3

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