小编Min*_*ing的帖子

Scala Function.tupled和Function.untupled等价于变量arity,或调用变量arity函数与元组

昨晚我试图做一些接受和调用泛型函数的东西(即类型在调用站点已知,但可能在调用站点之间有所不同,因此定义应该是跨arities的通用).

例如,假设我有一个功能f: (A, B, C, ...) => Z.(实际上有很多这样的fs,我事先并不知道,因此我无法修复类型或数量A, B, C, ..., Z.)

我正在努力实现以下目标.

  1. 如何f通常使用实例调用(A, B, C, ...)?如果签名f是事先知道的,那么我可以做一些涉及Function.tupled f或等同的事情.

  2. 如何定义另一个函数或方法(例如,一些objectapply具有相同签名的方法)f?也就是说,当且仅当类型检查时,如何定义g哪种类型检查?我正在研究Shapeless的.从我到目前为止所知,至少解决了"代表一个任意arity args列表"的问题,而且,Shapeless将解决与元组问题的转换.但是,我仍然不确定我是否理解这与通用arity的功能如何相符(如果有的话).g(a, b, c, ...)f(a, b, c, ...)HListHList

  3. 如何定义具有相关类型签名的其他函数或方法f?现在想到的最大的例子是一些h: (A, B, C, ...) => SomeErrorThing[Z] \/ Z.

我记得前一段时间在Shapeless上观看过一次会议.虽然演示者没有明确地展示这些东西,但他们所做的演示(围绕抽象/泛化元组与HLists的各种技术)会让我相信使用相同的工具可以实现与上述类似的东西.

提前致谢!

types scala shapeless

14
推荐指数
1
解决办法
1121
查看次数

用于内联网络编程的PHP的替代品?

我一开始就用php学习了网络编程.它有一些我觉得非常有用的功能,但整体语言不是我喜欢的东西,只是个人喜好.我想知道使用不同的底层编程语言(Python?Ruby?)可以使用哪些替代方法来提供类似的功能.

我在找什么:

  • 通用编程能力
  • 嵌入HTML的内嵌服务器端代码(即我希望能够根据需要使我的文档成为纯HTML,而不是要求特殊语法,即使我不想要动态内容)
  • 访问请求参数
  • 能够发送标题,设置cookie等

较好的是:

  • 不需要单独的服务器进程
  • 易于与Apache连接

有没有人有什么建议?

我试图做的一件事是通过CGI嵌入Ruby(erb).这看起来非常适合纸张.不幸的是,我无法让它工作,因为我正在遵循一些不同的指南,结合它们的结果没有成功.无论如何,似乎这不允许我设置任意标头(更重要的是,使用会话和cookie).

注意:我目前不是在寻找完整的Web框架.在其他HTML页面中只有相对少量的动态内容.

谢谢!

php ruby python web-applications

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

从Scala控制台调用Play框架应用程序

我有一个Play Framework 2.3应用程序.我可以放入Scala控制台activator console.但是,当我尝试从我的应用程序调用代码时,特别是一些使用的帮助函数WS,它使用隐式import play.api.Play.current检索当前正在运行的应用程序,我收到错误消息java.lang.RuntimeException: There is no started application.

我需要采取哪些步骤才能将我的应用加载到当前的控制台会话中?

一个类似的现有问题,但接受的答案似乎是使用框架测试助手的模拟应用程序.最好,我想在我的实际应用程序的上下文中运行.如果我必须使用假的应用程序,是否可以使它与我的开发环境(运行时得到的activator run)相匹配,而不是我的测试环境(运行单元测试时得到的)?

提前致谢!

scala playframework playframework-2.3

10
推荐指数
2
解决办法
1442
查看次数

如何处理Web应用程序中的并发更改?

以下是我想在Web应用程序中执行的两个潜在工作流程.

变化1

  • 用户发送请求
  • 服务器读取数据
  • 服务器修改数据
  • 服务器保存修改后的数

变化2:

  • 用户发送请求
  • 服务器读取数据
  • 服务器向用户发送数据
  • 用户发送修改请求
  • 服务器保存修改后的数

在每种情况下,我都想知道:确保对此服务的并发访问能够产生合理结果的标准方法是什么?(即没有人的编辑被破坏,值对应于编辑的某些顺序,等等)

情况是假设的,但这里有一些细节,我可能需要在实践中处理这个问题:

  • Web应用程序,但语言未指定
  • 可能,使用Web框架
  • 数据存储是SQL关系数据库
  • 所涉及的逻辑太复杂,无法在查询中表达,例如value = value + 1

我觉得我宁愿不尝试在这里重新发明轮子.当然,这些是众所周知的解决方案中众所周知的问题.请指教.

谢谢.

database concurrency web-applications race-condition

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

在Play framework 2.x app中调度/延迟作业/任务

