小编Viv*_*ath的帖子

Javascript表单验证框架:请求审核

我不确定我是否可以提出这样的问题,但在Meta Stackoverflow上看到这个后,看起来这种问题还可以.那么,关于我的问题:

几个月前,我在Javascript中编写了一个验证框架.我知道已存在jQuery Validation之类的验证框架,但我想采用不同的验证方法.当前的方法涉及编写Javascript代码以对表单元素执行验证.通过查看表单源代码,不会立即明确在每个元素上进行验证.在某种程度上,这可以通过使用指定不同类型的验证的CSS类来解决.但我觉得即使这样也是有限的,因为你无法轻松定制验证的行为(错误消息等).我想使用JSR-303 Bean ValidationHibernate Validator在Java中执行基于注释的验证.

由于HTML5允许您向元素添加自定义属性,我认为我可以利用它来"注释"表单元素以进行验证.所以,基本上,我想出了这个:

<input id = "myInput"
       name = "myInput"
       type = "text"
       class = "regula-validation"
       data-constraints = '@NotEmpty @IsNumeric @Between(min=1, max=5)' />
Run Code Online (Sandbox Code Playgroud)

考虑到这个基本思想,我创建了一个Javascript框架:

  • 检查具有约束定义的元素的DOM,并将这些约束绑定到元素
  • 允许创建自定义约束
  • 允许以编程方式绑定约束
  • 验证绑定约束

此外,该框架还具有以下功能:

  • 验证组,类似于JSR-303中指定的验证组
  • 错误消息的插值

一旦我创建了我的框架,我就试图获得反馈并对其进行审核,但我不知道该去哪里获得反馈和评论.我写了一些关于它的博客文章并将其发布到Digg和Reddit(编程部分),但没有太多运气.一些人似乎很感兴趣,但我没有得到更多.

Recently, at my workplace we've been modernizing a legacy codebase (JSP and servlets) and moving it into Spring MVC. When the conversation of validation came up, I pitched my framework to my senior …

javascript validation client-side-validation

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

Code Golf:MSM随机数生成器

挑战:

使用中间方法生成一系列(伪)随机数的字符数最短的代码.

约翰冯·诺伊曼于1946年首次提出了(伪)随机数生成的中间方法,其定义如下:

R n + 1 = mid((R n)2,m)

例如:

3456 2 = 11943936

mid(11943936)= 9439

9439 2 = 89094721

mid(89094721)= 0947

947 2 = 896809

mid(896809)= 9680

9680 2 = 93702400

mid(93702400)= 7024

另一个例子:

843 2 = 710649

mid(710649)= 106

106 2 = 11236

mid(11236)= 123

123 2 = 15129

mid(15129)= 512

512 2 = 262144

mid(262144)= 621

621 2 = 385641

mid(385641)= 856

856 2 = 732736

mid(732736)= 327

327 …

language-agnostic random code-golf rosetta-stone

13
推荐指数
3
解决办法
1862
查看次数

Spring Runtime Exceptions列表

有谁知道我在哪里可以找到Spring的(3.0.x)运行时异常列表?我说的是例外DataRetrievalFailureException; 你可以抛出一整套这些运行时异常.

spring exception spring-mvc runtimeexception spring-3

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

用于LOGO编程语言的EBNF或BNF

有谁知道我可以在哪里获得LOGO编程语言的BNF或EBNF ?

bnf ebnf logo-lang

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

XOR神经网络错误在训练期间停止减少

我正在通过使用随机梯度下降的反向传播训练XOR神经网络.将神经网络的权重初始化为-0.5和0.5之间的随机值.神经网络在80%的时间内成功训练自己.然而有时它会在反向传播时"卡住".通过"卡住",我的意思是我开始看到纠错率下降.例如,在成功培训期间,总误差会随着网络的学习而迅速下降,如下所示:

...
...
Total error for this training set: 0.0010008071327708653
Total error for this training set: 0.001000750550254843
Total error for this training set: 0.001000693973929822
Total error for this training set: 0.0010006374037948094
Total error for this training set: 0.0010005808398488103
Total error for this training set: 0.0010005242820908169
Total error for this training set: 0.0010004677305198344
Total error for this training set: 0.0010004111851348654
Total error for this training set: 0.0010003546459349181
Total error for this training set: 0.0010002981129189812
Total error for this training set: 0.0010002415860860656 …
Run Code Online (Sandbox Code Playgroud)

