小编Ada*_*deg的帖子

使用argparse获取selected子命令

当我使用python argparse的子命令时,我可以得到所选的参数.

parser = argparse.ArgumentParser()
parser.add_argument('-g', '--global')
subparsers = parser.add_subparsers()   
foo_parser = subparsers.add_parser('foo')
foo_parser.add_argument('-c', '--count')
bar_parser = subparsers.add_parser('bar')
args = parser.parse_args(['-g, 'xyz', 'foo', '--count', '42'])
# args => Namespace(global='xyz', count='42')
Run Code Online (Sandbox Code Playgroud)

所以args不包含'foo'.sys.argv[1]由于可能的全局参数,简单编写不起作用.如何获取子命令本身?

python command-line argparse

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

Clojure Web框架的比较

Clojure有一些Web框架

还有一些用于处理某些Web开发子任务的库,例如

  • 活跃于模板
  • 打算进行模板化
  • 处理与请求/响应较低层次的东西
  • ClojureQL用于持久化(但它看起来并不活跃)

还有数百个Java库可供使用.某些方面,已经讨论过在这里他们两个的比较了一下.

我想知道这些框架/组件在成熟度,范围,开发的容易程度,Django/RoR感觉等方面的比较.

comparison frameworks clojure web-frameworks

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

使用常春藤的公共maven存储库

我有一个ivy.xml包含

<dependencies>
  <dependency org="commons-lang" name="commons-lang" rev="2.4"/>
  <dependency org="foo-bar" name="superwidgets" rev="1.5"/>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

整个superwidget内容托管在http://example.com/m2/的maven存储库中.常春藤文档提到了解析器,但它似乎假设一个常春藤存储库.如何将单个非官方maven存储库添加到我的常春藤设置中,仅供单个模块使用?(或换句话说,什么对应<repository>于常春藤中maven的标签?)没有什么花哨的,所以我希望在我的ivy.xml中有一个单行程.

maven-2 ivy artifactory

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

在Groovy中以惯用方式获取列表的第一个元素

让代码先发言

def bars = foo.listBars()
def firstBar = bars ? bars.first() : null
def firstBarBetter = foo.listBars()?.getAt(0)
Run Code Online (Sandbox Code Playgroud)

是否有更优雅或惯用的方式来获取列表的第一个元素,如果不可能则为null?(我不会在这里考虑优雅的试试块.)

groovy list idiomatic

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

单元测试与测试之间的依赖关系

你有什么时候做单元测试

  • 一些一般的单元测试
  • 更复杂的测试检查边缘情况,取决于一般情况

举个例子,想象一下测试一个CSV阅读器(我刚刚编写了一个演示符号),

def test_readCsv(): ...

@dependsOn(test_readCsv)
def test_readCsv_duplicateColumnName(): ...

@dependsOn(test_readCsv)
def test_readCsv_unicodeColumnName(): ...
Run Code Online (Sandbox Code Playgroud)

我希望只有在父测试成功的情况下才能运行子测试.这背后的原因是运行这些测试需要时间.许多失败的报告可以归结为一个原因也不会提供信息.当然,我可以把所有边缘情况都塞进主要测试中,但我想知道是否有更有条理的方法来做到这一点.

我发现了这些相关但不同的问题,

更新:

我发现TestNG具有很强的内置支持测试依赖性.你可以写这样的测试,

@Test{dependsOnMethods = ("test_readCsv"))
public void test_readCsv_duplicateColumnName() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

python unit-testing code-organization

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

如果功能语言真的很简洁,为什么他们在语言枪战游戏中没有更好的排名呢?

只用它们的代码大小来比较语言枪战游戏中的语言.以下是我得到的摘要(最短的,按类似得分分组).

  1. Python,Ruby,JavaScript,Perl,Lua,PHP,Mozart/OZ
  2. OCaml,Erlang,Racket,Go,Scala,F#,Smalltalk
  3. Pascal,Clean,Haskell,Common Lisp,C#,Java,C
  4. C++,Ada,ATS

我想知道为什么.获奖者似乎是普通的动态语言.Erlang,Racket(néePLTScheme)和F#都做得很好.Haskell和Common Lisp看起来并不比声称要冗长的Java更简洁.

更新:

我用图表找到了关于这个主题的深刻见解.我还发现了一个类似的语言对比较大的程序(一个简单的光线跟踪器).总而言之,我不会说我得到了"答案",但我得到了一些思考.

comparison programming-languages functional-programming code-size

23
推荐指数
3
解决办法
6628
查看次数

版本控制压缩文件(docx,odt)

有些格式实际上是伪装的zip文件,例如docx或odt.如果我将它们直接存储在版本控制中,它们将作为二进制文件处理.我理想的解决方案是

  • 有一个钩子,在提交之前foo.docx/为每个foo.docx文件创建一个目录,将所有文件解压缩到其中
  • 可选地,有一个钩子来重新连接xml文件
  • 有一个钩子,foo.docx可以在更新后从存储的文件中重新创建

我不希望docx文件本身受版本控制.(我知道一个相关的问题,建议使用自定义差异的不同方法.)

这可行吗?这可以用mercurial吗?

更新:

我知道钩子.我对细节很感兴趣.这是一个演示预期行为的会话.

> hg add foo.docx
> hg status
A foo.docx
> hg commit
> # Change foo.docx with external editor
> hg status
M foo.docx
> hg diff
+++ foo.docx/word/document.xml
- <w:t>An idea</w:t>
+ <w:t>A much better idea</w:t>
Run Code Online (Sandbox Code Playgroud)

version-control mercurial zip openoffice.org docx

20
推荐指数
2
解决办法
4280
查看次数

hg充当Windows服务

我想在Windows服务器上使用mercurial.因为我想通过http来拉和推,这hg serve似乎是最简单的解决方案.它工作正常,但我在每次重启后重新启动它,所以我需要它作为Windows服务.手动安装它sc create ...不起作用,它创建了一个服务,当我尝试启动它时会引发错误.我发现了一些对这个问题的引用

但如果有的话,他们的记录很差.(当然,我可以安装一个Web服务器并使用hgweb,但它看起来更复杂.)您是否有任何经验如何轻松设置hg serve ... <many args>为Windows服务?

更新:感谢您采用不同的方法.我们住在一起hg serve,我们公司的windows-guy设法安装它作为一个不太合适的服务.

windows service mercurial

15
推荐指数
3
解决办法
5043
查看次数

如何只记录一次重复警告

有一种模式偶尔会发生.我有一个多次调用的方法,它包含以下代码段:

Foo foo = getConfiguredFoo();
if (foo == null) {
  logger.warn("Foo not configured");
  foo = getDefaultFoo();
}
Run Code Online (Sandbox Code Playgroud)

然后我的日志文件被这个警告混乱了一百次.我知道我可以grep把它拿出来,但我想知道是否有更好的方法只能看到这个警告一次.

注意:默认情况下,重复邮件是正确的行为,因此这不是为了避免无意的重复日志消息.我将我的问题标记为log4j,但我对其他java日志框架持开放态度.

java logging warnings log4j

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

在Intellij IDEA中执行保存文件的命令

我想在保存文件时运行脚本.(这是git-wip的自动git提交).它与IntelliJ IDEA中的保存操作有关,但它主要吸引了有关代码重新格式化的答案.3年前也问过这个问题.我找到的唯一片段是http://arhipov.blogspot.hu/2011/04/code-snippet-intercepting-on-save.html.所以我想知道事情是否已经改变,现在很容易添加一个保存钩子.

intellij-idea

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