昨晚我试图做一些接受和调用泛型函数的东西(即类型在调用站点已知,但可能在调用站点之间有所不同,因此定义应该是跨arities的通用).
例如,假设我有一个功能f: (A, B, C, ...) => Z.(实际上有很多这样的fs,我事先并不知道,因此我无法修复类型或数量A, B, C, ..., Z.)
我正在努力实现以下目标.
如何f通常使用实例调用(A, B, C, ...)?如果签名f是事先知道的,那么我可以做一些涉及Function.tupled f或等同的事情.
如何定义另一个函数或方法(例如,一些object的apply具有相同签名的方法)f?也就是说,当且仅当类型检查时,如何定义g哪种类型检查?我正在研究Shapeless的.从我到目前为止所知,至少解决了"代表一个任意arity args列表"的问题,而且,Shapeless将解决与元组问题的转换.但是,我仍然不确定我是否理解这与通用arity的功能如何相符(如果有的话).g(a, b, c, ...)f(a, b, c, ...)HListHList
如何定义具有相关类型签名的其他函数或方法f?现在想到的最大的例子是一些h: (A, B, C, ...) => SomeErrorThing[Z] \/ Z.
我记得前一段时间在Shapeless上观看过一次会议.虽然演示者没有明确地展示这些东西,但他们所做的演示(围绕抽象/泛化元组与HLists的各种技术)会让我相信使用相同的工具可以实现与上述类似的东西.
提前致谢!
我一开始就用php学习了网络编程.它有一些我觉得非常有用的功能,但整体语言不是我喜欢的东西,只是个人喜好.我想知道使用不同的底层编程语言(Python?Ruby?)可以使用哪些替代方法来提供类似的功能.
我在找什么:
较好的是:
有没有人有什么建议?
我试图做的一件事是通过CGI嵌入Ruby(erb).这看起来非常适合纸张.不幸的是,我无法让它工作,因为我正在遵循一些不同的指南,结合它们的结果没有成功.无论如何,似乎这不允许我设置任意标头(更重要的是,使用会话和cookie).
注意:我目前不是在寻找完整的Web框架.在其他HTML页面中只有相对少量的动态内容.
谢谢!
我有一个Play Framework 2.3应用程序.我可以放入Scala控制台activator console.但是,当我尝试从我的应用程序调用代码时,特别是一些使用的帮助函数WS,它使用隐式import play.api.Play.current检索当前正在运行的应用程序,我收到错误消息java.lang.RuntimeException: There is no started application.
我需要采取哪些步骤才能将我的应用加载到当前的控制台会话中?
有一个类似的现有问题,但接受的答案似乎是使用框架测试助手的模拟应用程序.最好,我想在我的实际应用程序的上下文中运行.如果我必须使用假的应用程序,是否可以使它与我的开发环境(运行时得到的activator run)相匹配,而不是我的测试环境(运行单元测试时得到的)?
提前致谢!
以下是我想在Web应用程序中执行的两个潜在工作流程.
变化1
变化2:
在每种情况下,我都想知道:确保对此服务的并发访问能够产生合理结果的标准方法是什么?(即没有人的编辑被破坏,值对应于编辑的某些顺序,等等)
情况是假设的,但这里有一些细节,我可能需要在实践中处理这个问题:
我觉得我宁愿不尝试在这里重新发明轮子.当然,这些是众所周知的解决方案中众所周知的问题.请指教.
谢谢.
在典型的Web应用程序中,有些事情我更喜欢作为延迟的作业/任务运行.他们往往具有以下部分或全部属性:
在Scala + Play Framework 2.x应用程序中设置,排队,安排和运行延迟的作业/任务的首选方法是什么?
更多细节...
我过去使用的模式,如果适用,我想复制的模式是:
这似乎是一个相对简单但仍然相对灵活的模式.
我过去遇到的例子包括:
在其他语言/框架中,我通常会使用作业/任务框架.例子包括:
我发现了以下现有材料,但遗憾的是,我不认为它们直接适合我的用例.
进一步澄清用例(根据评论者的要求).我尝试在这里复制的resque或芹菜等有两个主要的用例:
对于resque或celery,两个用例排队的任务以相同的方式进入队列,并由runner/worker进程以相同的方式处理.除非其他Scala或Play特定的考虑因素,这将是我对如何处理此问题的初步猜测.
进一步澄清为什么我不相信Akka调度程序适合我开箱即用的用例(根据评论者的要求):
毫无疑问,使用Akka调度程序(用于定期作业),akka-remote和akka-cluster(用于作业调用者和作业运行者之间的通信)的某种组合来构建适合的解决方案,这种方法需要一定的量胶水代码本身几乎是一个延迟的工作框架.如果它存在,我宁愿使用现有的开箱即用的解决方案,而不是重新发明轮子.
下面是一些示例 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,来获得键值查找,其中键是通过对象深度相等语义进行比较的?
当我在动态类型的Ruby或Python中编写单元测试时,我分别使用库factory_girl和factory_boy,以便方便地生成测试对象.它们提供了直接对象实例化的便捷功能,例如:
在静态类型的Java或Scala中编写单元测试时,我可以使用哪些库/框架来实现具有类似优点的类似效果?
提前致谢!
我在这里发现了一个类似的StackOverflow问题,但不幸的是,最好的答案是(释义),"没有直接的等价,因为那将毫无意义".
我正在尝试使用 Scala 开始使用 Spark。
最初,我试图编写一个流式 Kinesis 消费者,并遵循这个官方示例。虽然,此时我已经减少了我的错误案例以删除与 Kinesis 相关的任何内容,除了包依赖项,并且错误保持不变。
我使用 SBT 来生成我的项目的程序集 JAR。然后,我尝试使用spark-submit. (详细步骤如下。)
这始终以 失败ClassNotFoundException,声称它找不到我的应用程序的主类。(详细输出如下。)
我应该强调:
就我的理解而言,我不相信这与ClassNotFoundException其他海报看到的相同,我不相信这个问题是这些问题的重复。
特别是,据我所知:
sbt assembly./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) 启动Flink时,我立即在日志中失败,并且后续运行应用程序的尝试都失败了.我已经缩小了特定于Java 10的失败,可能还有其他先决条件.
./bin/start-local.sh.cat ./log/flink-ming-taskmanager-0-C02TJ6XBG8WN.log.将会有大量的错误输出,如(2)所示../bin/flink run ~/git/ming-data-frameworks-poc/flinkpoc/target/scala-2.11/flinkpoc_2.11-0.1-SNAPSHOT.jar --port 900.我的示例应用程序在(3)中,但据我所知,任何应用程序都会发生这种情况.它应该失败并出现错误,如(4)中所示./bin/stop-local.sh.这是一个已知的不兼容性吗?它没有记录在案.特别是,官方快速入门文档说:
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) 这里不太确定标准术语,所以我会试着描述我想要做的事情.如果您感到好奇,我实际上尝试编写的应用程序是一个类似于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]应该包含一个DefT和ArgsT".也就是说,任务定义的参数类型应该与给予任务的参数类型相匹配.
如何在Scala类型系统中表达这一点?
或者,我是否错误地为我的域建模并尝试做一些非惯用的事情?一些替代方法会更加惯用吗?
提前致谢!
编辑:
我认为我的历史自我写作Java可能会在这一点上使用未经检查的演员表.对于一定数量的未经检查的强制转换,这绝对是可行的,只是省略了TaskInst参数类型与嵌入式参数类型之间的约束TaskDef.但是,我确实想知道这是否是编译器可以强制执行的,并且希望没有太可怕的语法.
我明白,在 TypeScript 中,人们可以:
是否可以将这两种行为结合起来?也就是说,是否可以声明一个使用参数属性的基类,然后在一个也使用参数属性的派生类中继承它?派生类是否需要重新声明它们,将它们传递给超类构造函数调用等?
这有点令人困惑,我无法从文档中弄清楚这是否可行,或者 - 如果是的话 - 如何。
如果有人对此有任何见解,请提前致谢。
我与Rails一起使用的常见模式是控制器继承.我会将各种共享功能放入一个基本控制器,ApplicationController或者一些更多的域/关注特定的控制器,然后继承这个基本控制器来创建单独的控制器.
以下是我已经完成或已经看到各种Rails应用程序使用控制器继承的一些事情.
before_filter.常见用例包括身份验证/授权,请求验证和应用状态前置条件检查.以下是我已经完成或看过各种Django应用程序的一些事情.它们与上面的内容并不完全相符,而且还有一些差距,我不确定如何以干净的方式进行复制.
register.inclusion_tag或者其他类似的机制,但如果依赖于上下文的内容不能轻易地分解到单个组件中,这不是一个好的选择.在其他情况下,如果在任何地方使用附加上下文,可以使用中间件将期望状态注入到请求中,但是如果这应该被局部化到例如路线的某个子集,则这不是一个好的选择.但是这些都不像Rails控制器继承那样普遍,特别是,我不知道一个很好的解决方案,可以向基本模板提供额外的模板渲染上下文变量,类似于基本控制器上的实例变量.在Django中完成上述操作的推荐/惯用方法是什么?当然,Rails和Django有一些哲学和架构上的差异,所以"相当于X"并不是绝对的一对一.尽管如此,我希望能够对如何做这些常用的用例有所了解.
感谢您阅读此文本墙,并提前感谢您的见解!
PS,一个相关的问题和答案,涉及其中一些要点: Django相当于Rails application_controller
我有一个.gitignore地方,我希望某些部分应该在整个项目中共享,但其他部分应该是针对具体的.我怎样才能达到这个或类似的效果?
我最初的想法是将.gitignore分为两部分,一个项目共享部分和一个特定于个人的部分,其中项目共享部分已签入,但个别特定部分未签入.在Google和StackOverflow上搜索表明不存在拆分/包含其他文件机制.
有没有人有一个很好的选择?提前致谢!
scala ×7
python ×2
types ×2
apache-flink ×1
apache-spark ×1
concurrency ×1
database ×1
django ×1
django-views ×1
ecmascript-6 ×1
factory-bot ×1
factory-boy ×1
git ×1
gitignore ×1
java ×1
javascript ×1
php ×1
ruby ×1
sbt ×1
sbt-assembly ×1
shapeless ×1
typescript ×1
unit-testing ×1