小编hir*_*ist的帖子

如何强制lein deps重新获取本地jar/libs

使用以下说明:

http://www.pgrs.net/2011/10/30/using-local-jars-with-leiningen/

我在本地存储库中安装了一些本地jar.

当我想更新项目中的jar时,我将jar重新安装到存储库中,然后运行lein deps.我发现不知何故,jar在我的项目中没有更新.即使我rm -rf libs文件夹中的所有内容,也不会拾取新的jar.我能够让它工作的唯一方法是更改​​jar的名称.

它有点奇怪,因为即使我删除了旧jar的所有痕迹(据我所知),这也会发生 - lein是否隐藏了libs的快照/缓存?

jar clojure maven leiningen

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

如何在组中找到第一个非空值?(使用数据集api进行二级排序)

我正在研究一个代表事件流的数据集(比如从网站上发布的跟踪事件).所有活动都有时间戳.我们经常遇到的一个用例是尝试找到给定字段的第一个非空值.因此,举例来说,最让我们感受到的是:

val eventsDf = spark.read.json(jsonEventsPath) 

case class ProjectedFields(visitId: String, userId: Int, timestamp: Long ... )

val projectedEventsDs = eventsDf.select(
    eventsDf("message.visit.id").alias("visitId"),
    eventsDf("message.property.user_id").alias("userId"),
    eventsDf("message.property.timestamp"),

    ...

).as[ProjectedFields]

projectedEventsDs.groupBy($"visitId").agg(first($"userId", true))
Run Code Online (Sandbox Code Playgroud)

上述代码的问题first在于无法保证馈送到该聚合函数的数据的顺序.我希望它被排序timestamp以确保它是时间戳的第一个非null userId而不是任何随机的非null userId.

有没有办法在分组中定义排序?

使用Spark 2.10


BTW,在SPARK DataFrame中为Spark 2.10建议的方式:选择每个组的第一行是在分组之前进行排序 - 这不起作用.例如,以下代码:

case class OrderedKeyValue(key: String, value: String, ordering: Int)
val ds = Seq(
  OrderedKeyValue("a", null, 1), 
  OrderedKeyValue("a", null, 2), 
  OrderedKeyValue("a", "x", 3), 
  OrderedKeyValue("a", "y", 4), 
  OrderedKeyValue("a", null, 5)
).toDS()

ds.orderBy("ordering").groupBy("key").agg(first("value", true)).collect()
Run Code Online (Sandbox Code Playgroud)

有时会返回Array([a,y]),有时Array([a,x])

apache-spark apache-spark-sql apache-spark-dataset

7
推荐指数
1
解决办法
2452
查看次数

如何让puma将日志发送到stdout

我希望我的RoR / puma日志仅转到stdout而不是日志文件。就像stdout_redirect从我的puma配置(又名puma.rb)中删除该行一样简单吗?

ruby-on-rails puma

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

即使模型没有变化,如何强制 Angular 重新绑定/更新

好的——所以你可能会想为什么你想要这个,但我正在尝试使用 ng-html-bind 渲染一些 HTML,如下所示(在 HAML 中):

#my-visualization-panel{'ng-bind-html' => 'htmlSource'}
Run Code Online (Sandbox Code Playgroud)

htmlSource 有一些 html,它使用 c3.js 可视化库呈现可视化。看起来htmlSource像这样

<script>
  var MY_DATA = localStorage.getItem('MY_DATA');
  c3.generate({
    data: {
      columns: MY_DATA
    }
 });
</script>
Run Code Online (Sandbox Code Playgroud)

所以问题是我通过重新设置来更新可视化localStorage['MY_DATA']。但是,虽然引用的数据MY_DATA可能会更改,但实际数据htmlSource不会更改,因此视图无法更新。

有没有办法强制视图更新,即使模型表面上没有更新?

angularjs ng-bind-html

5
推荐指数
1
解决办法
6075
查看次数

FactoryGirl不知道新列

嗨,我正在使用FactoryGirl 4.9.0 w / Rails 4.2.11。我在模型中添加了一个布尔列,Query如下所示:

class AddSetLatestResultToQueries < ActiveRecord::Migration
  def change
    add_column :queries, :latest_result_s3_url_flag, :boolean, null: false, default: false
  end
end
Run Code Online (Sandbox Code Playgroud)

这个标志可以正常工作,应用程序本身也可以正常工作,但是当涉及到rspec时,FactoryGirl似乎在承认这一新列方面遇到了麻烦。

我试图将其添加到工厂模型中,如下所示:

FactoryGirl.define do
  factory :query do
    latest_result_s3_url_flag false
    title 'some title'
    latest_body 'SELECT TIMEOFDAY();'

 ... etc ...

end
Run Code Online (Sandbox Code Playgroud)

但是当我运行时rpsec spec,我看到此错误:

      NoMethodError:
        undefined method `latest_result_s3_url_flag=' for #<Query:0x00007ff6f9108428>
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails factory-bot

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

我如何在scala中的运行时类上进行模式匹配

我有一段这样的代码:

override def getOption[T: TypeTag: ClassTag](path: String): Option[T] = {
  implicitly[scala.reflect.ClassTag[T]].toString() match {
    case "java.lang.String" => HandleBlank(super.getOption[String](path)).asInstanceOf[Option[T]]
    case _ => super.getOption[T](path)
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为必须有一个更好的方法来做到这一点,而不是匹配字符串,但尝试了一些事情(如classOf[String]),似乎找不到有用的东西.

对于上下文,getOption(在我们试图覆盖的超类中)从json4s AST JValue对象获取Option值

def getOption[T: TypeTag: ClassTag](path: String): Option[T] = Try(getJValue(path).extract[T]).toOption

def getJValue(path: String): JValue = {
  path.split('.').foldLeft(value)((a, b) => a \ b) match {
    case JNull => JNothing
    case j     => j
  }
}
Run Code Online (Sandbox Code Playgroud)

我的想法是,我想要对其进行填充,以便仅对于该方法的String类型,我们希望以特殊方式处理空字符串.

scala json4s

0
推荐指数
1
解决办法
496
查看次数