小编Gre*_*ill的帖子

python:重启循环

我有:

for i in range(2,n):
    if(something):
       do something
    else:
       do something else
       i = 2 **restart the loop
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.有没有办法重新启动该循环?

谢谢

python loops

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

Jar文件命名约定

是否有任何行业标准约定命名jar文件?

java jar naming-conventions

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

Findbugs警告:Equals方法不应该假设其参数的类型

在我的项目上运行FindBugs时,我得到了一些上述错误的实例.

也就是说,我的重写版本的equals将RHS对象强制转换为与定义覆盖版本的对象相同的类型.

但是,我不确定是否可以使用更好的设计,因为AFAIK Java不允许方法参数的变化,因此无法为equals参数定义任何其他类型.

我做错了什么,还是FindBugs太急切了?

用这句话来表达的另一种方法是:如果传递给equals的对象与LHS的类型不同,那么正确的行为是什么:这是假的,还是应该有异常?

例如:

public boolean equals(Object rhs)
{
    MyType rhsMyType = (MyType)rhs; // Should throw exception
    if(this.field1().equals(rhsMyType.field1())... // Or whatever
}
Run Code Online (Sandbox Code Playgroud)

java findbugs equals

19
推荐指数
2
解决办法
9430
查看次数

在Windows上配置Git以使用NTLM代理身份验证

我正在尝试从需要NTLM身份验证的代理后面的Windows机器访问Github上的存储库.SSH和git://协议都不是直接可用的,所以我试图通过代理使用HTTPS.

没有密码NTLM代理的帮助下?我已经能够curl使用msysgit提供的二进制文件与代理一起使用:

curl -U : --proxy-ntlm --proxy xxx.xxx.xx.xx:8080 https://github.com
Run Code Online (Sandbox Code Playgroud)

这是成功的并返回Github主页.

但是,我发现了一篇来自2010年2月Proxying Git的文章(强调我的):

不幸的是,curl似乎总是使用代理进行基本身份验证.如果您的代理需要其他东西,可能是Windows网络的NTLM,那么您就遇到了问题.Curl用于处理所有http传输细节,这确实支持NTLM身份验证方法,但我知道没有方法可以将必要的选项传递给curl.Git通过其库绑定使用curl,因此不应该只使用包装器脚本替换curl可执行文件.

我知道core.gitproxyGit配置中的选项,但似乎只适用于git://协议.同样,该http.proxy选项设置代理的地址,但无法提供适当的卷曲选项.

git proxy ntlm msysgit

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

如何在Perl中区分嵌套列表运算符中的$ _?

使用嵌套数组操作实现算法通常很有用.例如,要查找列表中以每个给定字符开头的单词数,您可以在Python中执行以下操作:

>>> a = ["foo","bar","baz"]
>>> map(lambda c: len(filter(lambda w: w.startswith(c), a)), ('a','b','c','d','e','f'))
[0, 2, 0, 0, 0, 1]
Run Code Online (Sandbox Code Playgroud)

在表达式中w.startswith(c),区分两个循环迭代变量w并且c因为它们具有不同的名称是微不足道的.

在Perl中,我想做这样的事情:

@a = ("foo", "bar", "baz");
map length(grep $_ =~ /^$_/, @a), ('a','b','c','d','e','f')
Run Code Online (Sandbox Code Playgroud)

然而,这个问题的明显问题$_是仅涉及最里面的 grep迭代变量(适用于$_左侧),而不是外部的map(适用于/^$_/).在Perl中避免此问题的惯用方法是什么?

arrays perl map

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

如何将JUnit Ant任务配置为仅在失败时生成输出?

我在Ant中配置JUnit,以便在每个构建上运行单元测试.我希望失败测试的输出在运行时打印在Ant控制台输出中.我不需要看到后续测试的任何输出.

这是我的build.xml文件的相关位:

<junit>
    <classpath>
        <pathelement path="${build}"/>
    </classpath>
    <formatter type="brief" usefile="false"/>
    <batchtest>
        <fileset dir="${src}" includes="my/tree/junit/"/>
    </batchtest>
</junit>
Run Code Online (Sandbox Code Playgroud)

这几乎产生了我想要的东西,Ant输出中详细说明了失败的测试,除了成功的测试还写了以下输出:

    [junit] Testsuite: my.tree.junit.ExampleTest
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.002 sec

我相信我已经尝试了JUnit任务文档中列出的所有组合,包括:

  • printsummary 属性
  • showoutput 属性
  • formatter 各种各样的元素 type

我的用例是ant从命令行运行的.当我编写更多测试时,我不希望后续测试的输出如此之大,以至于失败测试的输出会滚出屏幕.ant除非有一个需要我注意的失败测试,​​否则我只想保持安静.如何配置Ant/JUnit来执行此操作?

我使用的是Ant 1.6.4和JUnit 4.6.

java ant junit

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

如何使用背包算法[而不仅仅是包的价值]找到包中的元素?

我有一个代码,通过背包算法计算最佳值(bin packing NP-hard problem):

int Knapsack::knapsack(std::vector<Item>& items, int W)
{
    size_t n = items.size();
    std::vector<std::vector<int> > dp(W + 1, std::vector<int>(n + 1, 0));
    for (size_t j = 1; j <= n; j++)
    {
        for ( int w = 1; w <= W; w++)
        {
            if (items[j-1].getWeight() <= w)
            {
                dp[w][j] = std::max(dp[w][j-1], dp[w - items[j-1].getWeight()][j-1] + items[j-1].getWeight());
            }
            else
            {
                dp[w][j] = dp[w][j - 1];
            }
        }
    }
    return dp[W][n];
}
Run Code Online (Sandbox Code Playgroud)

另外,我需要显示包含在内的元素.我想创建一个数组,添加一个元素.所以问题在于添加这个添加的步骤,或者可能还有其他更有效的方法吗?

问题:我希望能够了解为我提供最佳解决方案的项目,而不仅仅是最佳解决方案的价值.

PS.对不起我的英语,这不是我的母语.

c++ algorithm knapsack-problem

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

是否有一个gcc标志来初始化本地变量存储?

IBM AIX xlc编译器提供了一个标志,用于生成初始化本地变量存储的代码:

      initauto=<hh>
                  Initialialize automatic storage to <hh>. <hh> is a
                  hexadecimal value.  This generates extra code and
                  should only be used for error determination.
Run Code Online (Sandbox Code Playgroud)

我认为MSVC编译器对调试版本做了类似的事情,但在这一点上我的内存可能很模糊.

海湾合作委员会是否有同等选择权?

c gcc local

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

将Git子模块转换为子树后合并错误

我有一个项目,我最初使用子模块的一些相关代码.事实证明,子模块并不适合这个项目(并且它们在实践中很难使用),因此我将每个子模块转换为子树(使用新git-subtree功能).

在我的工作存储库中,我已经成功删除了每个子模块,并将旧的子模块repo添加为子树.没问题.

当我转到另一个克隆并尝试从第一个克隆拉出时,我从合并步骤中收到以下错误:

error: The following untracked working tree files would be overwritten by merge:
        sub/.gitignore
        sub/Makefile
        sub/README
        sub/src/main.c
        ... and so on for all files in sub/
Aborting
Run Code Online (Sandbox Code Playgroud)

看来这是因为sub/首先在主存储库中从未真正存在过文件,并且当Git应用补丁进行更新时,.gitmodules它不会删除带有子模块文件的目录.当处理下一次提交时,Git尝试在其中创建新文件sub/,现在它们主存储库的一部分,所有这些文件都与仍然存在的文件冲突sub/.

我发现的解决方法是使用rm -rf sub之前git pull,这可以避免这个问题.

我的问题是,是否有任何命令行开关我可以使用git merge"覆盖工作目录中恰好存在的任何文件"?更好的方法是git merge查看现有文件的内容,如果内容与它要创建的文件完全相同,则禁止显示错误消息并继续.

更新:我已经创建了演示此问题的Git存储库,以准确显示我正在谈论的内容.重现:

$ git clone https://github.com/ghewgill/q14224966.git
$ cd q14224966
$ git submodule init
$ git submodule update
$ git merge origin/branch
Run Code Online (Sandbox Code Playgroud)

这应该导致错误消息

error: …
Run Code Online (Sandbox Code Playgroud)

git merge git-submodules git-subtree

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

与Gerrit一起使用时如何为Git配置特定的上游push refspec?

我正在使用Gerrit Code Review设置Git,并且正在寻找一种方法,为可能不熟悉Git的用户提供必要的Git命令.

我目前用于启动新功能分支的命令基本上是(假设Gerrit是origin):

git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
Run Code Online (Sandbox Code Playgroud)

这将启动一个新的工作包work1234从一些baseline分支,最后的推动在Gerrit中创建分支并设置上游.所以.git/config看起来像:

[branch "work1234"]
        remote = origin
        merge = refs/heads/work1234
Run Code Online (Sandbox Code Playgroud)

现在,Gerrit希望将新的提交审查推送到特殊的refspec,refs/for/work1234例如.我可以手动执行以下操作:

git push origin work1234:refs/for/work1234
Run Code Online (Sandbox Code Playgroud)

我想要做的是找到一些设置方法,.git/config以便plain git push将当前分支推送到Gerrit所需的远程refspec.我看过以下几个git config方面:

  • branch.<name>.* - 似乎没有任何特定的选项来设置push refspec
  • push.default- 我想要upstream在这里
  • remote.<name>.push- 我refs/heads/*:refs/for/*在这里试过但git push总是想在这种情况下推送所有本地分支,而我只想要当前的分支

如果我不能让Git的本身做到这一点,我会写一个小包装脚本,完全指定refspecs.但是,如果Git能够本地推向正确的位置会更好.

git push gerrit refspec

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