小编Hav*_*c P的帖子

在Play框架中正确转义的指南

我正在尝试绘制Play框架如何支持转义.

这是一个很好的页面,列出了所需的功能:https: //www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

因此,我试图将其与Play模板功能联系起来,并充分了解Play的功能和不执行功能.

另一个困惑点是支持index.json(即使用模板来构建JSON而不是HTML).是否${}神奇地切换到JSON文档中的JavaScript转义,或者它是否仍然转义HTML,因此JSON模板中的所有内容都必须具有显式escapeJavaScript()

http://www.playframework.org/documentation/1.2/javaextensions上还有一个addSlashes(),但对于我能想到的任何情况,它似乎都不太合适.(?)

如果有一个关于如何在Play中进行所有转义的全面指导,那将是很棒的.在我看来,在几种情况下答案是"滚动你自己",但也许我错过了所包含的内容.

java security xss escaping playframework

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

有没有办法修复fonts.com @ font-face声明?

许多流行的字体似乎只能通过http://webfonts.fonts.com/上网使用

但是,它以一种非常奇怪的方式工作.它们不会为您提供直接的字体URL,而是为您提供引用字体文件的CSS文件.我认为CSS中的字体URL可能是短暂的,随着时间的推移会发生变化,以防止未经授权的使用.所以你必须使用他们的CSS,你不能直接合并字体文件的URL(据我所知).

反过来,CSS不是我认为它应该是的.而不是(简化):

@font-face { 
  font-family: "Foo";
  font-weight: bold;
  src: url("foo-bold-variant.ttf");
}

@font-face {
  font-family: "Foo";
  font-weight: normal;
  src: url("foo-normal-variant.ttf");
}
Run Code Online (Sandbox Code Playgroud)

它是:

@font-face { 
  font-family: "Foo Bold";
  src: url("foo-bold-variant.ttf");
}

@font-face {
  font-family: "Foo Normal";
  src: url("foo-normal-variant.ttf");
}
Run Code Online (Sandbox Code Playgroud)

因此,您不能这样做:

body {
  font-family: "Foo", sans-serif;
}
Run Code Online (Sandbox Code Playgroud)

相反,在您使用的任何地方font-weight: bold,您都必须将其更改为font-family: "Foo Bold",而且我猜您必须添加CSS规则来更改家庭等<strong>.我用粗体作为例子,但font-style除此之外还出现了同样的问题font-weight.

他们将此解释为iOS错误的解决方法("这是一个功能!"):http://blog.fonts.com/2010/09/23/getting-web-fonts-to-look-fantastic-on-iphone -and-ipad的器件/

但是该错误已在iOS 4.2中得到修复:http: //blog.typekit.com/2010/12/06/updates-to-typekits-mobile-support/

有了这个设置,除非我失去了一些东西,我不能使用任何第三方的CSS或脚本尝试使用font-weight,因为fonts.com的做法打破了font-weightfont-styleCSS属性完全.您必须为"mybold"或类似的东西组成一个自定义CSS类,而不是使用font-weight,以将font-family设置为"Foo Bold".即他们打破标准CSS.(我错过了什么?)

也许他们会在某个时候解决这个问题.但与此同时, …

css html5 webfonts font-face

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

实现重新加载Typesafe配置的好方法是什么

在使用Typesafe Config的Scala应用程序中,我想添加在运行时重新加载Config的可能性.Config实例是不可变的.这是我到目前为止:

package config

trait Settings {
  private[config] var config: Config = ConfigFactory.empty()
  def engine: EngineSettings
}

trait EngineSettings {
  def weight: Int
  def offset: Int
}

class AppSettings {
  override def engine = new EngineSettings {
    override def weight = config.getInt("engine.weight")
    override def offset = config.getInt("engine.offset")
  }
}

