tmux有一个可以通过访问的命令模式,C-b :
我想知道是否有一种方法可以在我的.tmux.conf
文件中split-window
使用别名命令,就像我vsp
在vim中经常使用的那样.
我知道我可以绑定键盘快捷键,bind
但我也可以使用别名命令吗?
请原谅这个问题的缺点,但我有一个Web应用程序,我想将一个可能很大的文件发送到服务器并让它解析格式.我正在使用Play20框架,而且我是Scala的新手.
例如,如果我有一个csv,我想用","分隔每一行,最后List[List[String]]
用每个字段创建一个.
目前,我认为最好的方法是使用BodyParser(但我可能是错的).我的代码看起来像:
Iteratee.fold[String, List[List[String]]]() {
(result, chunk) =>
result = chunk.splitByNewLine.splitByDelimiter // Psuedocode
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是,我如何处理下面的一个情况,其中一个块被分割在一行中间:
Chunk 1:
1,2,3,4\n
5,6
Chunk 2:
7,8\n
9,10,11,12\n
Run Code Online (Sandbox Code Playgroud)
我的第二个问题是,编写我自己的BodyParser是正确的方法吗?有没有更好的方法来解析这个文件?我主要担心的是我想允许文件非常大,所以我可以在某个时刻刷新缓冲区而不是将整个文件保存在内存中.
我希望能够使用BodyParser上验证的请求,我有麻烦搞清楚怎么做,如果我的身份验证设置,如ZenTasks例子.
我的身份验证方法
def IsAuthenticated(f: => String => Request[AnyContent] => Result) = {
Security.Authenticated(username, onUnauthorized) { user =>
Action(request => f(user)(request))
}
}
def HasRole(role: List[String])
(f: => String => Request[AnyContent] => Result) = IsAuthenticated {
user => request => if (role.contains(getRole(user))) {
f(user)(request) // This function returns the result.
} else {
Results.Forbidden
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器方法,
def controller = HasRole(List("admin")) { user => _ => {
Action(parse.temporaryFile){ implicit request =>
request.body.moveTo(new File("/tmp/filepath"))
Redirect(routes.home)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我看到的错误,
[error] found : play.api.mvc.Action[play.api.libs.Files.TemporaryFile] …
Run Code Online (Sandbox Code Playgroud) 可能重复:
什么是Scala上下文和视图边界?
在specs2中有一个名为Around的方法,这里记录的方法有以下示例:
object http extends Around {
def around[T <% Result](t: =>T) = openHttpSession("test") {
t // execute t inside a http session
}
}
Run Code Online (Sandbox Code Playgroud)
可以在此处找到此代码的来源.
我很好奇<%运算符在这种情况下意味着什么?
编辑:这里有一个关于这个主题的可靠答案,什么是Scala上下文和视图边界?
我有以下case类和一个默认参数,我想知道如何编写一个unapply方法,以便我可以只提取前两个参数.
我希望下面的代码是清楚的.
case class Point(x: Double, y: Double, _key: Option[String] = None) {
def key: String = _key.getOrElse("")
}
object Point {
def unapply(p: Point) = (p.x, p.y)
}
// pSeq is Seq[Point]
pSeq.map { case Point(x,y) => x + y } // This causes a compiler error:
// wrong number of arguments for <none>:
// (x: Double, y: Double, _key: Option[String])
Run Code Online (Sandbox Code Playgroud)