我想在Play 2.2.x应用程序中实现一个CORS过滤器.到目前为止,我有以下内容:
package filters
import play.api.mvc._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import play.api.GlobalSettings
class CorsFilter extends EssentialFilter {
def apply(next: EssentialAction) = new EssentialAction {
def apply(requestHeader: RequestHeader) = {
next(requestHeader).map { result =>
result.withHeaders("Access-Control-Allow-Origin" -> "*",
"Access-Control-Expose-Headers" -> "WWW-Authenticate, Server-Authorization",
"Access-Control-Allow-Methods" -> "POST, GET, OPTIONS, PUT, DELETE",
"Access-Control-Allow-Headers" -> "x-requested-with,content-type,Cache-Control,Pragma,Date")
}
}
}
}
object Global extends WithFilters(new CorsFilter) with GlobalSettings
Run Code Online (Sandbox Code Playgroud)
以及预检选项操作:
def preflight(all: String) = Action {
Ok("").withHeaders("Access-Control-Allow-Origin" -> "*",
"Allow" -> "*",
"Access-Control-Allow-Methods" -> "POST, GET, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers" …Run Code Online (Sandbox Code Playgroud) 我有一个名为 的 shell 脚本parent.sh,它执行一些操作,然后调用另一个 shell 脚本child.sh,该脚本执行一些处理并将一些输出写入文件output.txt。
我希望parent.sh脚本仅在写入该文件后继续处理。output.txt我如何知道文件已完成写入?
编辑:添加问题的答案: child.sh 在退出之前是否完成了对文件的写入?是的
parent.sh是在前台运行child.sh还是在后台运行? 我不确定 - 它是从 withing 中调用的,parent.sh如下所示:./child.sh "$param1" "$param2"
我无法理解如何创建以下代码的实现:
Ad-hoc polymorphism
The third approach in Scala is to provide an implicit conversion or implicit
parameters for the trait.
scala> trait Plus[A] {
def plus(a1: A, a2: A): A
}
defined trait Plus
scala> def plus[A: Plus](a1: A, a2: A): A = implicitly[Plus[A]].plus(a1, a2)
plus: [A](a1: A, a2: A)(implicit evidence$1: Plus[A])A
Run Code Online (Sandbox Code Playgroud)
如何创建具体实现,例如添加字符串或整数?
我想知道是否有办法在列表中找到一个元素并将其移动到Scala列表的前面?有没有什么简单的方法可以做到这一点,除了迭代列表,然后删除该元素,然后将其预先挂起到列表的前面?
我有一个小型Web应用程序,它打开TCP套接字连接,发出命令,读取响应,然后关闭对特定REST端点的每个请求的连接.
我已经开始使用Apache JMeter对端点进行负载测试,并注意到在运行一段时间后,我开始看到"无法分配请求的地址"之类的错误,打开此连接的代码是:
def lookup(word: String): Option[String] = {
try {
val socket = new Socket(InetAddress.getByName("localhost"), 2222)
val out = new PrintStream(socket.getOutputStream)
val reader = new BufferedReader(new InputStreamReader(socket.getInputStream, "utf8"))
out.println("lookup " + word)
out.flush()
var curr = reader.readLine()
var response = ""
while (!curr.contains("SUCC") && !curr.contains("FAIL")) {
response += curr + "\n"
curr = reader.readLine()
}
socket.close()
curr match {
case code if code.contains(SUCCESS_CODE) => {
Some(response)
}
case _ => None
}
}
catch {
case e: Exception => …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Linux Ubuntu 14.10 Docker 容器中运行一个脚本,该容器使用fallocate如下命令:
fallocate -l 10M 10meg
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此脚本时,甚至当我通过 ssh 连接到容器时运行命令时,也会收到以下错误:
root@~$>> fallocate -l 10M 10meg
fallocate: fallocate failed: Operation not supported
Run Code Online (Sandbox Code Playgroud)
知道为什么这在我的容器内失败吗?
我有一个元组列表,我想找到具有最大值的元组x.在有多个最大值的情况下x,我想随机选择一个.我无法弄清楚如何实现这种随机选择功能.以下是我到目前为止的代码:
public void testSelectRandomFromLargestVals() {
List<Tuple<Integer, String>> list = new ArrayList<>();
list.add(new Tuple<>(5, "five-1"));
list.add(new Tuple<>(2, "two"));
list.add(new Tuple<>(3, "three"));
list.add(new Tuple<>(5, "five-2"));
list.add(new Tuple<>(5, "five-3"));
Optional<Tuple<Integer, String>> largestTuple = list.stream().max((t1, t2) -> Integer.compare(t1.x, t2.x));
System.out.println("Largest tuple is: " + largestTuple.get().x + " value is: " + largestTuple.get().y);
}
public class Tuple<X, Y> {
public final X x;
public final Y y;
public Tuple(X x, Y y) {
this.x = x;
this.y = y;
}
@Override …Run Code Online (Sandbox Code Playgroud) 我有一个网络应用程序,它接收将订单保存在数据库中的请求。我想写入 2 个不同的数据库 - 一个 Cassandra 实例和一个 PostgreSQL 实例。我使用纯 Java 和 JDBC(带有 apache DBUtis),前面有一个轻量级 Web 应用程序库。
我不确定的是如何跨两个数据库实现事务性,即如果对其中一个数据库的写入失败,则回滚另一个写入并将错误消息放入错误日志中。
Java中有什么机制可以实现这一点吗?我知道两阶段提交这样的事情,这就是我在这里要寻找的吗?还有其他选择吗?
我想在一些水平布局的列表项之间放一些空格,我应该使用 还是padding-left来分隔它们?
  例:
<ul class="menu">
<li class="menu_item">Option 1 </li>
<li class="menu_item">Option 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
padding-left示例:
<ul class="menu">
<li class="menu_item">Option 1</li>
<li class="menu_item">Option 2</li>
</ul>
.menu li.menu_item { padding-left: 10px; }
Run Code Online (Sandbox Code Playgroud) 我想知道为什么以下是Pair类型的正确实现.具体来说,为什么Pair b a不Pair a b呢?
newtype Pair b a = Pair { getPair :: (a,b) }
Run Code Online (Sandbox Code Playgroud)
澄清,Pair a b不适用于以下内容:
instance Functor (Pair c) where
fmap f (Pair (x,y)) = Pair (f x, y)
Run Code Online (Sandbox Code Playgroud)
而且我不明白为什么.
除了下面的很多很棒的答案之外,我发现在ghci中做了以下有用的事情:
*Main> newtype Pair b a = Pair (a, b) deriving (Show, Eq)
*Main> :t Pair(True, "cat")
Pair(True, "cat") :: Pair [Char] Bool
*Main> newtype Pair a b = Pair (a, b) deriving (Show, Eq)
*Main> :t Pair(True, "cat")
Pair(True, …Run Code Online (Sandbox Code Playgroud)