object Settings {
  private val namedSettings = new TrieMap[String, AppSettings]
  def load(configName: String = "local"): Settings = {
    // load config
    // create or update AppSettings
    // add to map and …
Run Code Online (Sandbox Code Playgroud)

java scala concurrentmodification typesafe-config

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

我应该如何使用MongoDB实现"使用对象更改"模式?

我有一组对象,假设它们是"帖子",并且可以修改这些对象.我想在客户端显示一个动态更新的列表.所以在客户端,如果通过轮询执行此操作,客户端将调用以下API:

getPostsChangedSince(serial)
Run Code Online (Sandbox Code Playgroud)

哪里serial可能是一个单调递增的数字,可能是一个时间戳.客户端返回自那时以来已更改的帖子列表,存储新的最新序列,以及下次客户端轮询它自最新序列以来的请求更改.

我认为这个问题(关于ASP.NET)的基本思想是一样的:如何使用ADO.NET数据服务实现"获取最近更改的项目"?

我正在尝试找到在MongoDB中实现它的最佳方法.

我喜欢将时间用于串口的想法,因为即使有多个应用服务器,它至少可以自动正常工作.序列将存储在每个post对象中,并在对象被修改时更新.

基于时间戳的序列可以实现为:

解决方案中的一些不错的功能包括:

  • 确保创建然后立即更新OS定时器分辨率内​​的对象仍然会增加序列,尽管它是同一时间
  • 更好的是保证所有对象的全局单调增加,而不仅仅是保证更改给定对象会撞击该对象上的序列(没有这个,getPostsChangedSince()调用可能需要及时向后模糊,以避免遗漏更改 - 在两次变更的价格)
  • mongodb-side时间戳可能很好,因为在应用程序中获取时间会在您获得时间和保存新对象以及查询中可用时间之间产生差距
  • 使用包含旧序列的查询使用findAndModify()更新,因此"冲突"(一次两次更改)将引发错误,允许应用重试

我意识到这里的一些角落案件有点"学术性",很可能在现实生活中被捏造.

到目前为止我的方法是:

  • 使用序列的日期类型
  • 修改对象时,获取当前时间,如果它与对象的旧序列匹配,则添加1毫秒(如果快速进行两次修改而不从mongodb重新获取,则会中断,但这似乎没问题)
  • 使用findAndModify(),但是基于https://jira.mongodb.org/browse/JAVA-276,可能没有办法检测它是否最终没有找到任何要修改的内容(即,如果是冲突)

问题:

  • 我觉得我应该使用Timestamp; 真正?有任何缺点吗?
  • 如果你有一个mongo集群,那么以毫秒为单位的时间可能比Timestamp的时间(以秒为单位)加上一个数字更加独特和正确,而有一个mongod时间戳更独特吗?
  • 有没有办法检测findAndModify()是否更新了什么?
  • 有关这个问题的一般建议/经验吗?你会怎么做?

mongodb

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

为什么activator/sbt将Scala版本添加到纯Java库依赖项?

我正在使用Typesafe Activator的最新版本(1.2.8与Scala 2.11.x).

当我"org.apache.httpcomponents" %% "httpclient" % "4.4-alpha1"向我的项目中添加依赖项时build.sbt,如下所示:

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % "2.3.4",
  "com.typesafe.akka" %% "akka-testkit" % "2.3.4",
  "org.scalatest" %% "scalatest" % "2.1.6" % "test",
  "junit" % "junit" % "4.11" % "test",
  "com.novocode" % "junit-interface" % "0.10" % "test",
  "org.apache.httpcomponents" %% "httpclient" % "4.4-alpha1" // my added dependency
)
Run Code Online (Sandbox Code Playgroud)

...并尝试更新项目(在激活器的cli中)我收到一个错误:

[error] (*:update) sbt.ResolveException: unresolved dependency: org.apache.httpcomponents#httpclient_2.11;4.4-alpha1: not found
Run Code Online (Sandbox Code Playgroud)

我知道scala的版本不是二进制兼容的,但我试图获得一个纯java库org.apache.httpcomponent#httpclient!为什么激活器在artifactId的末尾添加"_2.11"并制作错误的URL ...?怎么解决?

scala sbt typesafe-activator

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

如何将DateTimeComparator转换为Scala中的Ordering [DateTime]

我输入的内容似乎有些难看:

val maxTime = times.max(DateTimeComparator.getInstance().asInstanceOf[Comparator[DateTime]] asScala)
Run Code Online (Sandbox Code Playgroud)

times 是org.joda.time.DateTime的序列.

必须有更好的方法来获取DateTime的Ordering对象.在那儿?

特别是失去asInstanceOf会很棒......

scala jodatime

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