小编ech*_*hox的帖子

如何编写一个期望在Jasmine中抛出Error的测试?

我正在尝试为Jasmine测试框架编写测试,该测试期望出现错误.目前我正在使用GitHubJasmine Node.js集成.

在我的Node模块中,我有以下代码:

throw new Error("Parsing is not possible");
Run Code Online (Sandbox Code Playgroud)

现在我尝试编写一个期望这个错误的测试:

describe('my suite...', function() {
    [..]
    it('should not parse foo', function() {
    [..]
        expect(parser.parse(raw)).toThrow(new Error("Parsing is not possible"));
    });
});
Run Code Online (Sandbox Code Playgroud)

我也试过了Error()一些其他的变种,只是无法弄清楚如何使它工作.

javascript testing node.js jasmine

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

ArrayBuffer到base64编码的字符串

我需要一种有效的(读取本机)方式将ArrayBuffer转换为需要在多部分帖子上使用的base64字符串.

javascript base64 encoding arraybuffer

168
推荐指数
11
解决办法
16万
查看次数

在if-else中执行多个语句而不使用nullpointer异常

我正在尝试深入研究clojure和函数式编程.

在我的代码的某些时候,我有一个(def server (spawn-server)).现在我想要一个REPL的短函数来检查这个套接字的状态.

这就是我现在所拥有的:

(defn status []
  (if server 
    (
      (println "server is up and running")
      (println "connections:" (connection-count server)) 
     )    
    (println "server is down")))
Run Code Online (Sandbox Code Playgroud)

如果服务器是nil,一切正常,但如果服务器正在运行,这是REPL上的输出:

=> (status)
server is up and running
connections: 0
#<CompilerException java.lang.NullPointerException (NO_SOURCE_FILE:0)>
Run Code Online (Sandbox Code Playgroud)

我不确定我是否看到了问题,但我无法弄清楚这应该如何工作:-)我在这里有这样的:

((println "foo")(println "foo"))
Run Code Online (Sandbox Code Playgroud)

哪个会被评估到(nil nil)NullPointerException的结果?

通常我不会使用外括号,但如何为if条件创建某种"块"语句.如果我不使用它们,第二个println将被用作其他.

什么是有效的是使用let作为某种"块" - 陈述:

(let [] 
  (println "server is up and running"),
  (println "connections:" (connection-count server)) )
Run Code Online (Sandbox Code Playgroud)

但我不确定这是否是"正确"的解决方案?

clojure

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

谷歌分析如何收集其数据?

是的,我知道你必须将谷歌分析JavaScript嵌入你的页面.

但是如何将收集的信息提交给谷歌分析服务器?

例如,由于浏览器安全设置(跨域脚本编写),因此无法进行AJAX请求.

也许有人已经看过令人困惑的谷歌JavaScript代码?

javascript tracking google-analytics

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

LISP:关键字参数,提供-p

目前我正在通过Peter Seibel的"Practical Common Lisp"工作.

在"实用:简单数据库"(http://www.gigamonkeys.com/book/practical-a-simple-database.html)一章中,Seibel通过以下示例解释了关键字参数和提供参数的用法:

(defun foo (&key a (b 20) (c 30 c-p)) (list a b c c-p))
Run Code Online (Sandbox Code Playgroud)

结果:

(foo :a 1 :b 2 :c 3)  ==> (1 2 3 T)
(foo :c 3 :b 2 :a 1)  ==> (1 2 3 T)
(foo :a 1 :c 3)       ==> (1 20 3 T)
(foo)                 ==> (NIL 20 30 NIL)
Run Code Online (Sandbox Code Playgroud)

因此,如果我在参数列表的开头使用&key,我可以使用3个参数名称,默认值和第三个参数列表,如果参数是否已提供.好.但是看看上面例子中的代码:

(list a b c c-p)
Run Code Online (Sandbox Code Playgroud)

lisp解释器如何知道cp是我的"提供的参数"?

lisp common-lisp

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

Clojure字符串返回值

在看Clojure时只是一个简单的问题....

鉴于以下REPL会话:

Clojure 1.2.0
user=> "bar"
"bar"
user=> (print "bar")
barnil
user=> (defn foo [] ("bar"))
#'user/foo
user=> (foo)
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn (NO_SOURCE_FILE:0)
user=> (print foo)
#<user$foo user$foo@65dcc2a3>nil
user=> (print (foo))
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn(NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)

为什么打印功能不显示字符串"条"?看起来读者试图将foo的返回值(似乎是一个String)解析为函数?应如何定义print将字符串写入命令行?

lisp clojure

7
推荐指数
2
解决办法
6337
查看次数

正则表达式排除单词(XML Schema风格)

目前我正在尝试找到具有以下条件的正则表达式:

Match:          FOO_.* (valid if the string contains FOO_ at the beginning)
Don't Match:    FOO_BAR (not valid if the string contains BAR)
Run Code Online (Sandbox Code Playgroud)

通常我会使用以下表达式:

FOO_(?!BAR)
Run Code Online (Sandbox Code Playgroud)

我的解决方案的问题是,我想在xml架构中使用它.与解析器一起使用会显示以下错误消息:

schema.xsd:50: element pattern: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}pattern': The value 'FOO_(?!BAR)' of the facet 'pattern' is not a valid regular expression.
WXS schema schema.xsd failed to compile
Run Code Online (Sandbox Code Playgroud)

