小编San*_*gen的帖子

<div>不能作为<p>的后代出现

我看到了这个.它抱怨的是什么并不神秘:

Warning: validateDOMnesting(...): <div> cannot appear as a descendant of <p>. See ... SomeComponent > p > ... > SomeOtherComponent > ReactTooltip > div.
Run Code Online (Sandbox Code Playgroud)

我的作者SomeComponentSomeOtherComponent.但后者正在使用外部依赖(ReactTooltip来自react-tooltip).这可能不是必需的,这是一个外部依赖,但它让我尝试这里的论点,它是"一些不受我控制的代码".

考虑到嵌套组件工作得很好(貌似),我应该多担心这个警告?无论如何我都会如何改变它(假设我不想重新实现外部依赖)?有没有更好的设计,我还没有意识到?

为了完整起见,这里是实现SomeOtherComponent.它只是呈现this.props.value,并在悬停时:一个工具提示,上面写着"一些工具提示消息":

class SomeOtherComponent extends React.Component {
  constructor(props) {
    super(props)
  }

  render() {
    const {value, ...rest} = this.props;
    return <span className="some-other-component">
      <a href="#" data-tip="Some tooltip message" {...rest}>{value}</a>
      <ReactTooltip />
    </span>
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

reactjs

59
推荐指数
10
解决办法
6万
查看次数

如何规避"apt-key输出不应该被解析"?

我正在自动化我的Docker安装.像这样的东西:

if apt-key fingerprint 0EBFCD88 | grep "Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88" > /dev/null
then
  # proceed
fi
Run Code Online (Sandbox Code Playgroud)

这在旧版本中运行良好apt-key,但最近的版本有两个问题:

  1. 一种不同的输出格式:我可以解决这个问题
  2. 一个警告:

    Warning: apt-key output should not be parsed (stdout is not a terminal)
    
    Run Code Online (Sandbox Code Playgroud)

显然,我也可以解决这个问题,只需重定向stderr即可/dev/null.这让我很好奇:

这些好人如何建议我验证我的关键指纹?或者我想通过自动化来解决这个根本错误,这是否会破坏这一点?(我想不是,因为我仍然手动从网站上取消了预期的指纹,但随时可以告诉我......)

apt gnupg

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

ProxyPreserveHost似乎对我没什么用

我在网上看到很多人指的是ProxyPreserveHost On确保代理后端接收原始呼叫者的主机名.我使用它来收紧我的Web应用程序的安全性(Java,Tomcat),如果我的日志显示用户实际所在的位置也会很好.我的Tomcat日志现在显示了这个 - 相当无用:

127.0.0.1 - - [17/Mar/2013:06:32:13 +0100] "GET /webapp/frontend/app/partials/welcome.html HTTP/1.1" 200 54
Run Code Online (Sandbox Code Playgroud)

这是我的配置,显然不能按预期工作:

"/ 000-缺省的/ etc/apache2的/启用的站点 - "

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /webapp http://localhost:8080/webapp
ProxyPassReverse /webapp http://localhost:8080/webapp
RewriteEngine On
RewriteRule ^/$            /webapp/frontend/app/ [proxy]
RewriteRule ^/webapp/$     /webapp/frontend/app/ [redirect]
RewriteRule ^/webapp/app/$ /webapp/frontend/app/ [redirect]
Run Code Online (Sandbox Code Playgroud)

(从这里开始的默认内容000-default)

启用模块:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)

这是运行Apache HTTPD 2.2.22的Ubuntu 12.10.

非常感谢您的帮助.

apache mod-proxy

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

强制执行两个Maven配置文件中的一个

我有一个Maven项目,它定义了两个独立的配置文件,developer并且release(当然你得到了漂移,这里).我想要随时激活这两个配置文件中的一个,但绝不会同时激活.如果两者都以某种方式被激活,那么这个构建没有意义,应该失败.如果两者都没有被激活,那么这个构建也没有意义,应该失败.

我确信我可以编写一些自定义插件代码来实现这一点,我可能最终会这样做,但我有兴趣使用POM配置(可以使用Maven Central的现有插件)来实现这一点.

应该可以使用-P(--activate-profiles)激活插件,因此<activation>通过属性不是有效的解决方案.使用的解决方案activeByDefault也无效,因为activeByDefault通常称为陷阱,不可靠(我们实际上可能激活其他配置文件,因此activateByDefault无法使用).

您的建议非常感谢.

maven maven-profiles

10
推荐指数
3
解决办法
3453
查看次数

Java方法花了很多时间我无法解释

使用JProfiler,我发现我的Java代码中有一个我无法理解的热点.JProfiler解释说这种方法平均需要150μs(674μs,没有预热),不包括调用后代方法所需的时间.150μs可能看起来不多,但在这个应用程序中,它加起来(并且我的用户经验丰富)并且看起来也很多,相比之下看起来比我更复杂的其他方法.因此对我来说很重要.

private boolean assertReadAuthorizationForFields(Object entity, Object[] state,
        String[] propertyNames) {
    boolean changed = false;
    final List<Field> fields = FieldUtil.getAppropriatePropertyFields(entity, propertyNames);
    // average of 14 fields to iterate over
    for (final Field field : fields) {
        // manager.getAuthorization returns an enum type
        // manager is a field referencing another component
        if (manager.getAuthorization(READ, field).isDenied()) {
            FieldUtil.resetField(field.getName(), state, propertyNames);
            changed = true;
        }
    }
    return changed;
}
Run Code Online (Sandbox Code Playgroud)

我为自己最小化了这个方法在不同的方向,但它从来没有教我很多有用的.我不能强调足够了JProfiler的报告的持续时间(150μs),仅为在此方法的代码,并且不包括需要执行的时间getAuthorization,isDenied,resetField并且这样的.这也是为什么我开始只是发布这个片段,没有太多的上下文,因为问题似乎是这个代码,而不是它后续的后代方法调用.

也许你可以争论为什么 - 如果你觉得我看到鬼魂:)无论如何,谢谢你的时间!

