小编Kaj*_*nus的帖子

如何在sbt中"重新运行-deprecation for details"?

当我编译Scala代码时,通过运行sbt compile,SBT说:

$ sbt compile
...
[warn] there were 5 deprecation warnings; re-run with -deprecation for details
...
Run Code Online (Sandbox Code Playgroud)

我怎么做?(从SBT内部?)

sbt

167
推荐指数
2
解决办法
3万
查看次数

哪些浏览器支持Object.observe?

哪些浏览器支持Object.observe?我很惊讶我无法找到任何关于此的信息.

(您是否了解此功能的预计到达时间?)

关于Object.observe:"Object.observe允许直接观察对ECMAScript对象的更改.它允许观察者接收按时间排序的更改记录序列,这些记录描述发生在观察对象集合中的一组更改. " - 请参阅ecmascript.org,解决方案部分.)


编辑 2015年11月:显然Object.observe已被取消:

http://www.infoq.com/news/2015/11/object-observe-withdrawn

https://esdiscuss.org/topic/an-update-on-object-observe
"我打算从TC39撤回Object.observe提案"

https://esdiscuss.org/topic/save-object-observe-please-make-weakmap-weakset-observable
"保存Object.observe()!(请)"

javascript browser observable object.observe

55
推荐指数
3
解决办法
2万
查看次数

我可以在Vagrant bootstrap shell脚本中切换用户吗?

编辑显然,问题是我应该完成
su - postgres -c "commands, commands, commands",
即传递任何命令su,而不是尝试在下面列出它们su,因为这些命令(下面su)不受影响su./编辑

编辑2:请参阅David Braun的答案以获得更好的解决方案:https://stackoverflow.com/a/22947716/694469


我是否可以su - postgres在Vagrant引导程序shell配置脚本中切换user()?(为什么不?)

我正在写这样一个剧本.在那个剧本中,我这样做:

echo '===== Creating PostgreSQL databases and users'

su - postgres

psql -c "
  create user SomeUserName password '...';
  alter user ...;
  "
Run Code Online (Sandbox Code Playgroud)

在这里,psql应该尝试以用户身份登录postgres.然而,发生的事情su - postgres显然是失败,并且shell尝试以root用户身份登录.(显然,root是运行Vagrant引导程序shell脚本的用户.)

因此出现此错误并且不调用psql命令:

psql:致命:角色"root"不存在

