小编Kev*_*son的帖子

如何在命令行上设置log4j级别?

我想在我正在处理的类中添加一些log.debug语句,并且我希望在运行测试时在输出中看到它.我想在命令行上覆盖log4j属性,如下所示:

-Dlog4j.logger.com.mypackage.Thingie=DEBUG
Run Code Online (Sandbox Code Playgroud)

我经常这样做.我特别感兴趣的是在命令行上传递它的方法.我知道如何使用配置文件来完成它,这不适合我的工作流程.

java log4j

62
推荐指数
6
解决办法
9万
查看次数

如何在coffeescript中的特定范围内声明变量?

我正在尝试在coffeescript中编写一个使用beforeEach块的茉莉花测试.这遇到了coffeescript的变量范围问题.这是我想写的:

describe 'PhoneDetailCtrl', () ->
  beforeEach () ->
    scope = angular.scope()
    $browser = scope.$service('$browser')

  it 'should fetch phone detail', () ->
    scope.params = {phoneId:'xyz'}
    $browser.xhr.expectGET('phones/xyz.json').respond({name:'phone xyz'})
    ctrl = scope.$new(PhoneDetailCtrl)

    expect(ctrl.phone).toEqualData({})
    $browser.xhr.flush()

    expect(ctrl.phone).toEqualData({name:'phone xyz'})
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为scope$browservar在最里面的范围内声明.也就是说,一旦进入beforeEach,然后又在it块中.我可以通过初始化来强制在正确的范围内声明变量,但这看起来很奇怪:

describe 'PhoneDetailCtrl', () ->
  $browser = {}
  scope = {}
  beforeEach () ->
    scope = angular.scope()
    $browser = scope.$service('$browser')

  it 'should fetch phone detail', () ->
    scope.params = {phoneId:'xyz'}
    ...
Run Code Online (Sandbox Code Playgroud)

这可行,但它编译的JavaScript实际上是