java reflection performance jprofiler

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

|1 在 Docker 历史中意味着什么

鉴于此Dockerfile

FROM debian:8.3
ARG TEST=123
RUN echo $TEST
Run Code Online (Sandbox Code Playgroud)

|1Docker 历史上的代表什么?

$ docker history 2feee0d8320f
IMAGE               CREATED              CREATED BY                                      SIZE                COMMENT
2feee0d8320f        About a minute ago   |1 TEST=123 /bin/sh -c echo $TEST               0 B
ac4872d0de0b        About a minute ago   /bin/sh -c #(nop)  ARG TEST=123                 0 B
f50f9524513f        9 months ago         /bin/sh -c #(nop) CMD ["/bin/bash"]             0 B
<missing>           9 months ago         /bin/sh -c #(nop) ADD file:b5391cb13172fb513d   125.1 MB
Run Code Online (Sandbox Code Playgroud)

docker

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

包 io.swagger.v3.oas.annotations.media 不存在 (Swagger Codegen)

我在 gradle 中使用 swagger codegen cli 工具(版本 3.0.25)生成一个 java 客户端:

task doCodeGenSdk(type: JavaExec) {
main = "io.swagger.codegen.v3.Codegen"
classpath = configurations.codeGenCli
inputs.files file("${swaggerSpecDir}/*.json")
outputs.dir file("${codeGenDirSdk}")
args = ["generate", "--lang", "java", "--input-spec", "${swaggerSpecFile}",
        "--config", "${swaggerConfig}",
        "--template-dir", "${swaggerTemplateDir}",
        "--output", "${codeGenDirSdk}"]
systemProperty "apiTests", "false"
systemProperty "apiDocs", "false"
systemProperty "modelTests", "false"
systemProperty "modelDocs", "false"}
Run Code Online (Sandbox Code Playgroud)

swagger配置文件如下所示:

{
"library": "resttemplate",
"artifactVersion": "__VERSION__",
"artifactId": "__ARTIFACT_ID__",
"modelPackage": "com.model",
"apiPackage": "com.api",
"invokerPackage": "com.invoker",
"dateLibrary": "java8",
"apiTests": false,
"java8": true,
"serializableModel": true,
"useBeanValidation": true,
"performBeanValidation": true}
Run Code Online (Sandbox Code Playgroud)

模板目录具有以下胡子文件:

ApiClient.mustache, generatedAnnotation.mustache, licenseInfo.mustach, pojo.mustache …
Run Code Online (Sandbox Code Playgroud)

java gradle swagger swagger-codegen

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

Stripe 支付服务不会使用其 API 自动通过电子邮件向客户发送创建的发票

我使用 stripe API (Java) 创建发票,并将参数计费添加为“Send_invoice”,并且发票创建良好,正如文档所说,这将通过电子邮件向客户发送付款说明,但这种情况不会发生(客户不会通过创建的发票自动通过电子邮件发送),仅当手动单击发票的发送按钮时,发票才会发送给客户。这种情况发生在测试和实时模式下,所以请我不明白是什么导致创建发票时不会自动向客户发送电子邮件。

