小编arn*_*nab的帖子

Scala的代码覆盖率工具

Scala有哪些可用的代码覆盖率工具?

我有Scala规范测试和Hudson持续集成设置.有什么东西可以挂钩到这个设置来测量和跟踪代码覆盖率?

continuous-integration unit-testing scala code-coverage hudson

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

将Scala Set转换为Java(java.util.Set)?

我在Scala中有一个Set(我可以选择任何实现,因为我正在创建Set.我正在使用的Java库需要一个java.util.Set [String].

以下是在Scala中执行此操作的正确方法(使用scala.collection.jcl.HashSet#underlyinges):

import com.javalibrary.Animals

var classes = new scala.collection.jcl.HashSet[String]
classes += "Amphibian"
classes += "Reptile"
Animals.find(classes.underlying)
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,但由于我是Scala的新手,我想知道这是否是首选方式(我尝试的任何其他方式都会出现类型不匹配错误):

error: type mismatch;
 found   : scala.collection.jcl.HashSet[String]
 required: java.util.Set[_]
Run Code Online (Sandbox Code Playgroud)

scala type-conversion scala-2.8 scala-java-interop scala-collections

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

对于RSpec中的测试期望,哪种风格,lambda ...应该或期望...?

我看到两种风格都被广泛使用:#1 lambda { raise "Boom" }.should raise_error和#2 expect { raise "Boom" }.to raise_error.我喜欢期待..因为它读得更好并且隐藏了proc的创建.

我看了一下rspec代码,似乎期待..来建议,但我经常遇到使用lambda ... should的库.期待..更新,因此不是"着名的"呢?

ruby rspec rspec2

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

Emacs:打开大型仓库中的任何文件

我需要的

一种快速/ git高效的方式来打开large()repo(〜9.8k文件)下的任何文件.

上下文

我尝试了各种解决方案,比如Textmate.elfind-file-in-repository.我通过之前的SO问题找到了这些解决方案,例如thisthis以及LocateFilesAnywhere EmacsWiki.

虽然这两种解决方案都适用于小型到mdeium回收,但在这种情况下,它们几乎无法使用.当我开始输入文件名时,在看到任何结果之前有几秒钟的延迟.而改变搜索的任何部分也非常滞后.

我认为主要问题是在键入任何字符时,emacs/ find-file-in-repository启动一个shell命令(git ls-files...).当我停止打字时,我真的只需要这样做.

问题

  • 这个用例有没有更好的图书馆?
  • 如果没有,当我打字时如何在命令中引入延迟?也就是说,当我进入时find-file-in-repository,我希望只有在我停止输入时才调用find-command(比如说300ms的间隙).

emacs

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

如何使Ruby的Find.find遵循符号链接?

我有一个文件层次结构,一些子目录是相对符号链接.我正在使用RubyFind.find来抓取这些目录并找到一些特定的文件.然而,它不会查看任何符号链接的目录(它遵循符号链接的文件).

看看源代码似乎问题是因为它File.lstat(file).directory?用于测试某些东西是否是目录.这将返回false符号链接但File.stat.directory?返回true.

我如何制作Find.find跟随符号链接,缺少猴子修补它File.stat而不是File.lstat

ruby symlink find

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

在Go中初始化一个2d动态数组

我想在Go中创建一个2d数组:

board := make([][]string, m)
for i := range board {
    board[i] = make([]string, n)
}
Run Code Online (Sandbox Code Playgroud)

但是,鉴于其详细程度,我想知道是否有更好或更简洁的方法来处理这个问题(要么生成动态数组,要么使用不同/惯用的数据结构来处理这样的棋盘游戏数据)?


背景:

  • 这是一个棋盘游戏
  • 在用户开始播放之前,不知道电路板的尺寸(例如,MxN).
  • 我想在每个单元格中存储任意字符(或单个字符串).在我的TicTacToe游戏中,它将是'X'或'O'(或用户选择的任何其他角色).

arrays go multidimensional-array dynamic-arrays

9
推荐指数
3
解决办法
6892
查看次数

Ruby Regular Expression中的符号组名称(如Python中)

在Python中遇到了这个方便的正则表达式实用程序(我是Python的初学者).例如,使用正则表达式

(?P<id>[a-zA-Z_]\w*)
Run Code Online (Sandbox Code Playgroud)

我可以将匹配的数据称为

m.group('id')
Run Code Online (Sandbox Code Playgroud)

(完整文档:在这里查找"符号组名称" )

在Ruby中,我们可以使用$1, $2或使用MatchData对象(m[1], m[2]等)访问匹配的引用.在Ruby中有类似于Python的Symbolic Group Names吗?

ruby python regex

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

如何在Kotlin的Map实例上使用`filter`?

我看到在#filter上定义了它Map,但是我不知道如何使用它。有人愿意分享一个例子吗?

我有一个深度嵌套的TreeMap实例(TreeMap<String, Map<String, Map<*, *>>>),我想要filter/find第一个(这是该域中唯一的)顶级键,该键具有某些与值更深的内容相关的特征。

数据如下所示:

{
  "i1": {
    "aliases": {}
  },
  "i2": {
    "aliases": {}
  },
  "i3": {
    "aliases": {}
  },
  "i4": {
    "aliases": {
      "alias-im-looking-for": {}
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我有以下以下非功能性代码可立即解决该问题:

val indexToAliasMappingType = LinkedTreeMap<String, Map<String, Map<*, *>>>()
val indexToAliasMappings = Gson().fromJson(response.jsonString, indexToAliasMappingType.javaClass)

var currentIndexName = ""
for ((index, aliasMappings) in indexToAliasMappings) {
    val hasCurrentAlias = aliasMappings.get("aliases")?.containsKey(alias)
    if (hasCurrentAlias != null && hasCurrentAlias) {
        currentIndexName = index
    }
}

return currentIndexName
Run Code Online (Sandbox Code Playgroud)

java functional-programming gson kotlin

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

我的emacs/slime设置有什么问题(编译和加载/ eval无法正常工作)?

我可以运行emacs并启动slime(with M-x slime).此时,我在劣质lisp缓冲区中获取REPL 并可以在那里运行lisp.但是,当我在另一个缓冲区没有粘液,善良作品(的开拓Lisp代码C-x C-e,C-c C-k等等),我一直在看到这个消息的缓冲区(用编码器脉冲数数):

粘连:未连接.

轮询 "/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202" ..(中止与`的Mx煤泥中止连接".)[69倍]

让我觉得slime没有连接到正确的lisp解释器,但由于我对emacs和lisp很新,我被困在这里.我的设置是:

lisp emacs installation common-lisp slime

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

弹性搜索数据的蓝/绿“部署”?

我计划从网页中提取(基本上是在获得许可的情况下抓取)一些数据并将其存储在 elasticsearch 中(您知道,用于搜索)。

虽然我有权从网站上抓取数据,

  • 此数据没有 API 或其他结构化来源
  • 它是直接手动编写成 HTML 的
  • 没有唯一标识符可以区分一个条目与另一个条目(我基本上将从 DOM 中提取大约 1,000-5,000 个条目)。

当我将其存储在 es 中时,我计划将其放入一个索引和映射类型中,例如thing.

但是,随着时间的推移,源(HTML 网页)可能会随着它们添加/删除/更改其中一些条目的内容而发生变化。由于源中没有标识符,我无法轻松识别新的(更糟糕的是,已删除或已更改的)。

我想让我的 es 索引保持最新,我在想的是某种蓝绿色机制:

  • 我根据源更改的速度按某个计划(每天/每周)运行提取过程
  • 每次运行该进程时都会生成另一个索引(或者可能是一个新的集群)。假设当前索引是index-prod,进程构建的新索引是index-rc(候选发布)
  • index-rc基于一些启发式进行验证(对条目数量的灵活速度检查、我们知道应该工作的示例查询等)
  • 如果它是有效的,它要么:
    • A. 慢慢地将查询翻转到新的集群/索引中
    • 或 B. 一次性翻转到新的集群/索引

我计划使用AWS Elastisearch Service托管elasticsearch集群,并且可能会使用Route 53 CNAMEs (也许是 ELB?)来制作一些东西,但我想知道 elasticsearch 本身是否有更隐式的支持来这样做?

本质上,我想将一个索引的数据交换为另一个。

deployment amazon-web-services elasticsearch blue-green-deployment

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

Clojure:循环浏览一个集合,同时循环浏览另一个集合?

我有两个集合x,并y均具有不同数量的项目.我想在循环中循环x并做一些有副作用的事情y.y循环时我不想重复x.双方doseqfor重复y:

(for [x (range 5)
      y ["A" "B"]]
  [x y])
Run Code Online (Sandbox Code Playgroud)

这产生了([0 "A"] [0 "B"] [1 "A"] [1 "B"] [2 "A"] [2 "B"] [3 "A"] [3 "B"] [4 "A"] [4 "B"]).

我想要的是会产生的东西:([0 "A"] [1 "B"] [2 "A"] [3 "B"] [4 "A"]).

背景,我有来自文件和core.async频道的行(比如5),我想把每一行放到我的集合中的下一个频道,如:

(defn load-data
  [file chans]
  (with-open [rdr (io/reader file)]
    (go
      (doseq [l (line-seq rdr)
              ch chans] …
Run Code Online (Sandbox Code Playgroud)

clojure core.async

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

如何在Kotlin中无限懒惰地循环列表?

我有一个列表,directions并希望在我向右或向左转弯时找到下一个方向.这是我的工作代码:

enum class Turn { R, L }
enum class Direction { N, E, S, W }
val directionsInRightTurnOrder = listOf(Direction.N, Direction.E, Direction.S, Direction.W)

private fun calculateNextHeading(heading: Direction, turn: Turn): Direction {
    val currentIndex = directionsInRightTurnOrder.indexOf(heading)
    var nextIndex = currentIndex + if (turn == Turn.R) 1 else -1
    if (nextIndex >= directionsInRightTurnOrder.size)
        nextIndex = directionsInRightTurnOrder.size - nextIndex
    if (nextIndex < 0)
        nextIndex += directionsInRightTurnOrder.size

    return directionsInRightTurnOrder.get(nextIndex)
}
Run Code Online (Sandbox Code Playgroud)
  1. 但是,如果我可以获取directionsInRightTurnOrder列表并无限地(并且懒洋洋地)遍历它,那么这将更加简单和易于阅读.在Clojure中,我可以使用clojure.core/cycle来做到这一点:
(take 5 (cycle ["a" "b"]))
# …
Run Code Online (Sandbox Code Playgroud)

clojure lazy-sequences kotlin

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