替换su - postgressudo su - postgres没有效果(我认为脚本已经以root …

shell vagrant

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

为什么PostgreSQL将用户和组合并为角色?

来自PostgreSQL文档:

角色的概念包含"用户"和"组"的概念.在8.1之前的PostgreSQL版本中,用户和组是不同类型的实体,但现在只有角色.任何角色都可以充当用户,组或两者.

为什么他们在8.1中做出这个改变?

从C编码器的角度来看,使用单个Role类(struct)可能更容易?

更多细节:

CREATE USER is equivalent to CREATE ROLE except that CREATE USER 为用户/角色提供LOGIN权限.

(我即将为我的webapp设计一个权限系统,因此我对此感兴趣.)

postgresql roles database-permissions

23
推荐指数
2
解决办法
8652
查看次数

内置解析字符串到Scala案例对象?

有没有办法在Scala中自动解析字符串中的case对象?使用一些内置/自动生成的Scala函数?

例如,我有这些案例对象:( 请注意,有一个密封的父类)

abstract sealed class FlagReason

case object Spam extends FlagReason
case object Illegal extends FlagReason
case object CopyrightViolation extends FlagReason
case object Other extends FlagReason
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一些自动生成的功能,如下所示:

FlagReason.fromString(value: String): FlagReason

哪里FlagReason("Spam")会返回Spamcase对象.

如果有,那我就不需要自己编写 - 我已经完成了:

object FlagReason {
  def fromString(value: String): FlagReason = value match {
    case "Spam" => Spam
    case "Illegal" => Illegal
    case "CopyrightViolation" => CopyrightViolation
    case "Other" => Other
  }
}
Run Code Online (Sandbox Code Playgroud)

背景:我正在将我的case对象转换为我用作html表单中的单选按钮值的字符串.当我处理提交的表单时,我正在将选定的值转换回case对象.

相关信息:这实际上可以使用Java枚举,请参阅此StackOverflow问题:按字符串值查找枚举

((我不认为我在寻找Scala的Parser Combinators.我想我要使用它们我仍然需要自己定义解析规则,而不是内置"自动"字符串到case对象转换) )

parsing scala

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

如何使Java 8 Nashorn快速?

我正在使用Java 8 Nashorn将CommonMark呈现给HTML服务器端.如果我编译并缓存并重用a CompiledScript,则某个页面需要5分钟才能呈现.但是,如果我改为使用eval,并缓存并重用脚本引擎,则渲染同一页面需要3秒钟.

为什么CompiledScript这么慢?(示例代码如下)

什么是在Nashorn中运行Javascript代码的好方法,一次又一次地反复运行?并避免不止一次编译Javascript代码?

这是服务器端Scala代码片段,以一种需要5分钟的方式调用Nashorn :(运行200次;我正在编译从CommonMark到HTML的许多注释.)(此代码基于此博客文章.)

if (engine == null) {
  val script = scala.io.Source.fromFile("public/res/remarkable.min.js").mkString
  engine = new js.ScriptEngineManager(null).getEngineByName("nashorn")
  compiledScript = engine.asInstanceOf[js.Compilable].compile(s"""
    var global = this;
    $script;
    remarkable = new Remarkable({});
    remarkable.render(__source__);""");
}
engine.put("__source__", "**bold**")
val htmlText = compiledScript.eval()
Run Code Online (Sandbox Code Playgroud)

编辑请注意,$script上述内容将重新评估200次.我测试了一个只评估过一次的版本,但显然我写了一些bug,因为只有一次版本并不快于5分钟,虽然它应该是最快的版本之一,请参阅Halfbit的答案.这是快速版本:

...
val newCompiledScript = newEngine.asInstanceOf[js.Compilable].compile(s"""
  var global;
  var remarkable;
  if (!remarkable) {
    global = this;
    $script;
    remarkable = new Remarkable({});
  }
  remarkable.render(__source__);""")
...
Run Code Online (Sandbox Code Playgroud)

/编辑 …

javascript java performance nashorn

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

为什么不使用会话ID作为XSRF令牌?

为什么Play Framework使用[会话ID的签名版本]作为跨站点请求伪造(XSRF/CSRF)预防令牌,而不是会话ID本身?

(使用XSRF预防令牌,我的意思是必须包含在表单提交中的魔术值,以便webapp接受表单.)

如果有窃听者s /他无论如何都会找到XSRF令牌和SID cookie(?).

如果存在XSS攻击,则恶意JavaScript代码可以读取XSRF令牌和SID cookie(?).

然而:

  1. 在给定SID的情况下,攻击者无法构造有效的XSRF令牌,因为他/她在签署SID以获取XSRF令牌时没有使用的密钥. - 但是如果攻击者只获得SID而不是XSRF令牌又怎么可能呢?这是牵强附会吗?

  2. 如果SID是在HTTP Only cookie中发送的,那么即使他/她找到了XSRF令牌,攻击者也不会拥有SID,并且攻击者可能真的需要SID? - 这是牵强附会吗?

代码片段:

这里Play构造它的XSRF令牌(getId返回会话ID):( play/framework/src/play/mvc/Scope.java)

    public String getAuthenticityToken() {
        return Crypto.sign(getId());
    }
Run Code Online (Sandbox Code Playgroud)

这里Play检查a <form>是否有一个有效的XSRF令牌:(play/framework/src/play/mvc/Controller.java)

protected static void checkAuthenticity() {
    if(Scope.Params.current().get("authenticityToken") == null ||
       !Scope.Params.current().get("authenticityToken").equals(
                       Scope.Session.current().getAuthenticityToken())) {
        forbidden("Bad authenticity token");
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:


Play改变了生成XSRF令牌的方式,现在不再使用SID,而是签名并使用随机值!(我刚刚将我的Pl​​ay Framework Git repo克隆从旧的Play版本1.1更新到新版本1.2.也许我应该这样做...昨天,嗯.)

    public String getAuthenticityToken() {
        if (!data.containsKey(AT_KEY)) {
            data.put(AT_KEY, Crypto.sign(UUID.randomUUID().toString()));
        }
        return data.get(AT_KEY);
    }
Run Code Online (Sandbox Code Playgroud)

那么,他们为什么要做这个改变呢?

我找到了提交:
[#669]再次修复并申请Flash和错误
d6e5dc50ea11fa7ef626cbdf01631595cbdda54c

来自问题#669:
仅在绝对必要时创建会话在
资源的每个请求上创建会话cookie.如果确实存在要在会话中存储的数据,则play应该只创建会话cookie. …

security cookies csrf playframework

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

尝试调试WebDriver E2E测试时,Chrome开发者工具会立即关闭

我通常在Chrome的开发工具面板中调试我的Selenium测试.然而,在升级我的操作系统(Ubuntu Linux)之后,我的E2E测试完全破坏了:Chrome没有打开第一页,但是闲置只显示空白页.最终我升级了ChromeDriver,现在测试再次运行.但是使用这个新的Chrome版本(在操作系统升级之后)和这个新的ChromeDriver,开发工具窗口有一个奇怪的问题:

每当我单击CTRL + SHIFT + I打开开发工具窗口,或单击Chrome菜单中的工具 - >开发人员工具时,开发工具窗口会闪烁,但随后会立即关闭.它看起来是空白和空的,它可见的1/10秒.这真的从未发生过.

当我在[由WebDriver驱动的Chrome实例]中手动打开另一个标签时,导航到例如http://www.google.se/,然后,当我在该标签中打开开发工具窗口时,它通常会保持打开状态(但不总是). - 它主要是[由Chrome驱动程序控制的浏览器选项卡的开发工具窗口]立即关闭.

但是,如果我按住CTRL + SHIFT + I一段时间,这会产生许多"点击",然后开发工具突然保持打开状态.但是在10-20秒之后它又突然关闭了.

为什么Chrome会这样做?我怎么能停下来?

Chrome版本29.0.1547.57
Chrome驱动程序版本2.0,2.1 和2.2经过测试(存在问题).
Selenium 2.35.0和版本2.25.0(我认为它)也没有用.

debugging selenium webdriver google-chrome-devtools

15
推荐指数
1
解决办法
8864
查看次数

可选的子选择器,CSS/Stylus/LESS:.aa> .bb?> .cc

考虑使用CSS类aa,bbcc的 HTML :

<div class='aa'>
<div class='bb'>
<div class='cc'>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以这样选择class=cc标签:.aa > .bb > .cc.但是,在我的情况下,有时.bb标签不存在,也就是说,HTML看起来像这样:

<div class='aa'>
<div class='cc'>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

因此,要选择所有.cc接近a .aa,我需要指定两个CSS路径:

.aa > .bb > .cc,
.aa > .cc { .... }
Run Code Online (Sandbox Code Playgroud)

这有效,但是,有没有更短的方法?与此类似的东西:

.aa > (.bb >)? .cc { ... }   /* ? means "optional" */
Run Code Online (Sandbox Code Playgroud)

使用CSS或类似Stylus或LESS的东西?

动机:在现实世界中,"aa","bb"和"cc"的名称有点长,而且"aa"和"cc"之前和之后都有更多的东西,不需要复制就更好了那东西.

请注意:在我的情况下,这不起作用:.aa .cc因为.cc在页面的其他位置匹配太多s.该.cc的需要是可以立即低于.aa或低于.aa > .bb.

css stylus css-selectors less

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

从内部测试访问ScalaTest测试名称?

是否可以从ScalaTest测试中访问当前正在执行的测试的名称?(我该怎么做?)

背景:

我正在测试我的数据访问对象最终会抛出OverQuotaException一个用户,例如创建太多页面.这些测试需要很长时间才能运行.为了感觉更快乐,我想将进度打印到stdout - 由于有很多测试,我想在输出中包含测试名称,所以我知道当前正在运行什么测试.

(我在这里找不到任何看似相关的功能:http: //www.artima.com/docs-scalatest-2.0.M5/#org.scalatest.FreeSpec)

例:

  "QuotaCharger can" - {
    "charge and decline quota consumers" - {

      "charge a per site IP number (guest user)" in {
         // ... Here, a guest user post very many comments until it's over quota.
         // This takes a little while, and there are many similar tests.

         // ---> Here <--- I'd like to access the string:
         //   "charge a per site IP number (guest user)",
         // …
Run Code Online (Sandbox Code Playgroud)

integration-testing scala scalatest

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