小编Sil*_*ier的帖子

Babel和ES6出现意外的"Uncaught TypeError:XXX不是构造函数"错误

我正在尝试Webpack,并尝试了本教程中的说明,给出或采取一些自定义的东西.

这是一个简单的代码,真的,但我对这个错误感到很困惑,觉得这是我错过的傻事.

我定义了两个ES6类,分别对应于把手模板,我的应用程序的入口点应该替换占位符HTML通过其内容的索引文件:

入口点:

import './bloj.less'

// If we have a link, render the Button component on it
if (document.querySelectorAll('a').length) {
    require.ensure([], () => {
        const Button = require('./Components/Button.js');
        const button = new Button('9gag.com');

        button.render('a');
    }, 'button');
}

// If we have a title, render the Header component on it
if (document.querySelectorAll('h1').length) {
    require.ensure([], () => {
        const Header = require('./Components/Header.js');

        new Header().render('h1');
    }, 'header');
}
Run Code Online (Sandbox Code Playgroud)

指数:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <h1>My title</h1>
    <a>Click me</a>

    <script …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 webpack babeljs

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

如何只筛选出与Java顺序流中的谓词不匹配的第一个元素?

我在Java流操作中遇到了边缘情况......

我想编码以下行为:"从任意一篮子水果中收集20个最小的,除了最小的梨,因为我们不希望这样."

额外的奖励:来的篮子可能根本没有任何梨.

例子 :

  • 从[Pear 5,Apple 1,Apple 2,Apple 10,Pear 3,Pear 7]开始,我们需要[Apple 1,Apple 2,Pear 5,Pear 7,Apple 10].
  • 从[Apple 4,Apple 7,Pear 8,Pear 2,Pear 3]开始,我们想要[Pear 3,Apple 4,Apple 7,Pear 8].

到目前为止,我正迈出这一步:

output = basket.stream()
    .sorted(Comparator.comparing(Fruit::getSize))
    //.filter(???)
    .limit(20)
    .collect(fruitCollector);
Run Code Online (Sandbox Code Playgroud)

这似乎是状态 lambda过滤器的情况,我不知道该怎么做.

我不能使用局部firstPear布尔值并true在过滤第一个梨之后将其设置为,因为lambda中的所有局部变量必须是final.

最糟糕的情况我可以将篮子分成两个,梨和非梨,对梨进行分类,如果有的话,适当地对它们进行子目录.这似乎非常低效和丑陋.有没有更好的办法?


[编辑]答案比较

这里发布的答案有很多种,而且大多数都是有效的.为了回馈社区,我整理了一个小测试工具来比较这些算法的性能.

这种比较并没有我想要的那么广泛 - 已经有3周了.它仅涵盖简单项目的顺序处理的用法.随意提供测试工具,并添加更多测试,更多基准或您自己的实现.

我的分析:

Algorithm                | Author   | Perf | Comments
--------------------------------------------------------------------------------
Indexed removal          | Holger   | Best | Best overall, somewhat obscure
Stateful predicate       | pedromss | Best …

java filtering java-8 java-stream

17
推荐指数
4
解决办法
915
查看次数

如何使用某些LatLng在Google地图上放置标记,而不是绘制多边形?

大约一个星期前,我遇到了一个问题:在自定义谷歌驱动的地图上,我的多边形不会显示,而相同坐标的标记完全没问题.尽管我使用Google Maps API,但似乎无法找到原因.

这是指向地图截图的链接.紫色箭头和数字是我的补充,他们表示:

  1. google.maps.Marker我可以把我的"区域"的边缘.
  2. google.maps.Polygon代码生成的工件.它是预期的红色,但完全不合适并且奇怪地平坦.

以下是生成标记和多边形的代码部分:

var regionData = tecMap.regions[r];
var regionMapMarkers = new google.maps.MVCArray();

for (c in regionData.coords) {
    var point = projection.worldToMap(regionData.coords[c]);
    debugRegionPoints.push(point);
    var thisLatLng = projection.fromPointToLatLng(point);
    debugRegionLatLngs.push(thisLatLng);
    regionMapMarkers.push(thisLatLng);
}

regionMapMarkers.forEach(function(latLng, m){
    var marker = new google.maps.Marker({       
        position: latLng,
        map: map, 
        title: '',
        optimized: false
    });
    regionCorners.push(marker);
});

var paths = new google.maps.MVCArray();
paths.push(regionMapMarkers);

