小编Pie*_*nry的帖子

使用IntelliJ或WebStorm中的生成器调试JS的更好方法

我正在使用Koa框架在Node JS中开发webapp.

所有流量控制都是使用生成器完成的,而不是回调.代码看起来是顺序的,但实际流程不是.无论如何,它看起来比回调地狱更清洁.

这是一个用koa编写的控制器函数的简单示例:

function *findUserById(userId)
{
    var user = yield getUserOrError404(userId);
    yield loadAdditionalData(user);
    yield data.users.save(user);
    return user;
}
Run Code Online (Sandbox Code Playgroud)

但是有一个难点:yield在我的IDE(IntelliJ IDEA)中单步执行代码并不能很好地工作.一旦执行与yield语句一致,如果我只是"跳过",执行流程就会从堆栈上升到koa代码(这实际上不是IDE的错,因为它只跟随生成器的实际执行流程, yield语句和Node事件循环).

目前我必须设置一个断点到我希望调试器暂停的下一个语句,经常是下一行,然后单击"恢复程序"按钮.

当有超过2-3个yield语句时,它会变得乏味.

是否有更好的方法(技巧,插件,......)逐步执行生成器密集的JS代码,允许跳过yield语句,好像它是一个"正常"的顺序语句?

javascript debugging generator intellij-idea node.js

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

如何在three.js中按深度顺序渲染粒子?

免责声明:一般来说,我对three.js、WegGL 和3D 图形比较陌生。

我正在使用 Three.js 以 3D 形式显示 GPS 轨迹中的点。我们必须能够可视化的数据集可能非常大(数十万个点),因此性能非常重要。

我使用一个Points对象,我用一个BufferGeometry包含所有点的对象填充该对象。这些点是按照曲目的顺序添加的,所以按时间顺序。

然后,我们使用PointsMaterial带有 2D 纹理(精灵)的 a 将点表示为一个圆,圆外的区域是透明的。因为颜色是动态的,所以 2D 纹理是动态绘制到画布上的。

问题是,如果我们看轨迹方向上的点,即离相机较远的点是在较近的点之后渲染的点,在点重叠的地方会出现伪影,较近点的透明部分被绘制在更远的点上:

3d 中的点

当我们从另一个方向看轨道时,即从后向前渲染的点,问题就消失了:

在此处输入图片说明

我尝试了以下两个选项来解决该问题:

  • alphaTest0和1之间的一个数值,它样的作品
    • 但是我们的点也可以是部分透明的(这是客户的要求)所以风险是 alphaTest 会剪掉实际应该渲染的点的部分
    • 它会在点重叠的地方创建一个锯齿状边缘,这看起来不太好

3d 中的点

  • 使用depthWrite: false的材料的点,它呈现漂亮,但随后近点总是绘制在旧的无论相机的方向,它看起来奇怪,是错误的

3d 中的点

实际渲染深度 顺序中的点从最远的开始到最近的结束的解决方案是什么

以下是代码的相关部分。

