小编Ale*_*lec的帖子

AngularJS:自动检测模型的变化

假设我想在模型的值发生变化时自动运行一些代码(比如将数据保存到服务器).通过ng-change在每个控件上设置可能会改变模型的东西,这是唯一的方法吗?

即,通过视图,随着模型的更改,事情会发生变化,而不必明确地将任何内容挂起.是否能够运行保存到服务器的代码?就像是

myModel.on('change', function() {
  $.post("/my-url", ...);
});
Run Code Online (Sandbox Code Playgroud)

就像你可能会看到像骨干这样的东西.

javascript angularjs

103
推荐指数
2
解决办法
14万
查看次数

持续多线f弦的风格

任何流行的Python风格指南都表达了以下偏好:

x = (f'One plus one is '
     f'equal to {1+1}')
Run Code Online (Sandbox Code Playgroud)

和:

x = ('One plus one is '
     f'equal to {1+1}')
Run Code Online (Sandbox Code Playgroud)

省略f不涉及插值的行的前缀是否有意义?它是否应该包含在一致性中?

python python-3.6

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

执行"最后[秒/分钟/小时]"数据结构的命中

我认为这是一个相当常见的问题,但我似乎无法通过谷歌搜索找到答案(也许有一个更准确的名称,我不知道的问题?)

您需要使用"hit()"方法实现一个结构,该方法用于报告命中和hitsInLastSecond | Minute | Hour方法.你有一个具有纳秒准确度的计时器.你如何有效地实现这一目标?

我的想法是这样的(在psuedo-C++中)

class HitCounter {
  void hit() {
    hits_at[now()] = ++last_count;
  }

  int hitsInLastSecond() {
    auto before_count = hits_at.lower_bound(now() - 1 * second)
    if (before_count == hits_at.end()) { return last_count; }
    return last_count - before_count->second;
  }

  // etc for Minute, Hour

  map<time_point, int> hits_at;
  int last_count = 0;
};
Run Code Online (Sandbox Code Playgroud)

这有用吗?好吗?有更好的东西吗?

更新:添加修剪并根据评论切换到双端队列:

class HitCounter {
  void hit() {
    hits.push_back(make_pair(now(), ++last_count));
  }

  int hitsInLastSecond() {
    auto before = lower_bound(hits.begin(), hits.end(), make_pair(now() - 1 * second, -1));
    if …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm data-structures

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

使用共享地图的不错的,惯用的方式

假设我有一个可以并发访问地图的程序,如下所示:

func getKey(r *http.Request) string { ... }

values := make(map[string]int)

http.HandleFunc("/get", func(w http.ResponseWriter, r *http.Request) {
  key := getKey(r)
  fmt.Fprint(w, values[key])
})

http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
  key := getKey(r)
  values[key] = rand.Int()
})
Run Code Online (Sandbox Code Playgroud)

这很糟糕,因为地图写入是非原子的.所以我可以使用读/写互斥锁

func getKey(r *http.Request) string { ... }

values := make(map[string]int)
var lock sync.RWMutex

http.HandleFunc("/get", func(w http.ResponseWriter, r *http.Request) {
  key := getKey(r)
  lock.RLock()
  fmt.Fprint(w, values[key])
  lock.RUnlock()
})

http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
  key := getKey(r)
  lock.Lock()
  values[key] = rand.Int()
  lock.Unlock() …
Run Code Online (Sandbox Code Playgroud)

concurrency go

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

Golang:在报告格式错误时从stdin读取内容直到EOF

