小编jac*_*wah的帖子

茉莉花约会与moment.js嘲笑

我在我的应用程序中使用moment.js作为日期/时间,但似乎它与Jasmine的模拟功能不相符.我在下面放了一个测试套件,显示我的问题:

jasmine.clock().mockDate似乎暂时没有工作,而它的工作正常Date.

describe('Jasmine tests', function () {
    beforeEach(function() {
        jasmine.clock().install();
    });

    afterEach(function() {
        jasmine.clock().uninstall();
    });

    // Pass
    it('uses the mocked time with Date', function() {
        var today = new Date('2015-10-19');
        jasmine.clock().mockDate(today);
        expect(new Date().valueOf()).toEqual(today.valueOf());
    });


    // Fail
    it('uses the mocked time with moment', function() {
        var today = moment('2015-10-19');
        jasmine.clock().mockDate(today);

        expect(moment().valueOf()).toEqual(today.valueOf());
    });
});
Run Code Online (Sandbox Code Playgroud)

为什么没有Date按预期工作moment?是不是在引擎盖下moment使用Date

moment使用Jasmine 模拟的正确方法是什么?

javascript jasmine momentjs

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

将整数解析为字符串C.

如何string(char* || char[])在C中解析整数?是否有与Integer.parseInt(String)C中Java方法相同的方法?

c string int parsing

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

C - 为什么getopt在linux上返回255?

我最近一直在欺骗getopt(来自unistd.h).我编写了一些在使用MinGW的gcc编译的Windows 7下运行良好的代码,而不是在我的Raspberry Pi上使用Raspbian Linux工作(我用gcc编译它们,没有选项; gcc t.c).出于某种原因,当面对没有开关时,getopt返回int 255或charÿ,当它真的应该返回-1时.

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
  char t;
  opterr = 0;

  while ((t = getopt(argc, argv, "a:")) != -1)
    switch (t) {
      case 'a':
        printf("-a with argument %s\n", optarg);
        return 0;
      case '?':
        printf("uknown option\n");
        return 1;
      default:
        /* This is always 255 under linux, and is never reached under windows */
        printf("getopt returned int %d (char %c)\n", t, t);
        return 2;
    }

  return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c getopt

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

如何为共享库设置动态链接器路径?

我想用一个.interp段编译一个共享库。

#include <stdio.h>

int foo(int argc, char** argv) {

    printf("Hello, world!\n");
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下命令。

gcc -c -o test.o test.c
ld --dynamic-linker=blah -shared -o test.so test.o
Run Code Online (Sandbox Code Playgroud)

我最终没有INTERP段,就好像我从未通过过该--dynamic-linker=blah选项一样。用检查readelf -l test.so。生成可执行文件时,链接器会正确处理该选项,并将INTERP段放在程序头中。如何使它也适用于共享库?

linker gcc shared-libraries elf ld

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

打开文件的不同实现

我正在阅读"高尔文操作系统概念"一书,并遇到以下声明:

文件打开可以通过以下两种方式实现:

  1. 某些系统在第一次引用时打开文件.一旦工作完成,就关闭它们.
  2. 其他一些系统允许应用程序员在应用程序本身中指定诸如open-read/write-close之类的命令."

我看到Linux/Windows的C程序遵循第二种方法.

  • 有第一种方法的例子吗?
  • 为什么这些系统使用第一种方法?

operating-system system-calls

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

使用 fgets 从 stdin 读取,如果输入大于大小,则会出错

我正在创建一个带有提示的命令行应用程序。只要输入适合缓冲区,它就可以正常工作,但是当输入较大时,我会出现一些奇怪的行为。下面是一个简化的最小示例,它具有相同的错误。

int main()
{
    for (;;) {
        const int size = 8;
        char str[size];

        printf("> ");
        fgets(str, size, stdin);

        toupper_str(str);
        printf("Result: %s\n", str);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果输入小于size.

> asdf
Result: ASDF
> 
Run Code Online (Sandbox Code Playgroud)

当输入较大时,处理范围内的输入部分,并在下一次循环迭代中,立即从 返回给定输入的其余部分fgets。这导致输入的那部分也被处理和一些奇怪的输出。

> asdfghjk
Result: ASDFGHJ
> Result: K

> 
Run Code Online (Sandbox Code Playgroud)

我可以通过将最后一个字符与换行符进行比较来查看输入是否大于或等于 size。fgets只要它适合,就保留换行符。

fgets(str, size, stdin);
if (str[strlen(str) - 1] != '\n') {
    fprintf(stderr, "Input too long\n");
}
Run Code Online (Sandbox Code Playgroud)

当检测到这种情况时,如何阻止它在下一次迭代中读取剩余的过长输入?

我在这里看到过类似的问题,但没有人提出同样的问题。

c

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

如何在 Atom 中获取活动文件的名称?

我想获取 Atom 1.0 包中当前文件的名称。我知道如何获取文件的完整路径,但我只想获取路径的文件名部分。这是我到目前为止的代码(取自atom-terminal):

editor = atom.workspace.getActivePaneItem()
file = editor?.buffer?.file
filepath = file?.path
Run Code Online (Sandbox Code Playgroud)

我试图阅读文档以查看是否已经存在这样的属性,但就我所能找到的而言,没有记录窗格项目。除了https://atom.io/docs/api/v1.0.0之外,还有其他可用的文档吗?

如果没有属性,是否有合适的标准函数以filepath独立于平台的方式从中提取路径的文件部分?

coffeescript atom-editor

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

Python 设置交集和 __eq__

根据此页面, set.intersection 使用该__eq__方法测试元素相等性。任何人都可以向我解释为什么这会失败?

>>> Class Foo(object):
>>>     def __eq__(self, other):
>>>         return True
>>>
>>> set([Foo()]).intersection([Foo()])
set([])
Run Code Online (Sandbox Code Playgroud)

使用 2.7.3。是否有另一种(不太复杂)的方法来做到这一点?

python set python-2.7

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