describe('PhoneListCtrl', function() {
  var $browser, …
Run Code Online (Sandbox Code Playgroud)

coffeescript jasmine

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

如何表达maven对Java ee功能的依赖以转换到Java 9?

我们使用maven并拥有依赖于其他内部工件的工件.我正在迁移到,并且打算首先将所有内容迁移到Java 9而不模块化代码(即在未命名的模块中).

我遇到的问题是我们依赖java.xml.bind,现在不包含在默认模块中.是否有一种"正确"的方式来表达对java.xml.bindMaven的依赖?

java jaxb maven java-platform-module-system java-9

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

是否有StringUtils.isNumeric的替代方法,我的意思是什么?

StringUtils.isNumeric为""返回true,为7.8返回false.这当然是记录在案的行为,但对我来说真的不是最方便的.是否有其他东西(理想情况下在commons.lang中)提供了isActuallyNumeric?

java apache-commons

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

秘密握手反模式

我刚刚遇到过一种我以前见过的模式,并希望得到它的意见.有问题的代码涉及这样的接口:

public interface MyCrazyAnalyzer {
    public void setOptions(AnalyzerOptions options);
    public void setText(String text);
    public void initialize();
    public int getOccurances(String query);
}
Run Code Online (Sandbox Code Playgroud)

预期的用法是这样的:

MyCrazyAnalyzer crazy = AnalyzerFactory.getAnalyzer();
crazy.setOptions(true);
crazy.initialize();
Map<String, Integer> results = new HashMap<String, Integer>();
for(String item : items) {
    crazy.setText(item);
    results.put(item, crazy.getOccurances);
}
Run Code Online (Sandbox Code Playgroud)

有一些原因是有原因的.setText(...)和getOc​​curances(...)就在那里,因为在对数据进行相同的昂贵分析之后,您可能想要做多个查询,但这可以重构为结果类.

为什么我认为这是如此糟糕:实现是以一种接口无法清楚指示的方式存储状态.我也看到类似的涉及需要调用"prepareResult"的接口,然后是"getResult".现在,我可以想到使用其中一些功能的精心设计的代码.Hadoop Mapper接口扩展了JobConfigurable和Closeable,但我看到了一个很大的不同,因为它是一个使用实现这些接口的用户代码的框架,而不是可能有多个实现的服务.我认为任何与包括必须被调用的"关闭"方法有关的事情都是合理的,因为没有任何其他合理的方法来做到这一点.在某些情况下,就像JDBC一样,这是抽象漏洞的结果,但在我想到的两段代码中,很明显是程序员急忙在意大利面条代码类中添加一个接口来清理它的结果.

我的问题是:

  1. 大家都认为这是一个设计不佳的界面吗?
  2. 这是一种描述的反模式吗?
  3. 这种初始化是否属于接口?
  4. 这对我来说只是错了,因为我偏爱功能风格和不变性吗?

如果这足以得到一个名字,我建议界面的"秘密握手"反模式,当界面本身不具有状态时(如集合),强制您以特定顺序调用多个方法.

java anti-patterns

8
推荐指数
1
解决办法
1453
查看次数

简单的情感分析

看来,进行基本情感分析的最简单,最天真的方法是使用贝叶斯分类器(通过我在SO上找到的内容证实).有任何反驳或其他建议吗?

nlp bayesian

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

如何防止Intellij将Scala警告视为错误?

我正在尝试使用混合Java/Scala项目的Intellij.构建失败,出现以下错误:

错误:scala:/home/kevin/ij/backend/srctest/com/example/package/DoStuffTest.java:35:警告:[弃用] com.example.package中的OldStuffList已被弃用

我无法找到任何与将警告视为错误相关的设置.我希望将这些报告为警告(因为它们确实是警告),但不能阻止构建完成.

scala intellij-idea

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

有没有一种简单的方法来匹配使用Hamcrest的字段?

我想测试一个对象的特定字段是否与我指定的值匹配.在这种情况下,它是S3Bucket对象内的存储桶名称.据我所知,我需要为此编写一个自定义匹配器:

mockery.checking(new Expectations() {{
  one(query.s3).getObject(with(
      new BaseMatcher<S3Bucket>() {
        @Override
        public boolean matches(Object item) {
          if (item instanceof S3Bucket) {
            return ((S3Bucket)item).getName().equals("bucket");
          } else {
            return false;
          }
        }
        @Override
        public void describeTo(Description description) {
          description.appendText("Bucket name isn't \"bucket\"");
        }
      }), with(equal("key")));
    ...
    }});
Run Code Online (Sandbox Code Playgroud)

如果有更简单的方法可以做到这一点会很好,例如:

mockery.checking(new Expectations() {{
  one(query.s3).getObject(
    with(equal(methodOf(S3Bucket.class).getName(), "bucket")),
    with(equal("key")));
    ...
}});
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我这样的事情吗?我想在这种情况下我已经解决了我的问题,但这不是我第一次想要更简单的方法.

java unit-testing hamcrest jmock

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

使用 Java 9 模块,多个模块是否能够导出相同的包?

我正在尝试使用适合 Java 9 模块系统的最佳实践,这样我就可以减少工作量来获得好处(我们的系统现在真的可以从一些模块化中受益)。

在当前标准下,模块 A 导出包 com.example.foo 和模块 B 导出包 com.example.foo 是否允许?

作为一个相关的问题,如果相关的话,是这一点是否真正得到解决,或者它是否仍然不是最终的。

java java-9 java-module

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

如何在不破坏字体大小的情况下使桌面和移动设备上的网页可读?

我希望能够以可用于桌面和移动设备的方式格式化我的博客,而无需尝试检测移动浏览器.作为网络标准的粉丝,我认为如果我只使用基本的HTML而没有任何样式,那么它应该是可用的,但事实证明iPhone和Android浏览器都使用微小的文本进行渲染(显然要复制布局)在桌面浏览器上看到).

我知道我可以使用媒体查询和其他十几种技术来获得我想要的移动浏览器外观.我很想知道是否有办法让移动浏览器以设备默认字体大小显示某些内容而不使用font-size:20pt; 在样式表中.有没有"是的,这只是简单的HTML,所以不要试图假装你有桌面浏览器的宽度"?

html css mobile

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