backpropagation neural-network

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

由于HAL + JSON媒体类型不清晰,无法使用Spring HATEOAS执行HAL + JSON Level 3 RESTful API

例如,Level 3 RESTful API具有自定义媒体类型application/vnd.service.entity.v1+json.在我的情况下,我使用HAL来提供我的JSON中相关资源之间的链接.

我不清楚使用HAL + JSON的自定义媒体类型的正确格式.我现在的样子,看起来像application/vnd.service.entity.v1.hal+json.我最初使用application/vnd.service.entity.v1+hal+json,但+hal后缀未注册,因此违反了RFC6838的4.2.8节.

现在Spring HATEOAS支持开箱即用的JSON链接,但对于HAL-JSON,你需要使用@EnableHypermediaSupport(type=EnableHypermediaSupport.HypermediaType.HAL).在我的例子中,因为我使用Spring Boot,所以我将它附加到我的初始化类(即扩展的类SpringBootServletInitializer).但Spring Boot无法识别我的自定义媒体类型.所以为此,我必须弄清楚如何让它知道它需要使用HAL对象映射器来处理表单的媒体类型application/vnd.service.entity.v1.hal+json.

对于我的第一次尝试,我将以下内容添加到Spring Boot初始化程序中:

@Bean
public HttpMessageConverters customConverters() {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    converter.setSupportedMediaTypes(Arrays.asList(
            new MediaType("application", "json", Charset.defaultCharset()),
            new MediaType("application", "*+json", Charset.defaultCharset()),
            new MediaType("application", "hal+json"),
            new MediaType("application", "*hal+json")
    ));

    CurieProvider curieProvider = getCurieProvider(beanFactory);
    RelProvider relProvider = beanFactory.getBean(DELEGATING_REL_PROVIDER_BEAN_NAME, RelProvider.class);
    ObjectMapper halObjectMapper = beanFactory.getBean(HAL_OBJECT_MAPPER_BEAN_NAME, ObjectMapper.class);

    halObjectMapper.registerModule(new Jackson2HalModule());
    halObjectMapper.setHandlerInstantiator(new Jackson2HalModule.HalHandlerInstantiator(relProvider, curieProvider));

    converter.setObjectMapper(halObjectMapper);

    return new HttpMessageConverters(converter); …
Run Code Online (Sandbox Code Playgroud)

java rest spring spring-hateoas hal-json

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

返回具有泛型类型的Class实例

这是一个简单的示例,演示了我遇到的与类型擦除相关的问题.我有一个这样的课:

public abstract class AbstractHandler<T> {

    ...
    public abstract Class<T> handledType();
}
Run Code Online (Sandbox Code Playgroud)

然后我有这个实现:

public class ConcreteHandler extends AbstractHandler<Map<String, List<Thing>>> {

    @Override
    public Class<Map<String, List<Thing>>> handledType() {
        //what do I return here?!
    }
}
Run Code Online (Sandbox Code Playgroud)

我不能回来Map<String, List<Thing>>.class,因为那在语法上甚至都没有.我尝试在子类型中创建泛型类型参数HashMap<String, List<Thing>>然后返回new HashMap<String, List<Thing>>().getClass(),但这不起作用,因为返回类型Class<T>#getClass()Class<? extends T>.我TypeToken从Guava 看了一下,这个getRawType方法似乎很有希望,但它又回来了Class<? super T>.

我现在有一个解决方法,看起来像这样:

public class ThingListMap {
    private Map<String, List<Thing>> thingListMap;

    ...
}
Run Code Online (Sandbox Code Playgroud)

我只是ThingListMap用作泛型类型参数.

另一种可能的解决方法是执行强制转换:

public Class<Map<String, List<Thing>>> handledType() {
    return …
Run Code Online (Sandbox Code Playgroud)

java generics generic-type-argument type-erasure

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

将服务自动装配到验证器中

这个例子有点人为; 我简化了它以删除无关的细节,并专注于我遇到的问题.我有一个看起来像这样的验证器:

@Component
public class UniqueUsernameValidator implements ConstraintValidator<UniqueUsername, String> {

    @Autowired
    UsernameService usernameService;

    @Override
    public void initialize(UniqueUsername uniqueUsername) {
    }

    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
        return !usernameService.exists(s);
    }   
}
Run Code Online (Sandbox Code Playgroud)

我从我的控制器调用验证器,如下所示:

@RequestMapping
public void checkUsername(Model model, User user) {
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();

    Set<ConstraintViolation<User>> constraintViolations = validator.validateProperty(user, "username");
    model.addAttribute("error", constraintViolations.size() > 0);
}
Run Code Online (Sandbox Code Playgroud)

但是,我一直有NullPointerException例外.我在验证器添加一个断点,并看到usernameServicenull.为什么不进行自动装配?最初我认为这是因为我没有注释验证器@Component,但即使在注释它之后我仍然有同样的问题.该UsernameService班已经标注了@Service,我可以验证它的构造函数获取调用.

我是Spring的新手,所以我甚至不确定将服务连接到验证器是否可以.我究竟做错了什么?

validation spring autowired hibernate-validator spring-3

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

如何测试与第三方API的连接是否适合持续集成?

我前段时间编写了一个测试,用于测试我在代码和第三方API之间编写的集成.测试确保集成正常工作,并确保我们得到预期的结果.

正式版本今天失败,因为测试在尝试连接到第三方API时收到500错误.

测试这样的情况是否有意义?

testing continuous-integration integration-testing automated-tests regression-testing

11
推荐指数
2
解决办法
2772
查看次数

剖析Maven

是否有工具可以分析Maven构建过程本身,以便我可以看到构建花费最多时间的位置?

我们在Maven 3.0.3和3.0b1方面遇到了问题.与3.0.3(9m00s)相比,我们的项目在3.0b1(3m30s)下构建得更快.使用3.0b1,构建速度提高约63%(如果我的数学运算正确).

我尝试搜索有关Maven 3的性能比较和性能问题,但无法找到任何内容.

UPDATE

我通过查看maven来源做了一些研究,这是我发现的:

使用jconsole时,我发现大部分时间(在3.0.3中)花在内部DefaultProjectDependenciesResolver.java.所以我将源代码下载到3.0b1和3.0.3以查看发生了什么.我注意到在3.0.3中有两个版本的类.一个在org.apache.maven.project,而另一个在org.apache.maven.在3.0.3中,似乎也使用了前者.在单步执行代码时,我看到大部分时间都花在了这个语句上:

node = repoSystem.collectDependencies( session, collect ).getRoot();
Run Code Online (Sandbox Code Playgroud)

在3.0b1中,代码执行:

ArtifactResolutionResult result = repositorySystem.resolve( request );
Run Code Online (Sandbox Code Playgroud)

我也注意到它respositorySystem的类型RepositorySystem,具体实现是LegacyRepositorySystem.我假设在Maven 3处于测试版之前使用它直到创建新实现?回到3.0.3,该collectDependencies方法DefaultRepositorySystem.java属于其中的一部分org.sonatype.aether.impl.internal.这最终调用collectDependencies内部DefaultDependencyCollector.java也是其中的一部分org.sonatype.aether.impl.internal.我假设这是依赖图的构建方式.

我现在想知道这是因为我们的依赖关系是如何构建的.以前有没有人见过这种行为?

UPDATE

有一个问题在JIRA关于与修复建议沿着这个问题.我发布了详细信息作为答案.

UPDATE

问题是由于maven 3.0.3(1.11)中使用的以太版本.版本1.12的以太修复了这个问题.我检查了maven 3.0.3的源代码并编辑了POM,将以太版本从1.11更改为1.12.然后我从源代码构建了maven,用我构建的版本替换了我当前的版本.构建时间的缩短是显着的.

如果您不想从源代码构建maven,可以使用1.12版本替换maven的lib目录中的以太库.这也应该有效.

我不确定这个改变是否会进入3.0.4,因为maven开发人员说有许可证的变化从以太1.11到以太1.12,所以他们仍在讨论它.

maven-3 maven

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