至于详细的其他地方,否则显然是众所周知的,IE浏览器(版本绝对7,并在某些情况下,版本8)不落实的关键功能,特别是Array
(如forEach
,indexOf
等).
这里和那里有许多变通方法,但我想将一组适当的,规范的实现折叠到我们的网站中,而不是复制,粘贴或破解我们自己的实现.我找到了js-methods,看起来很有前景,但我想在这里发帖看看是否有更高度推荐的另一个库.一些杂项标准:
当未经身份验证的客户端请求需要非匿名访问级别的URL时security-config.xml
,spring security会将HTTP重定向发送到我们的登录页面(例如/login
).没关系.
问题是,如果没有现有会话(由客户端请求中提供的cookie标识),spring-security会发出重定向,该重定向也指定客户端在URL中的新会话,例如/login;jsessionid=8o7pglapojus
.
许多容器支持这个(显然在Tomcat中正常工作?),但现在看来,码头(这就是我们现在正在使用)不-重定向的URL来通过我们的网址路由器完全不变(包括jsessionid
"参数"),并且命名会话不与/login
jetty/spring-security 的请求相关联(即,在对/login
请求的响应的Set-Cookie头中提供了全新的会话ID ).
我们可以通过匹配/login.*
我们的路由来解决这个问题,但我很好奇是否有任何方法可以防止在身份验证重定向中发出会话ID.
我正在使用Tomcat 6.0.24,为Ubuntu Karmic打包.Ubuntu的Tomcat软件包的默认安全策略非常严格,但看起来很简单.在/var/lib/tomcat6/conf/policy.d
,有各种文件建立默认策略.
值得一提的是:
server.xml
更改等.将.war文件放在webapps
目录中是唯一的部署操作.-Djava.security.debug="access,stack,failure"
系统属性而报告给日志).我想要做的是在policy.d
目录中添加特定于应用程序的安全策略文件,这似乎是推荐的做法.我添加了这个policy.d/100myapp.policy
(作为一个起点 - 我希望最终将授予的权限减少到应用程序实际需要的内容):
grant codeBase "file:${catalina.base}/webapps/ROOT.war" {
permission java.security.AllPermission;
};
grant codeBase "file:${catalina.base}/webapps/ROOT/-" {
permission java.security.AllPermission;
};
grant codeBase "file:${catalina.base}/webapps/ROOT/WEB-INF/-" {
permission java.security.AllPermission;
};
grant codeBase "file:${catalina.base}/webapps/ROOT/WEB-INF/lib/-" {
permission java.security.AllPermission;
};
grant codeBase "file:${catalina.base}/webapps/ROOT/WEB-INF/classes/-" {
permission java.security.AllPermission;
};
Run Code Online (Sandbox Code Playgroud)
请注意试图找到正确codeBase
声明的颠簸.我认为这可能是我的根本问题.
无论如何,上面(实际上只有前两个赠款似乎有任何影响)几乎可行:成千上万的访问拒绝都消失了,而我只留下了一个.相关堆栈跟踪:
java.security.AccessControlException: access denied (java.io.FilePermission /var/lib/tomcat6/webapps/ROOT/WEB-INF/classes/com/foo/some-file-here.txt read)
java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
java.security.AccessController.checkPermission(AccessController.java:546)
java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
java.lang.SecurityManager.checkRead(SecurityManager.java:871)
java.io.File.exists(File.java:731)
org.apache.naming.resources.FileDirContext.file(FileDirContext.java:785)
org.apache.naming.resources.FileDirContext.lookup(FileDirContext.java:206)
org.apache.naming.resources.ProxyDirContext.lookup(ProxyDirContext.java:299)
org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:1937) …
Run Code Online (Sandbox Code Playgroud) 我需要做一些不太适合我们日常任务管理工具(FogBugz和白板)工作流程的高级项目规划,所以我想我会给MS Project一个旋转(它是免费的)通过MSDN).
不过,我打了一堵漂亮的墙.我所拥有的是120个任务,一组人(将它们称为"资源"对我来说非常苛刻,但我离题了),并对这些任务进行了粗略的优先排序.有些任务有一个人分配给他们,有些没有(因为我们不知道谁会做什么).
好到目前为止.问题是,除了那些相对罕见的任务链接的情况(大多数工作可以按任何顺序完成)之外,所有任务都安排在同时运行.我想做的是让Project根据以下内容找出一些调度方案:
这可能吗?我已经摆弄了资源调配对话框并阅读了比我想承认的更多的MS Project文档,所以欢迎任何建议.
FWIW,我在搜索中注意到这个问题在Yahoo Answers ; 那里的人似乎跟在大致相同的事情之后,但我觉得这里的问题可能更有成效.
简而言之,这有效:
[1, 2, 3].reduce(function (a, b) { return Math.max(a, b); });
=> 3
Run Code Online (Sandbox Code Playgroud)
但这不是:
[1, 2, 3].reduce(Math.max);
=> NaN
Run Code Online (Sandbox Code Playgroud)
纯粹的困惑.
这是在Firefox 3.5.9中,我认为它是使用reduce,FWIW 的mozilla标准实现.
我不是一个音乐家(见证我用吉他和钢琴大多不成功的插曲),但我发现自己能够通过Overtone产生合理愉悦的声音,并且玩得很开心.(正如Sam Aaron所说,这是将编程能力转化为音乐性的好方法,这似乎在某种程度上得到了证实.)
我的问题是,Overtone提供了各种与音乐理论相关的设备(例如音阶,节拍器等)overtone.music.*
,我已经修改过,但根本就没有从根本上理解.我想知道是否有人可以推荐一个合理平易近人的音乐理论书籍/指南/资源,与Overtone提供的设施很好地融合?
我们有一个FogBugz 6安装,有很多维基内容.我们正在转换使用Atlassian产品(JIRA和Confluence),因此我们希望将该wiki内容转换为Confluence.你会怎么做?
不幸的是,FogBugz似乎没有提供任何类型的wiki导出功能,Confluence也没有提供任何FogBugz wiki导入.
FogBugz确实有一个API,但它对访问wiki内容的细节有点了解.我们并不真正关心页面的过去修订(只是内容,链接和图像/附件),因此不清楚API是否比使用wget或其他东西抓取FB wiki并使用HTML和那里的图像/附件.
Confluence有一个功能齐全的内容导入实用程序,支持许多源wiki:
那里没有FogBugz选项,但是如果我们可以将FogBugz wiki内容导出到上面的一个wiki中,那么我们可能会从那里使用Confluence多维基因导入器.
或者,我们可以使用wget来抓取FogBugz wiki内容,然后找到一种方法将静态HTML +图像+附件放入Confluence或上面的其他wiki之一作为Confluence的垫脚石.
思考?
在我的一个Maven项目中,依赖项解析将成功一次,然后失败以便以后的构建尝试:
[WARNING] The POM for commons-logging:commons-logging:jar:1.1.1 is missing, no dependency information available
[WARNING] The POM for commons-httpclient:commons-httpclient:jar:3.1 is missing, no dependency information available
[WARNING] The POM for javax.mail:mail:jar:1.4.4 is missing, no dependency information available
Run Code Online (Sandbox Code Playgroud)
...等等,直到我删除maven-metadata-local.xml
与失败的工件相对应的文件(例如~/.m2/repository/commons-logging/commons-logging/maven-metadata-local.xml
).删除这些文件后,下一次mvn
调用将正常进行; 元数据文件由该调用恢复(可能是检查我的上游存储库/镜像更新工件的过程的一部分),我再次提出上述错误,直到我再次删除元数据文件.
这会影响多个项目,但它似乎仅限于一组特定的依赖项.我想我可以去核并吹掉我当地的回购,但我想知道问题是什么.
思考?
更新:看起来它是生成这些文件的maven-invoker-plugin(这些构建用于通用集成测试)maven-metadata-local.xml
.我没有使用此处所述的仅集成测试本地存储库,只是因为这样做会导致重新下载所有传递依赖项(除非您想维护特定于集成的settings.xml文件!!!).我已经以这种方式将invoker插件与各种其他项目一起使用,效果很好 - 当然在这样的过程中从未遇到过楔形本地存储库.
更新2确定,这是可重复的,即使在从一个完全新鲜的本地存储库开始之后也是如此.这是在OS X,Java 1.6.0_24和Maven 3.0.3; 注意,Maven的2.2.1不会不出现此问题.
这是有问题的项目之一:翻译的1.3.0-compat分支.重现:
> mvn clean test
# no error -- can run this …
Run Code Online (Sandbox Code Playgroud) 背景:我正在maven项目中设置功能测试模块.我们使用maven-jetty-plugin进行测试.
我已经设置了这里描述的jetty插件(与Failsafe插件很好地配合),但我想要做的是使用jetty(刚安装到其中)从我们的主Web模块部署war工件功能测试模块运行时的本地maven repo).
jetty插件的run-war目标有一个<webApp>
元素,它采用字符串路径来部署战争.我更愿意使用我们的web模块定义的maven坐标来指定部署战争.有没有办法做到这一点?
可能的解决方法:
<webApp>
配置元素中提供.是否有任何人都知道的JQuery visual diff插件.你会在GitHub,BitBucket或任何标准的源代码控制网站上看到类似的东西吗?
我找到了这个https://github.com/cemerick/jsdifflib,它看起来还不错,但是想知道是否有更多类似的东西.
谢谢.
在对文件Data.Vector.unsafeFreeze
说:
不安全[ly]将可变向量转换为不可变向量而不进行复制.在此操作之后可能不使用可变载体.
我想详细描述这里"不安全"的含义.在实验上,它似乎"仅"意味着对原始可变载体的进一步修改将导致返回的不可变向量unsafeFreeze
不再是纯的:
$ import qualified Data.Vector as V
$ import qualified Data.Vector.Mutable as MV
$ import Control.Monad.ST
$ :{
$ |runST $ do
$ | mv <- V.thaw $ V.fromList [0..10]
$ | v <- V.unsafeFreeze mv
$ | MV.write mv 0 (-1)
$ | MV.write mv 1 (-2)
$ | v' <- V.freeze mv
$ | v'' <- V.unsafeFreeze mv
$ | return (v, v', v'')
$ |:}
([-1,-2,2,3,4,5,6,7,8,9,10],[-1,-2,2,3,4,5,6,7,8,9,10],[-1,-2,2,3,4,5,6,7,8,9,10])
Run Code Online (Sandbox Code Playgroud)
我可以想象一个修改"不安全"冻结中使用的来源做各种粗糙的事情会导致更糟糕的行为,例如segfaulting.不幸的是,我很快就忘记了尝试阅读不安全操作的来源.
我可以依靠所说的杂质是这些操作"不安全"的唯一方式吗?
对于上下文:我需要在一个通常不可变的数据结构上实现各种修改算法,而不是在内部可变性范围内重用其面向公众的API会非常不方便(因为AFAICT没有办法一般地访问 …
在构建我希望的是一个正确架构的身份验证机制的过程中,我遇到了很多指定的材料:
我完全同意第一点和第二点,但似乎后者有一个简单的解决方法.而不是做相当于(伪代码):
salt = random();
hashedPassword = hash(salt . password);
storeUserRecord(username, hashedPassword, salt);
Run Code Online (Sandbox Code Playgroud)
为什么不使用用户名的哈希作为盐?这产生了一个分布均匀(大致)随机的盐的区域,并且每个单独的盐与盐功能所提供的一样复杂.更好的是,您不必将salt存储在数据库中 - 只需在身份验证时重新生成它.更多伪代码:
salt = hash(username);
hashedPassword = hash(salt . password);
storeUserRecord(username, hashedPassword);
Run Code Online (Sandbox Code Playgroud)
(当然,hash
在上面的例子中应该是合理的,比如SHA-512,或者其他一些强哈希.)
这对我来说似乎是合理的,因为我知道加密的内容很少(但很少),但事实上这是对广泛推荐的练习的简化,这让我想知道是否有一些明显的原因让我误入歧途,我不知道.
编辑有些人似乎没有意识到问题是什么.我无法建议不使用盐.参考TheRook的编辑答案:我熟悉那些CWE中提到的参考文献.我的核心问题是:为什么hash(用户名)是可预测的盐?
编辑2感谢所有提供答案的人; biffabacon在他的第2段直接解决了我的核心问题(基本上,你可以做的任何事情,以最大限度地使用盐的域,因此生成的哈希密码是好的),但在这个问题的各种评论中有很多美味的信息.
typeof
当应用于不同上下文中的相同值时,求值为不同的字符串.例如,这是预期的:
> typeof 5
'number'
Run Code Online (Sandbox Code Playgroud)
...然而,typeof
5
访问时通道this
不一样:
> Number.prototype.foo = function () { return typeof this; };
[Function]
> (5).foo()
'object'
Run Code Online (Sandbox Code Playgroud)
只是另一个(in)健全性检查,真的,认真验证这this
是一个数字:
> Number.prototype.foo = function () { return [this + 1, typeof this]; };
[Function]
> (5).foo()
[ 6, 'object' ]
Run Code Online (Sandbox Code Playgroud)
我已经通过了MDN文档和阅读的ECMAScript规范的typeof
,而且怎么也想不到,这是可以预料的,请不要介意正确的.有人有解释吗?
javascript ×4
jetty ×2
maven ×2
tomcat ×2
clojure ×1
confluence ×1
cryptography ×1
encryption ×1
export ×1
fogbugz ×1
haskell ×1
java ×1
jquery ×1
maven-2 ×1
maven-3 ×1
ms-project ×1
overtone ×1
scripting ×1
security ×1
servlets ×1
st-monad ×1
tomcat6 ×1
ubuntu ×1
wiki ×1