我绝不是Javascript的专家,但我一直在阅读Mark Pilgrim的"潜入HTML5"网页,他提到了一些我想要更好理解的内容.
他说:
最后,使用双负技巧将结果强制为布尔值(true或false).
function supports_canvas() {
return !!document.createElement('canvas').getContext;
}
Run Code Online (Sandbox Code Playgroud)
如果有人能够更好地解释这一点我会很感激!
我有一个使用嵌套类的类,并希望使用嵌套类在上层类中operator<<
定义operator<<
.以下是我的代码的样子:
#include <memory>
#include <iostream>
template<typename T>
struct classA {
struct classB
{
template<typename U>
friend inline std::ostream& operator<< (std::ostream &out,
const typename classA<U>::classB &b);
};
classB root;
template<typename U>
friend std::ostream& operator<< (std::ostream &out,
const classA<U> &tree);
};
template<typename T>
inline std::ostream& operator<< (std::ostream &out,
const classA<T> &tree)
{
out << tree.root;
return out;
}
template<typename T>
inline std::ostream& operator<< (std::ostream &out,
const typename classA<T>::classB &b)
{
return out;
}
int main()
{
classA<int> a; …
Run Code Online (Sandbox Code Playgroud) 我写了一个算法来找到Haskell中子集求和问题的解决方案.签名是
subsetSum :: (Ord a, Num a) => [a] -> a -> Maybe [a]
Run Code Online (Sandbox Code Playgroud)
QuickCheck似乎非常适合测试它.例如,我在这里是我可以检查的属性之一:
prop_sumEqualsS l s = case subsetSum l s of
Just solution -> (sum solution) == s
Nothing -> True
Run Code Online (Sandbox Code Playgroud)
问题是该算法计算量很大,运行100个大输入列表的测试需要很长时间才能运行.
我尝试使用QuickCheck 1并且确实运行得很快,但用于测试的数据集非常小.转移到QuickCheck 2后,似乎是相反的问题.有QC 手册,但它似乎很旧(没有日期信息),我不知道QC2还有多少适用.Haskell Wiki上提供了一个教程,但没有太多细节,只有几个关于实例化的文字Arbitrary
.
所以我有两个问题:
编辑:更具体地说,我想测试我的解决方案,列表大小从0到100,包含-10000到10000之间的整数.
我正在按照Yesod Wiki上的教程试验Yesod.
首先,我创建了一个yesod应用程序yesod init
,并创建了一个Root处理程序,用于呈现一个名为的widget文件homepage
:
getRootR = do
mu <- maybeAuth
defaultLayout $ do
h2id <- lift newIdent
setTitle "Home"
addWidget $(widgetFile "homepage")
Run Code Online (Sandbox Code Playgroud)
我在静态目录调用中有一个图像文件 static/img/logo.png
触摸后Settings/staticFiles.hs
,我成功设法从default-layout.hamlet
via 链接此文件
<img src=@{StaticR img_logo_png}
Run Code Online (Sandbox Code Playgroud)
现在出现的问题是我想在我的homepage
小部件中包含这个静态文件,使用完全相同的代码行.编译时发生以下错误:
Handler/Root.hs:19:21:
Not in scope: `img_logo_png'
In the result of the splice:
$(widgetFile "homepage")
To see what the splice expanded to, use -ddump-splices
In the first argument of `addWidget', namely
`$(widgetFile "homepage")'
In the expression: addWidget ($(widgetFile …
Run Code Online (Sandbox Code Playgroud) 在阅读这个问题时,我想测试GCC中的输入,看看会输出什么错误.令我惊讶的是以下一行:
char array[] = {"s"};
Run Code Online (Sandbox Code Playgroud)
编译时没有错误或警告,导致包含大小为2的数组"s\0"
.我原本期望编译器错误,因为表达式的右侧是类型char*[]
.
在这种情况下,数组初始化只有一个元素不被视为数组,为什么?
Emacs文档有一个关于字符类的部分.根据手册,[:digit:]
应匹配任何数字字符.我已尝试过使用re-builder
但它们永远不会匹配,即使[0-9]
匹配.
如何在Emacs正则表达式中使用字符类?
Grails XSS预防功能非常方便,所以我使用它启用它:
grails.views.default.codec = "html"
Run Code Online (Sandbox Code Playgroud)
但是,这会产生html的问题textareas
.如果我们完成textarea
并使用Enter来断行,则新行将保存在数据库中,但在视图中会被忽略.我可以使用<%=%>
和replaceAll('\n',"<br>")
修复换行符,但填写的HTML代码textarea
不会被转义,也不会有XSS预防!
你会如何解决这个问题?
我们的组织正计划使用Grails通过REST接口实现复杂的应用程序.我担心框架的可扩展性,因为:
域类肯定会大量使用多态.我听说人们在Grails中有继承问题,例如因为JIRA上的这个问题.
对象树将保存在数据库中.在GORM中,这将是:
class Node
{
static def hasMany = [children: Node]
}
Run Code Online (Sandbox Code Playgroud)
我认为我们可以从级联操作中受益来管理依赖项,但我不确定它在这种情况下会如何工作.
数据库应该增长到存储数百万个对象,并且应该与Oracle,SQL Server和PostgreSQL一起使用.依靠Grails数据库映射来实现免费兼容性有多现实?
我们计划利用自定义域约束来检查域对象的一致性.但我觉得你在验证器中可以做的事情是有限的(例如,我不确定你是否可以加载一组其他对象)
在服务中实现的业务逻辑将是多线程的
书籍和网络上的大多数示例都显示了非常简单的应用程序,在独立的对象集上使用CRUD操作.
我担心,当应用程序增长时,我最终会使用Grails功能的一小部分,因为脚手架,Web流,ajax,甚至域类生成的DB模式可能与我的应用程序的需求不完全对应.
有没有人有经验分享使用Grails进行此类应用程序?
我目前正在帮助我的团队成员掌握我们的新项目和我们正在使用的工具.我们使用Java作为主要语言.我的同事的一个特点是他是盲人.他主要与Emacs合作,他在终端中运行maven目标.
在我完成实施后,我发现检查我的测试覆盖率非常有用.我希望我的同事能够检查报道.我有两种获取此信息的方法:
使用IntelliJ集成测试覆盖(它使用EMMA并在每行旁边显示绿色,红色或黄色).非常方便,因为我在运行测试后立即可以看到这些信息,没有进一步的交互
这对我的同事不起作用,因为他不能使用IntelliJ,并且它可能无法正常工作,因为没有覆盖信息的文本表示
使用Cobertura报告.它们在绿色/红色中使用相同的线条概念. 它们适用于类中的整体覆盖等宏信息,但不适用于检查未覆盖哪条线.实际上,他可以深入研究报告的HTML来源,找出哪一个有课nbHitsUncovered
,但这看起来非常不切实际.
我真的想告诉他如何快速获得他的覆盖率数据.有没有人知道一种不依赖颜色显示覆盖率的工具?或者我们必须自己写吗?(例如,通过转换HTML报告)
这是一个最小的测试用例:
#include <stdio.h>
#include <stdlib.h>
int main ( int argc , char **argv )
{
const char abc [15] = "abcdefg\0";
printf ("%s\n" , abc);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
和你做strings test
,你应该看到abcdefg
,因为它存储在只读区域.
那么,使用"strings"命令阻止用户读取此字符串的最佳方法是什么,例如我不希望用户知道我的SQL短语
我写了两个函数来从未知长度的列表中选择一个随机元素.第一个使用储层采样(具有大小为1的储层),第二个使用列表的长度来选择随机索引并将其返回.出于某种原因,前者要快得多.
第一个函数使用单个遍历并以概率(1/i)选择每个元素,其中i是列表中元素的索引.它导致挑选每个元素的概率相等.
pickRandom :: [a] -> IO a
pickRandom [] = error "List is empty"
pickRandom (x:xs) = do
stdgen <- newStdGen
return (pickRandom' xs x 1 stdgen)
-- Pick a random number using reservoir sampling
pickRandom' :: (RandomGen g) => [a] -> a -> Int -> g -> a
pickRandom' [] xi _ _ = xi
pickRandom' (x:xs) xi n gen =
let (rand, gen') = randomR (0, n) gen in
if (rand == 0) then
pickRandom' xs x …
Run Code Online (Sandbox Code Playgroud) 我是Grails和Web开发的新手.我开始在计划管理网站上做一个项目.我遇到了Service
Grails提供的概念.我理解这个概念,但我仍然对何时使用服务感到困惑.
例如,我需要实现一个search
模块,在那里manager
可以搜索user
到找到他的模块schedules
.在这种情况下,将其实现为控制器或服务是否合适?
所以,
Service
?