是否有可读的;-)工作解决方案,或者只是在xml架构中是不可能的?

regex xsd

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

Web Cryptography API:如何发现支持的算法?

网络加密API支持的浏览器通过JavaScript本地cryptograhic功能,例如一个可靠的随机数生成器或用于加密或签名不同算法的可能性的使用。

该规范列出了算法概述作为实现者的起点,但添加了以下编辑说明:

注意:列出的所有算法都应被视为“有风险的功能”,除非实现者采用它们。它们包含在编辑器草案中反映了社区成员对它们包含的请求,并作为练习被包含在内,以确保本规范中定义的 API 的健壮性。

因此,算法列表和建议可能会在未来的修订中发生重大变化。

据我了解,规范背后的想法是为密码学提供一个接口,而不是写下特定的算法(这完全有道理!)。

如何确定客户端是否支持特定算法?隐藏实现细节是一种很好的做法,但是由于算法必须具有所谓的公认算法名称,我不明白为什么您不想公开已注册的算法。仍然没有指定接口,您注册算法的对象描述如下:

这个规范使用了一个内部对象,[[supportedAlgorithms]]。

此内部对象不向应用程序公开。

在当前状态发现可用算法的唯一可能性是捕获微妙接口的NotSupportedError

从我的角度来看,发现是简单的程序流程,错误应该作为异常处理,而不是实现逻辑。

任何提示或建议?也欢迎链接到适当的 w3c-mailinglist 讨论。

javascript webcrypto-api

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

ansible 提供额外变量作为嵌套 json

我正在尝试将 ansible 用于参数化的 docker 部署。我希望能够通过命令行指定图像、版本和各种不同的环境变量。

可以直接指定图像、版本等,但 docker 模块的 env 参数需要一个字典。这是一个缩短的剧本示例:

-name: some deployment
docker:
   [..]
   name: myname
   [..]
   env:
      FOO: bar
      ANOTHERFOO: anotherbar
Run Code Online (Sandbox Code Playgroud)

环境变量是在运行时选择的,因此无法直接在提供的额外变量中定义它们。剧本目前看起来是这样的:

-name: some deployment
docker:
   [..]
   name: "{{ name }}"
   [..]
   env: "{{ env }}"
Run Code Online (Sandbox Code Playgroud)

由于 env 是一个嵌套字典,我们需要提供 --extra-vars 作为嵌套 json。我希望以下内容起作用:

./ansible-playbook [..] --extra-vars '{"name":"myname", "env":{"FOO":"bar", "ANOTHERFOO":"anotherbar"}}' [..]
Run Code Online (Sandbox Code Playgroud)

容器运行后, env 的值不存在。直接在剧本中提供 json 以进行测试是有效的。

我尝试了以下不同的 json 没有工作结果:

{"name":"myname", "env":{"FOO":"bar", "ANOTHERFOO":"anotherbar"}}

{"name":"myname", "env":[{"FOO":"bar"}, {"ANOTHERFOO":"anotherbar"}]}
Run Code Online (Sandbox Code Playgroud)

