我正在使用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语句,好像它是一个"正常"的顺序语句?
免责声明:一般来说,我对three.js、WegGL 和3D 图形比较陌生。
我正在使用 Three.js 以 3D 形式显示 GPS 轨迹中的点。我们必须能够可视化的数据集可能非常大(数十万个点),因此性能非常重要。
我使用一个Points对象,我用一个BufferGeometry包含所有点的对象填充该对象。这些点是按照曲目的顺序添加的,所以按时间顺序。
然后,我们使用PointsMaterial带有 2D 纹理(精灵)的 a 将点表示为一个圆,圆外的区域是透明的。因为颜色是动态的,所以 2D 纹理是动态绘制到画布上的。
问题是,如果我们看轨迹方向上的点,即离相机较远的点是在较近的点之后渲染的点,在点重叠的地方会出现伪影,较近点的透明部分被绘制在更远的点上:
当我们从另一个方向看轨道时,即从后向前渲染的点,问题就消失了:
我尝试了以下两个选项来解决该问题:
alphaTest0和1之间的一个数值,它样的作品
depthWrite: false的材料的点,它呈现漂亮,但随后近点总是绘制在旧的无论相机的方向,它看起来奇怪,是错误的实际渲染深度 顺序中的点从最远的开始到最近的结束的解决方案是什么?
以下是代码的相关部分。
几何的构建。该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) 我试图将对象列表映射到另一种类型的对象列表,然后过滤列表,然后映射到第三种类型的列表,就像我在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 true和return 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) 我使用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生成无效代码......
我使用JPA和Hibernate作为我的Spring webapp中的实现.
我使用EntityListeners进行审计(Spring-data)和其他通知目的.一般来说它工作正常.但是,当对多对多集合/关系进行更改时,如果不对实体本身的任何字段进行任何其他更改,则不会触发s 的@PostUpdate事件EventListener.
举一个具体的例子:我有一个User和一个Role实体,它们之间有多对多关系,使用基础表.如果我转到我的用户管理GUI,并向用户添加(或删除)角色而不更改任何其他内容,则不会触发"postUpdate"事件,不会修改审核信息.
它有一些逻辑(在低级别),因为用户或角色表都没有更新,只有关系表.然而,关系本身并未建模为实体类,因此不可能对其应用审计,至少不是在JPA级别,因此触发实体本身的更改事件是有意义的.
这是正常的JPA行为,还是特定于Hibernate?有没有解决方法?你会怎么做才能触发这个事件?想法?
注意:我发现很少提及这种限制,甚至更少的解决方案: 这个问题(没有有用的答案)和Hibernate论坛上的这篇文章也没有任何答案.
我正在使用 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) 我正在尝试将 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) 我正在尝试构建一个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 模式文件已经存在,当然会更好。但谷歌在那里没有帮助。
我在使用依赖注入的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首先出现的目的是不必写这种代码)?
有很多关于如何将图形添加到JavaFX按钮的在线资源.
但是我想知道是否有办法添加第二个(或任何数字,但在大多数情况下可能没有多大意义的2个以上的图像)图像.
我的用例:我有一个左边有方形图标的按钮,后面是文字标签.图像是按钮与之链接的一些现实生活概念的表示(例如汽车或人).我想在一些按钮的右边添加一个小图标,一个"右V形符号"来表示交互的性质.

我想也许可以使用全宽度的HBox作为按钮的图形节点,并将2个图像添加到它,但我不认为可以将文本放在图形节点的顶部.
任何的想法 ?
java ×3
javascript ×3
javafx ×2
mapstruct ×2
node.js ×2
3d ×1
browser-sync ×1
codemirror ×1
css ×1
debugging ×1
decorator ×1
dto ×1
generator ×1
hibernate ×1
http-proxy ×1
java-stream ×1
javafx-8 ×1
jpa ×1
kotlin ×1
many-to-many ×1
mapping ×1
oracle ×1
proxy ×1
sql ×1
three.js ×1