在典型的Web应用程序中,有些事情我更喜欢作为延迟的作业/任务运行.他们往往具有以下部分或全部属性:

  • 需要很长时间(从几秒到几分钟到多个小时).
  • 占用一些资源(CPU,网络,磁盘,外部API限制等)
  • 结果不是立即需要的.没有它就可以完成HTTP响应.好的(甚至可能更好)延迟到以后.
  • 可以(并且可能优选地)在(a)不同于web服务器的机器上运行.机器可能是专用的作业/任务运行者.
  • 应该响应其他事件运行,或定期启动.

在Scala + Play Framework 2.x应用程序中设置,排队,安排和运行延迟的作业/任务的首选方法是什么?

更多细节...

我过去使用的模式,如果适用,我想复制的模式是:

  • 在Web请求的处理程序中,或在类似cron的调用中,将队列排入队列
  • 在工作跑步者中,一次反复出列并运行一项工作
  • 可能处理录制作业结果

这似乎是一个相对简单但仍然相对灵活的模式.

我过去遇到的例子包括:

  • 在DB中更新派生数据
  • 分析/跟踪API调用Web请求
  • 删除过期的会话或其他陈旧/过时的DB记录
  • 定期批量ETL

在其他语言/框架中,我通常会使用作业/任务框架.例子包括:

  • 在Ruby + Rails应用程序中使用Resque
  • Celery在Python + Django应用程序中

我发现了以下现有材料,但遗憾的是,我不认为它们直接适合我的用例.

  • 播放1.x异步作业API(+引用它的各种SO问题).似乎已在2.x行中删除.没有提到取代它的东西.
  • 播放2.x Akka集成.似乎非常通用.我想可以使用Akka进行上述操作,但如果已经存在,我宁愿不编写作业/任务框架.此外,没有关于如何将作业运行器机器与Web服务器分开的信息.
  • 这个答案.对于"短到中等持续时间的IO绑定"情况似乎有希望,例如分析调用,但不一定是"CPU绑定"情况(可能不应该绑定Web服务器上的CPU,更喜欢发送到不同的节点), "大量网络"案例,或"多个小时"案例(可能不应该留在Web服务器的后台,即使它没有占用太多资源).
  • 这个问题和相关问题.与上面类似,在我看来,这仅涵盖了在同一个Web服务器上运行的情况.

进一步澄清用例(根据评论者的要求).我尝试在这里复制的resque或芹菜等有两个主要的用例:

  • 网站上的某些事件(通常,传入的Web请求会导致任务入队.)
  • 任务应定期运行.(大多数情况下,这实现为:定期执行,将任务排队,如上所述.)

对于resque或celery,两个用例排队的任务以相同的方式进入队列,并由runner/worker进程以相同的方式处理.除非其他Scala或Play特定的考虑因素,这将是我对如何处理此问题的初步猜测.

进一步澄清为什么我不相信Akka调度程序适合我开箱即用的用例(根据评论者的要求):

毫无疑问,使用Akka调度程序(用于定期作业),akka-remote和akka-cluster(用于作业调用者和作业运行者之间的通信)的某种组合来构建适合的解决方案,这种方法需要一定的量胶水代码本身几乎是一个延迟的工作框架.如果它存在,我宁愿使用现有的开箱即用的解决方案,而不是重新发明轮子.

scala playframework playframework-2.0 playframework-2.3

7
推荐指数
0
解决办法
1588
查看次数

如何在 ES6 Map 中获得键的深度相等?替代使用复杂对象作为 ES6 Map 键?

下面是一些示例 Javascript (ES6) 代码,它们不会按照直觉想象的那样做。

const exampleMap = new Map([[{a: 1}, 2]]);
console.log(exampleMap.get({a: 1}));
Run Code Online (Sandbox Code Playgroud)

事实证明,这会打印undefined. 为什么?这个 StackOverflow answer 中涵盖了推理。每对MDN条目地图Map使用===为重点的平等。并且,根据的 MDN 条目===Objects 通过引用相等进行比较。

这一切都很好。它完全按照文档所说的去做。不幸的是,上面的代码试图做的事情会非常有用,即使它不是规范的实际行为。

我如何使用Map,或者我应该使用什么来代替Map,来获得键值查找,其中键是通过对象深度相等语义进行比较的?

javascript ecmascript-6

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

Scala或Java相当于Ruby factory_girl或Python factory_boy(用于单元测试的便捷工厂模式)

当我在动态类型的Ruby或Python中编写单元测试时,我分别使用库factory_girlfactory_boy,以便方便地生成测试对象.它们提供了直接对象实例化的便捷功能,例如:

  • 工厂继承和覆盖
  • 字段默认值和覆盖
  • 懒惰计算的依赖/派生字段
  • 构建依赖/相关的其他对象
  • 隐式惰性字段依赖性解析