nums := make([]int, 0)
{
    var d int
    for {
        _, err := fmt.Scan(&d)
        if err != nil {
            break
        }

        nums = append(nums, d)
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以从stdin中读取整数.但是如果stdin看起来像1 2 3 f4 5,nums最终会[1 2 3]报告没有任何错误.

处理这个问题的最佳方法是什么?(即,我希望EOF fmt.Scan以静默方式退出循环,但应报告所有其他错误).

编辑:io.EOF我只需要 - 我没有在http://golang.org/pkg/fmt/上找到

nums := make([]int, 0)
{
    var d int
    for {
        _, err := fmt.Scan(&d)
        if err != nil {
            if err != io.EOF {
                log.Fatal(err)
            }
            break
        }

        nums …
Run Code Online (Sandbox Code Playgroud)

go

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

以平台无关的方式查找libpython的路径(例如,在cmake中使用)

是否有任何平台独立的方式来获取python安装的libpython的路径,用作cmake参数?sysconfig.get_config_var给出了一些部分,但是没有一致的方法可以使这个工作.

在OSX上:

  • 没有变量包含库的实际基名(libpython2.7.dylib)
  • sysconfig.get_config_var('LIBDIR') 返回libpython2.7.dylib所在的目录(/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib)
  • 编辑:当sysconfig报告符号链接时以及报告实际路径时,似乎存在一些差异.LIBDIR确实包含libpython.2.7.dylib,但我刚注意到的是这是/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/Python的符号链接.

    INSTSONAME 指向Python.framework/Versions/2.7/Python,该路径的基本名称,但没有变量我可以找到指向该路径的父部分的点.

在Ubuntu上:

  • sysconfig.get_config_var('INSTSONAME') 给我一个库的名称(libpython2.7.so.1.0).
  • 没有变量包含它所在的目录(/ usr/lib/x86_64-linux-gnu /).
    • LIBDIR 仅返回/ usr/lib

python cmake

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

Angular.js正在观看函数调用的结果

以下代码段是否有任何表面上的问题:

  <ul id="entry-name" class="breadcrumb">
      <li ng-repeat="dir in pathElements()" class="active">
          <span ng-show="!$last">
              &nbsp;<a href="#!?path={{dir.url}}">{{ dir.name }}</a>&nbsp;<span ng-show="!$first" class="dividier">/</span> 
          </span>
      </li>
      <li class="active">{{ pathElements()[pathElements().length - 1].name }}</li>
  </ul>
Run Code Online (Sandbox Code Playgroud)

用这个js:

  $scope.pathElements = function() {
      var retval = [];
      var arr = $scope.currentPath().split('/');
      if (arr[0] == '') {
          arr[0] = '/';
      }

      var url = "/";
      retval.push({name: arr[0], url: url});
      for (var i = 1; i < arr.length; ++i) {
          if (arr[i] != '') {
              url += arr[i] + '/';
              retval.push({name: arr[i], url: url}); …
Run Code Online (Sandbox Code Playgroud)

angularjs

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

静态互斥分析

使用静态检查互斥锁正确性的语言是否明智?也就是说,

var m
var x guarded_by(m)

func f1() {
  lock(m)
  x = 42
  unlock(m)
}

func f2() {
  x = 42  // error, accessing x w/o holding its mutex
}

func f3() assumes_locked(m) {
  x = 42
}

func b1() {
  f3()  // error
}

func b2() {
  lock(m)
  f3()
  unlock(m)
}
Run Code Online (Sandbox Code Playgroud)
  1. 这可能吗?也就是说,可以通过一些简单的注释来静态验证互斥锁的正确性吗?
  2. 这是明智的吗?这是一个坏主意吗?
  3. 有没有这种内置的语言?

concurrency mutex language-design

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

unique_ptr所有权语义

也许我试图过于通用.(下面的原始问题)具体来说,我有Dep一个类的依赖Foo.我也有一个班级MockDep,我正在定义一个班级TestFoo.这是我试图写的构造函数:

TestFoo(unique_ptr<MockDep> dep) : Foo(std::move(dep)), mock_dep_(dep.get()) {}
Run Code Online (Sandbox Code Playgroud)

Foo构造函数看起来像:

Foo(unique_ptr<Dep> dep) : dep_(dep) {}
Run Code Online (Sandbox Code Playgroud)

mock_dep_被指定TestFooMockDep* mock_dep_,并被dep_声明Foounique_ptr<Dep> dep_.我怎样才能mock_dep_包含dep_地址?(由于上述因为std::move(dep)空值而无效dep.)


原帖:

我有一个类型的对象Foo,我将传递给另一个类型的对象OtherObject声称它的所有权,但作为指向其基类的指针.但是,我想抓住一个指向我可以用来引用它的子对象的指针.我写了类似的东西:

Foo(std::unique_ptr<Child> thing) :
    OtherObject(std::move(thing)), child_(thing.get()) {}

OtherObject(std::unique_ptr<Base> thing, ...) { ... }
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用,因为std::move(thing)似乎使从thing.get()后面返回的指针无效.

我可以将Foo参数更改为类型Child*而不是unique_ptr<Child>,但我更愿意能够执行后者,因为它明确记录了所有权语义.

什么是最合适(或失败,不引人注目)的解决方法?

编辑:Foo并且 …

c++ smart-pointers ownership-semantics unique-ptr

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

有什么方法可以在将功能分支重新建立到另一个分支后安全地删除它吗?

当功能分支重新基于 origin/master 而不是合并时,如何安全地删除它的本地副本。我知道我可以git branch -D,但我想避免盲目这样做,让 git 告诉我哪些分支可以安全删除。

例如:我有功能分支my-feature,我将其推送到origin/my-feature,制作 PR,然后origin/my-feature重新基于origin/master,然后删除。不过,本地my-feature仍然存在。* 有什么方法可以检测到那里的更改已有效包含在中吗origin/master

git diff origin/master...my-feature不起作用,因为共同的祖先origin/master没有改变。检查是否git diff origin/master..my-feature为空有效,但只能在变基后立即进行。如果任何其他更改在我的基础上重新建立,这将显示这些更改。

有没有办法删除远程版本已被删除的本地分支?(但不是从未有远程版本的本地分支)。或者,如果我避免删除origin/my-feature,那么我可以在本地做些什么来安全地删除两者origin/my-featuremy-feature

* 如果我足够自律,我会尽量记住在删除远程分支后立即删除本地分支,但有时我会忘记。

git version-control github git-rebase

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