您如何通过命令行提供和使用嵌套字典,或者这是 Jinja2 模板引擎的限制。

yaml jinja2 ansible

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

直接编辑.class文件,使用操作码

今天我只是尝试在编译的java类文件中使用操作码.插入后

iinc 1,1
Run Code Online (Sandbox Code Playgroud)

java虚拟机响应:

Exception in thread "main" java.lang.ClassFormatError: Truncated class file
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: Test.  Program will exit.
Run Code Online (Sandbox Code Playgroud)

这是我的示例源代码:

public class Test {

    public static void main(String[] args) {
        int i = 5;
        i++;
        i++;
        i++;
        System.out.println("Number: " + i + "\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

对于操作数,增量的操作码是0x84 + 2个字节.结果类文件中只有一个部分,其中包含0x84:

[..] 8401 0184 …
Run Code Online (Sandbox Code Playgroud)

java jvm bytecode

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

Clojure:在动态嵌套map/seq中搜索/替换值

我有一个动态创建的地图数据结构,稍后将被解析为JSON.因此,嵌套级别等是未知的并且取决于数据.

如果键具有多个值,则它们在序列内表示为映射.

这是一个例子:

{:key "value"
:anotherKey "anotherValue"
:foo "test"
:others [ {:foo "test2"} {:foo "test3"} ]
:deeper {:nesting {:foo "test4"} }
}
Run Code Online (Sandbox Code Playgroud)

我现在想要搜索密钥:foo并附"/bar"加到值.

结果应该返回修改后的地图:

{:key "value"
:anotherKey "anotherValue"
:foo "test/bar"
:others [ {:foo "test2/bar"} {:foo "test3/bar"} ]
:deeper {:nesting {:foo "test4/bar"} }
}
Run Code Online (Sandbox Code Playgroud)

实现这一目标的干净简单方法是什么?

我尝试了一种递归方法,但除了大数据结构的内存问题之外,我正在努力返回我的附加值.

collections clojure

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

compareTo和嵌套的枚举

在" Java SCJP认证程序员指南 "中,我找到了一个我无法遵循的例子.

这个给定的枚举:

enum Scale3 {
    GOOD(Grade.C), BETTER(Grade.B), BEST(Grade.A);

    enum Grade {A, B, C}

    private Grade grade;

    Scale3(Grade grade) {
        this.grade = grade;
    }

    public Grade getGrade() { return grade; }
}
Run Code Online (Sandbox Code Playgroud)

这是给定的表达式:

Scale3.GOOD.getGrade().compareTo(Scale3.Grade.A) > 0;
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这个表达式会是真的?
返回值为2.

如果给定对象比对象"小",compareTo()将返回值> 0.

Scale3.Grade.A是Grades的"最大"元素,其序数为0.

Scale3.GOODScale3的"最大"元素,其序数也是0.

的构造Scale3被调用Scale3.Grade.C,其序号为2.

所以给定的表达式等于以下代码:

Scale3.Grade.C.compareTo(Scale3.Grade.A) > 0;
Run Code Online (Sandbox Code Playgroud)

AC大" ,所以不应该是<0?

java

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

条件自引用公式(仅在单元格值==""时执行)

这是我执行excel公式的问题.

这些是要求:

  • 我在excel表中有几行.
  • 在每行的末尾有一个名为"Month"的字段.
  • 如果有人在此行中输入新值,则应插入当前月份.
  • 如果修改了值,则不得更改月份.

要包括当前月份,我使用这样的公式(A10只是一个随机字段,将被填充):

=IF(A10<>0; MONTH(NOW()); "")
Run Code Online (Sandbox Code Playgroud)

现在我需要一些条件来检查该字段是否已包含一个月,如果是,则不执行任何操作.我尝试了以下(A15应包含月份):

=IF(A15 <> ""; IF(A10<>0; MONTH(NOW()); "") ; )
Run Code Online (Sandbox Code Playgroud)

要确定是否应该通过公式更改字段,我必须检查其当前值.问题是,这将最终成为对字段本身的循环引用.

有没有人为这类问题找到解决方案?我尽量不在那里使用任何VBA代码.

excel vba excel-2007

0
推荐指数
1
解决办法
2414
查看次数