在静态类型的Java或Scala中编写单元测试时,我可以使用哪些库/框架来实现具有类似优点的类似效果?

提前致谢!

我在这里发现了一个类似的StackOverflow问题,但不幸的是,最好的答案是(释义),"没有直接的等价,因为那将毫无意义".

java unit-testing scala factory-boy factory-bot

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

Spark 在带有 SBT 程序集 JAR 的 spark-submit 中找不到应用程序类本身 (ClassNotFoundException)

背景

我正在尝试使用 Scala 开始使用 Spark。

最初,我试图编写一个流式 Kinesis 消费者,并遵循这个官方示例。虽然,此时我已经减少了我的错误案例以删除与 Kinesis 相关的任何内容,除了包依赖项,并且错误保持不变。

我使用 SBT 来生成我的项目的程序集 JAR。然后,我尝试使用spark-submit. (详细步骤如下。)

这始终以 失败ClassNotFoundException,声称它找不到我的应用程序的主类。(详细输出如下。)

我应该强调:

就我的理解而言,我不相信这与ClassNotFoundException其他海报看到的相同,我不相信这个问题是这些问题的重复。

特别是,据我所知:

  • 有问题的类是我的主要应用程序类本身。
  • 我引用了正确的完全限定类名。
  • 我已通过 SBT 生成程序集 JAR,将依赖项包含在输出 JAR 中。

重现步骤

  1. 初始化空的 Scala SBT 项目。(我在 IntelliJ 中使用了默认模板,但我认为这并不重要。)
  2. 添加项目代码。(包括在下面。)
  3. sbt assembly
  4. ./bin/spark-submit --class "sparkpoc.KinesisExample" --master local[4] ~/git/ming-spark-poc/target/scala-2.11/ming-spark-poc-assembly-0.1.jar (有适当的替换。)

错误信息

$ ./bin/spark-submit --class "sparkpoc.KinesisExample" --master local[4] ~/git/ming-spark-poc/target/scala-2.11/ming-spark-poc-assembly-0.1.jar 
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.hadoop.security.authentication.util.KerberosUtil (file:/Users/ming/misc/spark-2.3.0-bin-hadoop2.7/jars/hadoop-auth-2.7.3.jar) to method …
Run Code Online (Sandbox Code Playgroud)

scala sbt sbt-assembly apache-spark

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

