小编Nic*_*lin的帖子

使用续集和数据库清理器的外键约束问题

我正在使用数据库清理器续集和sqlite外键约束遇到问题.具体来说,我正在使用:truncationCapybara集成测试的策略.

对于给定的示例模式:

CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE events(id INTEGER PRIMARY KEY, title TEXT);

CREATE TABLE events_users(
  user_id INTEGER,
  event_id INTEGER,

  FOREIGN KEY(user_id) REFERENCES users(id),
  FOREIGN KEY(event_id) REFERENCES events(id)
);
Run Code Online (Sandbox Code Playgroud)

和续集模特:

class User < Sequel::Model
  many_to_many :events
end

class Event < Sequel::Model
  many_to_many :users
end
Run Code Online (Sandbox Code Playgroud)

运行以下内容:

# normally this would be run in
# an rspec before(:each) for my :feature specs
DatabaseCleaner.start
DatabaseCleaner.strategy = :truncation

bob = User.create(name: "bob")
sally …
Run Code Online (Sandbox Code Playgroud)

ruby sqlite sequel database-cleaner

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

理解Prolog中的递归规则

我正在启动 Prolog,由七周七种语言提供,并在理解 Prolog 如何处理递归方面遇到了一些困难。

给出以下代码:

sum(0, []).
sum(Total, [Head|Tail]) :- sum(Sum,Tail), Total is Head + Sum.

% executed in the Prolog interpreter:
sum(X, [1,2,3])
X = 6
Run Code Online (Sandbox Code Playgroud)

我明白这段代码在做什么,但我对 Prolog 如何解析sum. 主要是,令我感到奇怪的是 . 中没有明确的“返回” sum

我的理解是,会发生这样的事情:

A. 解释器尝试通过调用 sum 来统一规则 sum(X, [1,2,3]):

0 Sum(X, [1, 2, 3])
1 Sum(Y, [2,3] 
2 Sum(Z, [3])
3 Sum(0, []) % our recursive base
Run Code Online (Sandbox Code Playgroud)

B. 一旦我们找到基本事实,它就会爬回递归“堆栈”:

3 Sum(0, []), Total = 0 % we start at our base fact
2 Sum(1, …
Run Code Online (Sandbox Code Playgroud)

recursion prolog

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

Node.js:如何顺序运行异步代码

我有这段代码

User.find({}, function(err, users) {
    for (var i = 0; i < users.length; i++) {
        pseudocode
        Friend.find({
            'user': curUser._id
        }, function(err, friends) * * ANOTHER CALLBACK * * {
            for (var i = 0; i < friends.length; i++) {
                pseudocode
            }
            console.log("HERE I'm CHECKING " + curUser);
            if (curUser.websiteaccount != "None") {
                request.post({
                    url: 'blah',
                    formData: blah
                }, function(err, httpResponse, body) { * * ANOTHER CALLBACK * *
                        pseudocode
                    sendMail(friendResults, curUser);
                });
            } else {
                pseudocode
                sendMail(friendResults, curUser);
            }
        }); …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js

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

模拟节点模块的问题

我正在使用superagent来支持反应应用程序中的一些XHR服务.我在superagent上写了一个非常薄的包装器,使配置更容易.试图测试这个薄层已经证明是非常令人头痛的问题.

我知道jest和节点核心依赖性存在问题,我可以dontMock通过superagent的依赖关系来完成工作.但我更喜欢让jest只是模拟superagent而不会在默认情况下爆炸.

结果是unMockedModulePatterns我的package.json中有一个非常详细的测试介绍或输入,有更好的方法吗?

// my-module.js
'use strict';

var request = require('superagent');

module.exports = function () {
  return request.get('http://stackoverflow.com/questions/tagged/jestjs');
};
Run Code Online (Sandbox Code Playgroud)

一个示例测试:

// __tests__/my-module-test.js
'use strict';

jest.dontMock('../');
// T_T
jest.dontMock('superagent');
jest.dontMock('debug');
jest.dontMock('tty');
jest.dontMock('util');
jest.dontMock('stream');
jest.dontMock('fs');
jest.dontMock('delayed-stream');
jest.dontMock('mime');
jest.dontMock('path');

describe('mymodule', function () {
  var myModule, request;

  beforeEach(function () {
    myModule = require('../');
    request = require('superagent');

    request.get = jest.genMockFunction(function () {
      return {
        get: jest.genMockFunction()
      }
    })
  });

  it('makes an xhr request using superagent', …
Run Code Online (Sandbox Code Playgroud)

node.js jestjs

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

一种以角度方式绑定到对象的方法

我想在指令的属性之间进行单向(非一次)绑定,但我正在努力解决如何在没有指令的情况下表达这一点attrs.$observe.我现在能想出的最好的方法是绑定&attr并调用我在模板中绑定的变量,例如{{attr()}}

app.controller('MainCtrl', function($scope) {
  $scope.names = ['Original'];
  setTimeout(function () {
    $scope.names.push('Asynchronously updated name');
    $scope.$apply();
  }, 1000);
});

app.directive('helloComponent', function () {
  return {
    scope: {
      'names': '&names'
    },
    template: '<li ng-repeat="name in names()">Hello {{name}}</li>'
  }
});
Run Code Online (Sandbox Code Playgroud)

 <body ng-controller="MainCtrl">
    <ul>
      <hello-component names="names"/>
    </ul>
  </body>
Run Code Online (Sandbox Code Playgroud)

Plunker

有没有更好的方法来保留单向绑定而不需要调用绑定属性?

编辑

我已经更新了示例代码,以阐明我想绑定到一个对象,而不仅仅是一个字符串.所以@attr(使用字符串属性)不是解决方案.

javascript angularjs

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

iTerm2 触发铃声

每当我收到铃声字符时,我想触发一个动作。

目前我有一个触发器作为\a正则表达式和“弹跳停靠图标”作为操作。当我echo \a可以看到视觉铃声通知,但触发器不会弹起停靠图标。我究竟做错了什么?

iterm2 首选项

iterm2

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

更改 lein repl 提示文本

当我运行时,lein repl我得到了一个精彩的交互式 REPL,并显示以下提示

user=>
Run Code Online (Sandbox Code Playgroud)

我碰巧在应用程序上使用 lein repl (作为控制台),我希望有类似的东西:

user(<environment>)=>

;; e.g. when run in production:
user(PRODUCTION)=>
Run Code Online (Sandbox Code Playgroud)

当它用于访问环境中的 repl/控制台时。

clojure leiningen read-eval-print-loop

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

分块字符串向量

我正在尝试将长度不均匀的字符串的向量分块为长度相等的字符串的向量。我想到的最懒惰的方法是将参数连接到字符串中,将chars转换为向量,然后使用Vec::chunks。不幸的是,我遇到了尝试将大块收集成字符串的问题。

let args: Vec<String> = ["123", "4", "56"].iter().map(|&s| s.into()).collect();

let result: Vec<String> = args
    .join(" ")
    .chars()
    .collect::<Vec<_>>()
    .chunks(2)
    .map(|c| c.collect::<String>())
    .collect::<Vec<String>>();

assert_eq!(["12", "34", "56"], result);
Run Code Online (Sandbox Code Playgroud)

结果错误:

let args: Vec<String> = ["123", "4", "56"].iter().map(|&s| s.into()).collect();

let result: Vec<String> = args
    .join(" ")
    .chars()
    .collect::<Vec<_>>()
    .chunks(2)
    .map(|c| c.collect::<String>())
    .collect::<Vec<String>>();

assert_eq!(["12", "34", "56"], result);
Run Code Online (Sandbox Code Playgroud)

rust

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