几何的构建。该timeline3d对象包含所有点并来自 XHR 请求:

  const particlesGeometry = new BufferGeometry();
  const vertices = [];

  for (let i = 0; i < timeline3d.points.length; i++) {
    const coordinates = timeline3d.points[i].sceneCoordinates;
    vertices.push(coordinates[0], coordinates[1], coordinates[2]);
  }

  particlesGeometry.addAttribute('position', …
Run Code Online (Sandbox Code Playgroud)

javascript 3d three.js depth-testing

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

为什么在Kotlin中链接.map()和.filter()不能按预期工作?

我试图将对象列表映射到另一种类型的对象列表,然后过滤列表,然后映射到第三种类型的列表,就像我在Java 8+中链接流一样(我更改了类和变量名称,使其更有意义,但结构与我的代码相同):

val results: List<AccountDto> = listOfPersons
                .map { person -> getPersonAccount(person) }
                .filter { account ->
                    if(validateAccount(account)){ // validateAccount is a function with boolean return type
                        // do something here like logging
                        return true
                    }
                    // do something else...
                    return false
                }
                .map { account ->
                     toDto(account) // returns an AccountDto
                }
Run Code Online (Sandbox Code Playgroud)

我在过滤器lambda中的return truereturn false语句上遇到编译器错误:

Error:(217, 32) Kotlin: The boolean literal does not conform to the expected type List<AccountDto>
Run Code Online (Sandbox Code Playgroud)

如果我对过滤谓词使用匿名函数,它编译很好:

.filter (fun(account):Boolean{
                if(validateAccount(account)){ 
                        // do …
Run Code Online (Sandbox Code Playgroud)

functional-programming kotlin java-stream

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

为什么此CREATE TABLE语句导致"ORA-00922缺失或无效选项"?

我使用SQL Developer(工具 - >卸载数据库)从一个Oracle数据库导出了一个模式.它创建了类似于这个的"create table"语句:

CREATE TABLE "APP_USER" 
   (    "ID" NUMBER(*,0), 
    "USERNAME" VARCHAR2(200), 
    "PASSWORD" NVARCHAR2(200), 
    "TYPE" VARCHAR2(20), 
    "FIRST_NAME" VARCHAR2(100), 
    "LAST_NAME" VARCHAR2(100)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "LIS_DATA" ;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在另一个数据库上执行代码时,也是从SQL Developer执行,它会触发"ORA-00922缺失或无效选项".

显然查询的存储部分有问题(以"SEGMENT"开头,以"DEFAULT"结尾),因为如果我删除它就可以了.但究竟是什么呢?

我只是一个恰好与Oracle合作的应用程序开发人员.我对SQL很好,但是这个Oracle存储参数对我来说是个中文.另外我很困惑,SQL Developer生成无效代码......

sql oracle oracle-sqldeveloper

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

没有调用JPA EventListener方法更改为多对多集合?

我使用JPA和Hibernate作为我的Spring webapp中的实现.

我使用EntityListeners进行审计(Spring-data)和其他通知目的.一般来说它工作正常.但是,当对多对多集合/关系进行更改时,如果不对实体本身的任何字段进行任何其他更改,则不会触发s 的@PostUpdate事件EventListener.

举一个具体的例子:我有一个User和一个Role实体,它们之间有多对多关系,使用基础表.如果我转到我的用户管理GUI,并向用户添加(或删除)角色而不更改任何其他内容,则不会触发"postUpdate"事件,不会修改审核信息.

它有一些逻辑(在低级别),因为用户或角色表都没有更新,只有关系表.然而,关系本身并未建模为实体类,因此不可能对其应用审计,至少不是在JPA级别,因此触发实体本身的更改事件是有意义的.

这是正常的JPA行为,还是特定于Hibernate?有没有解决方法?你会怎么做才能触发这个事件?想法?

注意:我发现很少提及这种限制,甚至更少的解决方案: 这个问题(没有有用的答案)和Hibernate论坛上的这篇文章也没有任何答案.

many-to-many hibernate jpa entitylisteners

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

为什么这个 MapStruct 生成的类不包含 import 语句?

我正在使用 MapStruct 在 JPA 实体和 POJO DTO 之间进行映射。

我所有的实体都扩展了一个具有 ID 字段 (a java.lang.Long)的公共基类。

我有以下抽象映射器,它允许我从 JPA 中的关系映射到 DTO 中的简单长字段(或列表)。

实体或List<entity>字段可以映射到Long/List<Long>字段,例如User.groups可以映射到UserDTO.groupIds

@Mapper
public abstract class EntityMapper {

    public Long entityToLongId(AbstractBaseEntity entity){
        return entity.getId();
    }

    public abstract List<Long> entityCollectionToLongIdList(Collection<? extends AbstractBaseEntity> entities);
}
Run Code Online (Sandbox Code Playgroud)

然而,生成的实现类不包含该类的任何导入语句AbstractBaseEntity,尽管它存在于抽象类中,因此代码不会编译:

package ....;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.annotation.Generated;
import org.springframework.stereotype.Component;

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2016-07-27T12:11:25+0200",
    comments = "version: 1.0.0.Final, compiler: javac, environment: …
Run Code Online (Sandbox Code Playgroud)

java mapping dto mapstruct

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

http-proxy-middleware 不转发完整路径

我正在尝试将 BrowserSync 配置为在服务器模式下工作,并使用http-proxy-middleware将我的 API 请求代理到在不同端口的同一台机器上运行的后端。我使用 Gulp 来启动 BrowserSync。

BrowserSync 在端口 8081 上运行。我的后端在 8080 上运行。

这是我创建代理中间件的方法:

var proxyApi = proxy('/api', {target : 'http://localhost:8080/api', logLevel : 'debug'});
Run Code Online (Sandbox Code Playgroud)

这是我从 Gulp 任务运行 BrowserSync 的方式:

// Init BrowserSync with proxies as middleware and based on the dest dir
browserSync.init({
    open: true,
    port: config.proxyPort,
    server: {
        baseDir: config.destDir,
        middleware: [proxyApi]
    },
    browser: "google chrome"
});
Run Code Online (Sandbox Code Playgroud)

输出 :

[HPM] Proxy created: /api  ->  http://localhost:8080/api
Run Code Online (Sandbox Code Playgroud)

一切看起来都不错。

但是当我点击 eg 时http://localhost:8081/api/users,输出是:

[HPM] GET /api/users/123 -> http://localhost:8080/api …
Run Code Online (Sandbox Code Playgroud)

javascript proxy http-proxy node.js browser-sync

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

从哪里获取所有 JavaFX CSS 属性名称的列表?

我正在尝试构建一个CodeMirror模式文件,以便基于原始 CSS 模式为 CSS 的 JavaFX 风格提供正确的语法突出显示和完成帮助。

JavaFX CSS 中,大多数属性与经典 CSS 中的相同,但有些不存在,有些不同,所有属性都以-fx-

所以,例如,

width: 600px;
Run Code Online (Sandbox Code Playgroud)

变成

-fx-width: 600px;
Run Code Online (Sandbox Code Playgroud)

我在哪里可以获得所有现有 JavaFX CSS 属性名称的纯文本列表,以便我可以替换 JavaScript 模式文件中的普通 CSS 属性名称?

注意:如果这样的 CodeMirror 模式文件已经存在,当然会更好。但谷歌在那里没有帮助。

css javafx codemirror javafx-8 codemirror-modes

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

如何在Mapstruct集合映射器中使用装饰方法?

我在使用依赖注入的Spring应用程序中使用MapStruct从JPA实体映射到POJO DTO.

我已经在文档中指定的装饰器中添加了一些DTO处理方法.

它适用于映射单个实体.但是我也有这些实体的集合(集合)的映射,当在关系中找到这些实体的集合时,会自动调用该方法.

但是生成的集合映射方法不使用装饰方法来映射每个实体,只是在委托上使用"vanilla"生成的方法.以下是生成方法的代码:

@Override
public Set<DimensionItemTreeDTO> missionSetToTreeDtoSet(Set<Mission> set)  {
    return delegate.missionSetToTreeDtoSet( set );
}
Run Code Online (Sandbox Code Playgroud)

委托方法本身不知道装饰器并调用单独的项目映射方法:

@Override
public Set<DimensionItemTreeDTO> missionSetToTreeDtoSet(Set<Mission> set) {
    if ( set == null ) {
        return null;
    }

    Set<DimensionItemTreeDTO> set__ = new HashSet<DimensionItemTreeDTO>();
    for ( Mission mission : set ) {
        set__.add( missionToTreeDto( mission ) ); //here the decorator is not called !
    }

    return set__;
}
Run Code Online (Sandbox Code Playgroud)

...并且永远不会为集合中的项目调用装饰方法.

有没有一种方法可以让Mapstruct在集合映射中使用装饰器方法,而不是在我的装饰器中手动编写集合方法(它工作但是很冗长并且无法使MapStruct首先出现的目的是不必写这种代码)?

java decorator mapstruct

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

JavaFX:如何制作一个带有两(2)个或更多图标的按钮?

有很多关于如何将图形添加到JavaFX按钮的在线资源.

但是我想知道是否有办法添加第二个(或任何数字,但在大多数情况下可能没有多大意义的2个以上的图像)图像.

我的用例:我有一个左边有方形图标的按钮,后面是文字标签.图像是按钮与之链接的一些现实生活概念的表示(例如汽车或人).我想在一些按钮的右边添加一个小图标,一个"右V形符号"来表示交互的性质.

在此输入图像描述

我想也许可以使用全宽度的HBox作为按钮的图形节点,并将2个图像添加到它,但我不认为可以将文本放在图形节点的顶部.

任何的想法 ?

java user-interface javafx

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