Javascript似乎成为其他编程语言的实现语言.文章 轻量级编译(C)LP到JavaScript.ICLP 2012 引起了我的注意.
在Web上用Javascript编写的Prolog系统有很多概念验证原型.
什么是当前的,积极维护的,最好是用Javascript编写的符合ISO标准的Prolog系统?
我认为我正在寻找的是一个无SQL,嵌入式磁盘,在磁盘上(即非内存中)数据库,可以从java访问(最好在我的JVM实例中运行).这不是一个真正的数据库,我很想自己动手.基本上我正在寻找"我们应该把它保存在内存中还是放在磁盘上"的数据库部分.
我们的模型已增长到几千兆字节.现在这都是在内存中完成的,这意味着我们正在推动JVM达到几千兆字节.它目前全部存储在一个平面XML文件中,使用xstream进行序列化和反序列化,并使用内置的gzip库中的Java进行压缩.当我们的模型保持在100MB以下时,这种方法运行良好,但现在它的大于它成为一个问题.
松散地说,模型可以分解为
我想做的是有一些符合guid - > run-model的地图界面的东西.这个迷你数据库将保留这些对象的平面表.在我们的实验模型中,我们将使用guid列表替换运行模型列表,并在应用程序层添加对此映射的get调用,这将把它从磁盘中拉出并进入内存.
这意味着我们可以使用XML(我非常满意)保持程序的配置,并在DBMS中保留一个大数据表,这将使我们不会消耗多GB的内存.在程序启动和退出时,我可以从存档格式加载和卸载我们模型的两个部分(XML中的配置部分和数据库格式的运行模型).
我对这一点感觉很好,并且认为我可以用一些X-Stream的XML检查策略和自定义地图实现来实现它,但是在我的脑海中有一种声音告诉我我应该找到一个库来代替.
我应该自己动手还是有一个足够小的数据库来满足这个要求?
多谢你们,
-Geoff
当我尝试运行docker info时,我对docker非常新,它给了我跟随错误.
$ docker info
FATA[0000] Get http:///var/run/docker.sock/v1.17/info: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
Run Code Online (Sandbox Code Playgroud)
我正在使用ubuntu 14.04.我按照https://docs.docker.com/installation/ubuntulinux/#installing-docker-on-ubuntu上提到的安装说明进行操作
但我仍然得到错误.我怎样才能解决这个问题?
可以用Haskell实现热代码交换吗?我正在阅读Erlang引起了我的兴趣,我想将这些功能与Haskell一起使用.
ServletException过去,当Servlet中的某些东西出现问题时,我一直在扔s,大多只是将异常包装进去ServletException.
现在我认为实际上最好不要抛出一个ServletException但是要回应response.sendError(sc)并使用正确的HTTP状态代码.
如果我不能使用reponse.sendError(IOException)发送错误,我将其包装成IOExceptiona ServletException.
以上是更好的回应方式吗?什么时候可以抛出一个ServletException?
每当在Haskell中我们需要一些变量数据类型时,我们会将ADT与模式匹配结合使用.Clojure人们对这些用例有什么用处?
haskell functional-programming clojure abstract-data-type pattern-matching
因此,为了解释我的问题,我来自Java后端开发人员的角度,我们使用Maven来构建.我一直致力于测试我们最近开发的服务器端Node项目,但现在我正在继续在我们的前端JavaScript客户端上设置测试.我不是很精通前端开发,这是我第一次涉足这方面.
所有这一切,我想我将使用以下技术堆栈进行前端测试:Eclipse IDE,Maven构建过程,Mocha测试框架,Chai断言框架,Nock HTTP模拟框架,Sinon模拟/间谍/ stubbing框架,Rewire依赖注入框架.一切都应该没问题,因为那是我们用于Node项目的堆栈,我希望尽可能保持前端设置的相似性.
所以,这是我的知识崩溃的地方.我似乎无法理解我们的Node项目和我们的前端JavaScript项目之间的依赖关系管理的差异.我不明白为什么我不会继续使用集成到我们的Maven构建中的NPM来处理依赖项管理和安装.
我看到很多人都在鼓吹Bower,但在查看了它的页面和文档之后,我仍然没有看到NPM不会填充的利基.在浏览器依赖管理的情况下,我看到很多人坚决拒绝NPM; 主要原因是NPM是为服务器端Node项目而设计的,而不是为前端空间设计的.但谁在乎?无论其初始设计的意图如何,如果它做了我需要做的事情,那么它的缺点是什么?
请接近这个"问题",好像我是一个完整的新手.我已经意识到,当我完成这个过程和研究时,我对前端方面的知识非常缺乏.话虽如此,请在答案中尽可能具体和彻底.我很乐意根据需要分享项目配置等,以帮助描绘我所在空间的图片.感谢任何反馈!
这有效
(x => s"$x")
Run Code Online (Sandbox Code Playgroud)
但是这个
(s"${_}")
Run Code Online (Sandbox Code Playgroud)
给
[error] ...: unbound placeholder parameter
[error] (s"${_}")
Run Code Online (Sandbox Code Playgroud)
这只是因为该(s"$_")构造遭受漏洞抽象?
此外: (s"$_")输出完全不同:
[error] ...: invalid string interpolation: `$$', `$'ident or `$'BlockExpr expected
[error] (s"$_")
[error] ^
[error] ...: unclosed string literal
[error] (s"$_")
Run Code Online (Sandbox Code Playgroud) Prelude> let a = 3
Prelude> :sprint a
a = _
Prelude> let c = "ab"
Prelude> :sprint c
c = _
Run Code Online (Sandbox Code Playgroud)
它为什么总是打印_?我不太了解:sprint命令的语义.
考虑以下:
import scala.concurrent._
import scala.concurrent.duration.Duration.Inf
import scala.concurrent.ExecutionContext.Implicits.global
def slowInt(i: Int) = { Thread.sleep(200); i }
def slowAdd(x: Int, y: Int) = { Thread.sleep(100); x + y }
def futures = (1 to 20).map(i => future(slowInt(i)))
def timeFuture(fn: => Future[_]) = {
val t0 = System.currentTimeMillis
Await.result(fn, Inf)
println((System.currentTimeMillis - t0) / 1000.0 + "s")
}
Run Code Online (Sandbox Code Playgroud)
以下两个print~2.5s:
// Use Future.reduce directly (Future.traverse is no different)
timeFuture { Future.reduce(futures)(slowAdd) }
// First wait for all results to come in, convert to Future[List], …Run Code Online (Sandbox Code Playgroud) haskell ×3
java ×2
javascript ×2
scala ×2
boot2docker ×1
bower ×1
build ×1
clojure ×1
compilation ×1
database ×1
debugging ×1
docker ×1
fold ×1
future ×1
ghci ×1
iso-prolog ×1
lambda ×1
nosql ×1
npm ×1
performance ×1
prolog ×1
reduce ×1
servlets ×1
transpiler ×1
ubuntu ×1