Flink在Java 10启动时失败.TaskManager:java.lang.ClassCastException:[B无法强制转换为[C

背景

启动Flink时,我立即在日志中失败,并且后续运行应用程序的尝试都失败了.我已经缩小了特定于Java 10的失败,可能还有其他先决条件.

摄制

  1. 官方下载页面下载并解压缩Flink 1.4.2 .
  2. 切换到Java 10.我的特定版本信息在(1)中.
  3. 用Flink开始./bin/start-local.sh.
  4. 观察TaskManager日志.例如,cat ./log/flink-ming-taskmanager-0-C02TJ6XBG8WN.log.将会有大量的错误输出,如(2)所示.
  5. 运行任何应用程序 例如,./bin/flink run ~/git/ming-data-frameworks-poc/flinkpoc/target/scala-2.11/flinkpoc_2.11-0.1-SNAPSHOT.jar --port 900.我的示例应用程序在(3)中,但据我所知,任何应用程序都会发生这种情况.它应该失败并出现错误,如(4)中所示
  6. 停止Flink ./bin/stop-local.sh.
  7. 清空Flink日志目录.
  8. 切换到Java 8.我的特定版本信息在(5)中.
  9. 重复步骤3 - 7.
  10. 它应该显示成功消息,如(6)所示.它不应该因错误而失败.TaskManager日志不应包含步骤4中的错误输出.

问题

这是一个已知的不兼容性吗?它没有记录在案.特别是,官方快速入门文档说:

Flink可在Linux,Mac OS X和Windows上运行.为了能够运行Flink,唯一的要求是安装一个有效的Java 7.x(或更高版本).

如何在Java 10上修复或解决此问题?

这是Flink的错误吗?是否应该在项目的上游报告?

提前感谢您提供任何建议或帮助.

补充信息

(1)

$ uname -a
Darwin C02TJ6XBG8WN 16.7.0 Darwin Kernel Version 16.7.0: Tue Jan 30 11:27:06 PST 2018; root:xnu-3789.73.11~1/RELEASE_X86_64 x86_64

$ java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 …
Run Code Online (Sandbox Code Playgroud)

scala apache-flink

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

Scala类型系统,通过自有类型的参数约束成员的类型

这里不太确定标准术语,所以我会试着描述我想要做的事情.如果您感到好奇,我实际上尝试编写的应用程序是一个类似于Resque或rq的异步任务队列.

我有一个类型TaskDef[ArgsT <: AnyVal, ResultT <: AnyVal].如果你很好奇,TaskDef代表"如何执行一个接受参数类型ArgsT和结果类型的异步任务ResultT,或者任务背后的代码".

我正在尝试定义一种类型TaskInst[DefT <: TaskDef].如果你很好奇,则TaskInst代表"a TaskDef和相关参数来运行它,或者,一个实际的任务实例被提交到队列".TaskInst有两个成员,definition: DefT以及arguments其类型,我不能在代码编写.

在英语中,我所希望的约束是:"对于一个给定的DefT,其中DefT一些TaskDef[ArgsT, ResultT],TaskInst[DefT]应该包含一个DefTArgsT".也就是说,任务定义的参数类型应该与给予任务的参数类型相匹配.

如何在Scala类型系统中表达这一点?

或者,我是否错误地为我的域建模并尝试做一些非惯用的事情?一些替代方法会更加惯用吗?

提前致谢!

编辑:

我认为我的历史自我写作Java可能会在这一点上使用未经检查的演员表.对于一定数量的未经检查的强制转换,这绝对是可行的,只是省略了TaskInst参数类型与嵌入式参数类型之间的约束TaskDef.但是,我确实想知道这是否是编译器可以强制执行的,并且希望没有太可怕的语法.

types scala

3
推荐指数
1
解决办法
75
查看次数

如何将 TypeScript 构造函数参数属性与类继承和超类构造函数结合起来?

我明白,在 TypeScript 中,人们可以:

是否可以将这两种行为结合起来?也就是说,是否可以声明一个使用参数属性的基类,然后在一个也使用参数属性的派生类中继承它?派生类是否需要重新声明它们,将它们传递给超类构造函数调用等?

这有点令人困惑,我无法从文档中弄清楚这是否可行,或者 - 如果是的话 - 如何。

如果有人对此有任何见解,请提前致谢。

typescript

3
推荐指数
1
解决办法
2797
查看次数

Django Rails控制器继承的等价物

我与Rails一起使用的常见模式是控制器继承.我会将各种共享功能放入一个基本控制器,ApplicationController或者一些更多的域/关注特定的控制器,然后继承这个基本控制器来创建单独的控制器.

以下是我已经完成或已经看到各种Rails应用程序使用控制器继承的一些事情.

  • 存放某些类型的共享代码.
  • 将共享的前/后过滤器应用于请求.可能使用例如修改传入请求,修改传出响应或更改请求流before_filter.常见用例包括身份验证/授权,请求验证和应用状态前置条件检查.
  • 为共享基本模板的部分状态/会话相关部分提供共享呈现上下文,例如,过滤器设置基本模板随后使用的一些实例变量.例如,站点具有共享标头,该标头显示当前用户和会话的某些特定于域的详细信息.

以下是我已经完成或看过各种Django应用程序的一些事情.它们与上面的内容并不完全相符,而且还有一些差距,我不确定如何以干净的方式进行复制.

  • 我已经看到Django应用程序倾向于更多地使用常规Python函数来封装多种代码重用,利用python模块进行代码组织.
  • 在基于函数的Django视图的情况下,实现前置/后置过滤器的一种可能方式是使用有条件地调用底层视图的装饰器.有没有办法避免需要将装饰器显式附加到每个视图?
  • 我真的不知道处理基本模板上下文的好方法.在某些情况下,如果共享组件是相对本地化的,我可以使用自定义模板呈现为自定义模板标记register.inclusion_tag或者其他类似的机制,但如果依赖于上下文的内容不能轻易地分解到单个组件中,这不是一个好的选择.在其他情况下,如果在任何地方使用附加上下文,可以使用中间件将期望状态注入到请求中,但是如果这应该被局部化到例如路线的某个子集,则这不是一个好的选择.但是这些都不像Rails控制器继承那样普遍,特别是,我不知道一个很好的解决方案,可以向基本模板提供额外的模板渲染上下文变量,类似于基本控制器上的实例变量.

在Django中完成上述操作的推荐/惯用方法是什么?当然,Rails和Django有一些哲学和架构上的差异,所以"相当于X"并不是绝对的一对一.尽管如此,我希望能够对如何做这些常用的用例有所了解.

感谢您阅读此文本墙,并提前感谢您的见解!

PS,一个相关的问题和答案,涉及其中一些要点: Django相当于Rails application_controller

python django django-views

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

保持.gitignore的一部分受版本控制,但另一部分

我有一个.gitignore地方,我希望某些部分应该在整个项目中共享,但其他部分应该是针对具体的.我怎样才能达到这个或类似的效果?

我最初的想法是将.gitignore分为两部分,一个项目共享部分和一个特定于个人的部分,其中项目共享部分已签入,但个别特定部分未签入.在Google和StackOverflow上搜索表明不存在拆分/包含其他文件机制.

有没有人有一个很好的选择?提前致谢!

git version-control gitignore

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