var region = new google.maps.Polygon({
    fillColor: "#FF0000",
    fillOpacity: 0.35,
    map: map,
    paths: paths,
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 2 …
Run Code Online (Sandbox Code Playgroud)

javascript google-maps polygon projection google-maps-api-3

12
推荐指数
1
解决办法
1693
查看次数

如何在表上执行CREATE TRIGGER时删除默认DEFINER?

我正在推出一些软件的更新,其中包括运行SQL脚本来创建触发器.

在我的.sql文件语法中,我没有包含任何DEFINER子句,因为我希望我的客户的生产MySQL用户(他们自己设置)能够在程序运行时执行这些触发器.

事实是,测试显示MySQL自动为TRIGGER创建了一个DEFINER 'CURRENT_USER'@'%'.当你做了明智的事情,并使用(受限制的)帐户进行日常数据操作而另一个用于大更新(root?)时,你最终会尝试与一个或多个没有权限的用户一起执行TRIGGER去做吧.

有没有办法删除这个"自动添加定义"功能?

我尝试进入,DEFINER = '%'@'%'但这是不被接受的.

mysql triggers

7
推荐指数
1
解决办法
3367
查看次数

工厂模式:创建bean时验证输入(Guice/Guava)

我正在编写一个新的应用程序,使用Guice进行依赖注入,以及Guava的属性验证前置条件.

我正在使用工厂模式根据外部输入创建bean.问题是,验证输入的首选方法什么?(在可维护性,清晰度等方面)

我们假设这些类:

Bean.java

public interface Bean {

    public Object getFoo();

}
Run Code Online (Sandbox Code Playgroud)

BeanImpl.java

public class BeanImpl implements Bean {

    private final Object foo;

    public BeanImpl(Object param) {
        foo = param;
    }

    @Override
    public String getFoo() {
        return foo;
    }

}
Run Code Online (Sandbox Code Playgroud)

我想检查"param"是否包含"foo"的有效值:

Preconditions.checkArgument(SomeValidator.isValid(param), "Bad param: %s!", param);
Run Code Online (Sandbox Code Playgroud)

我应该在哪里做,为什么?

  • 在BeanImpl的构造函数中?(我不确定为什么,但在构造函数中添加检查感觉是个坏主意.)
  • 在调用BeanFactory.create(param)之前?(听起来像是可怕的代码重复.)
  • 通过一些我不知道的Guice机制?

java validation factory guice

7
推荐指数
1
解决办法
699
查看次数

如何将标头或参数添加到使用Selenium Webdriver处理的HTTP请求中?

我正在使用Selenium Webdriver进行Web应用程序的单元测试.它在JUnit测试中使用尽管广泛阅读可用文档并搜索,我找不到一种方法:

  • 将标头添加到驱动程序传递的HTTP请求中.
  • 向这样的请求添加参数,就好像驱动程序在提交表单后获得了目标URL一样.

可以创建一个具有适当形式的测试网页,并让Webdriver反弹以自动获取这些参数,但这是一个非常难看的黑客.我想避免它,特别是为了测试原子性.(这是单元测试.)

在Wendriver之前,我使用Spring的MockHttpServletRequest和MockHttpServletResponse来做这个,它就像一个魅力,但我想利用Webdriver的强大功能来断言目标页面的内容.

java post junit selenium webdriver

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

Selenium RC:如何单击表格列中的项目

假设我有一个表包含许多行,这些行是未知的.exp column1 column2 column3 xxx yyy"搜索个人资料"

每行的Column3包含一个链接"搜索配置文件",现在很清楚,此链接的xpath将根据该行进行更改.现在我想搜索第2列中的字符串,如果存在则需要单击它的column3链接.有人可以告诉我如何搜索并点击它吗?

selenium selenium-rc

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

Java NIO2 中临时文件中 Files.copy 上的 AccessDeniedException

我正在习惯 Java 7 和新Files类。

我正在编写一个小型应用程序,它在某些时候必须替换文件的内容。我使用临时文件来避免在出现问题时删除目标文件。AccessDeniedException但是,在执行实际副本时我总是收到。

这是我的代码:

// Temporary file generation.
Path target = getCurrentConfigFile(); // Returns a path, works ok.
Path tempFile = Files.createTempFile("tempfile", null);
Files.write(tempFile, conf.getBytes(Charset.defaultCharset()), StandardOpenOption.WRITE);

// Actual copy.
Files.copy(tempFile, target, StandardCopyOption.REPLACE_EXISTING);

// Cleanup.
Files.delete(tempFile);
Run Code Online (Sandbox Code Playgroud)

getCurrentConfigFile()处理目标文件路径创建:

(... generates various strings from configuration parameters)
return FileSystems.getDefault().getPath(all, these, various, strings);
Run Code Online (Sandbox Code Playgroud)

当我执行代码时,它是通过.bat脚本执行的,并且我在标准命令提示符或提升中都会收到错误。目标文件位于C:\temp\tests我使用同一 Windows 用户创建的目录中。

问题似乎在于从临时文件中读取,因为直接写入目标是有效的。接下来我该看哪里?

java permissions file nio2

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

来自 Maven 的参数化 Angular CLI 构建调用(Eirslett 的插件)

我正在构建一个打包在 WAR 静态资源中的 Java Web 应用程序。这些静态资源是通过 Angular-CLI 构建的。

Maven 构建通过 Eirslettmaven-frontend-plugin使用 npm 脚本和 npm mojo触发 ng 构建。

问题是,我想base href根据 Maven 构建参数使用自定义,但我没有设法通过环境变量或参数将它传递给 ng。

有人能告诉我如何从 Maven 将参数传递给 ng 构建吗?

代码:

pom.xml

                 <plugin>
                    <groupId>com.github.eirslett</groupId>
                    <artifactId>frontend-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>node install</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>install-node-and-npm</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>npm install</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>npm</goal>
                            </goals>
                            <configuration>
                                <arguments>--registry=${npm.internal.registry} --userconfig ${basedir}/.jenkins-npmrc install</arguments>
                            </configuration>
                        </execution>
                        <execution>
                            <id>npm build</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>npm</goal>
                            </goals>
                            <configuration>
                                <arguments>--userconfig ${basedir}/.jenkins-npmrc run-script build</arguments>
                                <environmentVariables>
                                    <test>this-does-not-work</test>
                                </environmentVariables>
                            </configuration>
                        </execution>
                        <execution>
                            <id>npm test</id>
                            <phase>test</phase> …
Run Code Online (Sandbox Code Playgroud)

maven angular-cli maven-frontend-plugin

5
推荐指数
0
解决办法
3837
查看次数

当缺少子类的方法实现时,是否存在标准异常?

语境:

我有一个抽象类SuperClass,它有大量的子类,每个子类在不同的业务对象上工作,但是以类似的方式.

我需要添加一些肯定在其中占有一席之地的新功能SuperClass,但是它将依赖于特定于子类的属性,我需要在超类方法中获得它.这里显而易见的方法是SuperClass为属性添加一个抽象getter ,并让每个子类覆盖它,以便它可以在调用时发送正确的属性.

问题是:由于担心回归,我不允许更改其他子类的代码而不是我正在处理的子代码.

所以我不能添加抽象方法,因为其他子类不再编译.

由于现在只有我正在处理的对象需要这个新功能,所以我可以在其中声明一个标准的非抽象方法SuperClass,然后返回null.然后在我正在处理的子类中覆盖它,并且瞧.

题:

如果没有在Javadoc中正确读取我的警告的人试图从另一个子类调用这个新方法,那么由于getter没有被正确覆盖,它将产生意外的结果.我认为抛出异常对于我的同事们来说更优雅和有用,而不是返回null(和意外的结果)SuperClass.

我可以定义一个定制的异常,但是在"标准"异常中做了什么YouForgotToImplementSomethingException或者PleaseReadTheJavadocException存在什么?

编辑:

Error按答案中的建议投掷并不是我非常喜欢的东西,但也许在这里模仿编译器的行为是有意义的吗?对此的想法?

java methods exception

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

使用Java中的一个元素访问Map的键值对

我的一个方法返回一个Map<A,B>. 在一些明确标识的情况下,映射只包含一个键值对,实际上只是两个对象的包装器。

是否有一种高效/优雅/清晰的方式来访问键和值?迭代单元素条目集似乎有点过分。我正在寻找可以降低维持这一点的人所需的脑力的东西,例如:

(...)
// Only one result.
else {
    A leKey = map.getKey(whicheverYouWantThereIsOnlyOne); // Is there something like this?
    B leValue = map.get(leKey); // This actually exists. Any Daft Punk reference was non-intentional.
}
Run Code Online (Sandbox Code Playgroud)

编辑:我最终选择了下面的@akoskm 解决方案。最后,在没有迭代的情况下做到这一点的唯一令人满意的方法是使用 a TreeMap,而开销使它变得不合理。

事实证明并不总是有灵丹妙药,特别是因为用它杀死一只非常小的兔子。

java readability map

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

如何在Software Collections环境中控制ruby-devel的存在

我目前正在尝试在Centos 6.6机器上构建一个Ruby应用程序.通过软件集合安装了不同的Ruby堆栈.请注意,我的机器上没有root,我的权限有限,特别是它们不包括软件包安装.

本机扩展不构建.它似乎ruby-devel缺失了,但管理员告诉我它已正确安装两个堆栈:

dnf install rh-ruby22-ruby-devel.x86_64 ruby193-ruby-devel.x86_64 -y
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

bob@server ~> scl enable rh-ruby22 bash
bash-4.1$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux-gnu]

bash-4.1$ gem install json Building native extensions.  This could take a while... ERROR:  Error installing json:
        ERROR: Failed to build gem native extension.

    /opt/rh/rh-ruby22/root/usr/bin/ruby -r ./siteconf20150625-17536-saskmd.rb extconf.rb mkmf.rb can't find header files for ruby at /opt/rh/rh-ruby22/root/usr/share/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in ~/.gem/ruby/gems/json-1.8.3 for inspection. Results logged to ~/.gem/ruby/extensions/x86_64-linux/json-1.8.3/gem_make.out …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems centos software-collections

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