stripe-payments

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

嵌入AngularJS视图

我有一个AngularJS应用程序,我认为它基本上是非常典型的(类似于许多示例).

<html ng-app="myApp" ...
<body>
...
    <div class="main" ng-view></div>
    ...
Run Code Online (Sandbox Code Playgroud)

有一个$routeProvider我设置了很多whens来引导用户到一个视图(模板部分与控制器),如:

$routeProvider.when('/incident/:identifier', {templateUrl:'incident.html', controller:"IncidentCtrl"});
Run Code Online (Sandbox Code Playgroud)

这一切都很好.用户可以在视图之间来回切换.

现在,让我们说我有一个"事件"的观点.它有一个具有"事件"属性的表单.(您可以更改表单中的值和"保存",这不是这里的要点.)我有以下要求:

  1. 现有表单下方的"添加工单"按钮
  2. 单击按钮时,表单(部分)将加载到现有表单下方,以输入新"工作单"的详细信息
  3. "保存"按钮作为加载表单(部分)的一部分将保存新的"工单"
  4. 形式(部分)是封闭的,卸载的或至少在视觉上被移除
  5. 可能会回到2.重复(添加后续的"工作单")

对于在现有表单下面加载的表单,我想重用现有的模板部分及其后续控制器,我已经将其用于ng-view其他地方的顶层.但是我走了几条道路来实现这个无济于事; ng-include似乎不起作用,因为它非常静态,并且不允许嵌入式元素的大部分生命周期.此外,似乎很难动态加载它,这意味着它将在点击"添加工单"按钮之前加载.有人能指出我可行的策略吗?显然,我的目标是促进现有模板部分和控制器的重用,而不必总是让用户在视图之间移动.非常感激.


编辑:详细说明:我对目前ng-include为止所见过的任何想法都不满意,因为:

  • 如果我不仅仅有一种嵌入的视图,那么它们会有很多.他们都会在没有充分理由被展示之前得到装载; 矫枉过正
  • 我不知道如何参数嵌入的意见以同样的方式我可以通过$routeParams$routeProvider
  • 我对父母和孩子范围之间过多的共享感到不舒服
  • 我没办法干净地为后续的"添加"重新创建控制器

angularjs

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

Hibernate Envers 获得标准的修订

使用 Hibernate Envers (4.1.9.Final)。尝试获取实体已更改为特定类型且符合特定标准的所有修订(日期、修订号)。

这是我目前拥有的代码:

    AuditReader auditReader = AuditReaderFactory.get(entityManager);
    AuditQuery query = auditReader.createQuery()
            .forRevisionsOfEntity(InventoryItem.class, false, true)
            .add(AuditEntity.property("section_uuid").eq(sectionUuid))
            .addOrder(AuditEntity.revisionNumber().desc());
    List<Object[]> revisions = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
  1. 这将为每个更改返回一个元素InventoryItem。因此,如果InventoryItem在修订版中更改了两个s,我会得到两个元素——我不想要那样。
  2. 这也会返回实际的InventoryItems,我认为这有点沉重——我不想要那样。

如何获得不同的修订集合(日期、修订号)?

java hibernate hibernate-envers

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

在Artifactory中查找/删除单个工件 - 而不是文件

我对Artifactory REST API的使用有疑问.一些指导是有用的.

我正在构建一个运行Artifactory的REST API的脚本.此脚本的目标是查找旧的工件,满足其他一些要求,然后删除它们.(难道每个Artifactory所有者最终都不会构建其中一个吗?)

有一个记录的"Artifacts Not Downloaded Since",它返回一个文件列表.对于"工件",我宁愿期望一些包含多个文件的概念(比如Maven:一个POM和一些JAR).它只返回单个文件的事实让我现在剥离文件名,然后删除整个文件夹.

  1. 查询返回:https://.../repository/api/storage/libs-snapshot-local/com/x/y/1.0.0-SNAPSHOT/y-1.0.0-SNAPSHOT.jar
  2. 我剥离:https://.../repository/api/storage/libs-snapshot-local/com/x/y/1.0.0-SNAPSHOT/
  3. 我删除了剥离的文件夹.

我害怕有问题的文件夹包含最近下载的其他文件(POM文件或该文件夹中的其他文件),但现在仍然被删除.

为什么REST API不会在工件级别(GAV级别)上报告这些内容?

对于Docker存储库一个相关的问题,"Not Notloaded Since"在什么时候考虑子容器?或者是否有一种方法可以用来删除标签,Artifactory会自动删除相关但未使用的图像/图层文件?

artifactory

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