我正在为Clojure增加耐久性,我终于到了准备添加功能的地步.在Clojure中,函数通过调用方法(以及其他方式)进行字节编译.这样,功能就是一流的.为了使这些持久,我需要序列化和反序列化这些类.如何在不访问.class文件的情况下获取类的字节码?
如果我弄错了,请纠正我,但使用代理需要生成一个单独的VM,代理连接到第一个VM.我需要从同一个VM做到这一点.
使用Serializable来设置和获取Class对象是不够的.在反序列化时,我需要加载该类,并且在后续VM实例上,可能存在类名冲突.我需要修改字节码,以便在反序列化/类加载时将类重命名为唯一的.
我刚开始在Clojure开发服务.我对如何接近服务器关机感到有点迷茫.
我正在使用Clojure 1.5.1.对于日志记录,我使用的是Timbre 1.5.3.我想将NREPL嵌入到我的服务器中以进行热代码部署.
这是我的core.clj文件.核心是我的主要,我正在使用"lein new app"生成的app shell.
(ns extenium.core
(:require [taoensso.timbre :as t]
[clojure.tools.nrepl.server :as nrs])
(:gen-class))
(def nrepl-server)
(defn start-nrepl-server []
(t/info "Starting nrepl server on port 8628")
(alter-var-root #'nrepl-server
(constantly
(nrs/start-server :port 8628)))
(t/info "Started nrepl server"))
(defn stop-nrepl-server []
(t/info "Stopping nrepl server")
(nrs/stop-server nrepl-server)
(t/info "Stopped nrepl server"))
(defn start []
(alter-var-root #'*read-eval*
(constantly
false))
(start-nrepl-server))
(defn stop []
(stop-nrepl-server))
(defn -main [& args]
(start))
Run Code Online (Sandbox Code Playgroud)
当我"lein run"时,nrepl-server按预期启动,并将信息消息发送到终端.然后我与Emacs的"nrepl"联系.没问题.从Emacs我执行"(extenium.core/stop)".此时,我在Emacs上收到"Stopping nrepl server"消息(意味着stdout被重定向到客户端).连接关闭(如预期的那样),我从未看到"已停止的nrepl服务器"消息.精细.
我看着终端,我没有看到"停止......"或"停止..."的消息.相反,我得到以下异常:
Exception in thread "nREPL-worker-0" java.lang.Error: …Run Code Online (Sandbox Code Playgroud) 在Setuptools setup.py文件中打包Alembic迁移文件的正确方法是什么?一切都在我的回购根源中alembic/.
这是一个Python应用程序,而不是库.
我想要的安装流程是有人可以pip install将轮子作为我的应用程序.然后,他们可以通过运行类似的方式来初始化应用程序数据库<app> alembic upgrade --sqlalchemy.url=<db_url>.然后升级将需要a pip install -U,之后他们可以再次运行Alembic命令.
这是非正统的吗?
如果没有,我将如何做到这一点?当然是console_scripts entry_points.但除此之外?
澄清问题作为后续行动:
我应该在viewDidUnload中做些什么? 我什么时候应该在 - (void)viewDidUnload而不是-dealloc中释放对象?
因此,假设存在内存错误,视图被隐藏,并且调用了viewDidUnload.我们做发布和零舞蹈.之后不需要整个视图堆栈,因此调用dealloc.因为我已经在viewDidUnload中有release和nil的东西,所以我没有在dealloc中使用它.完善.
但是如果没有低内存错误,则永远不会调用viewDidUnload.dealloc被调用,因为我没有release和nil的东西,所以有内存泄漏.
换句话说,如果没有首先调用viewDidUnload,是否会调用dealloc?
实际的后续操作就是,如果我在viewDidLoad中分配和设置一些内容,并在viewDidUnload中将其释放并设置为nil,我是否将其保留为dealloc,或者我是否在dealloc中执行防御性nil检查并释放/没有它,如果它不是零?
我是CL的新手,正在使用AllegroCL.我正在试图弄清楚如何组织我的源代码以满足以下要求:
我一直在尝试创造性地使用ASDF来满足这些要求,但我无法做到这一点.其他人如何解决这个问题?这两个要求是不是"Lispy"?
我想记住函数结果的性能,即懒惰地填充索引在函数参数上的缓存.第一次调用函数时,缓存将没有输入参数的任何内容,因此它将在返回之前计算并存储它.后续调用只使用缓存.
但是,似乎SQL Server 2000有一个关于函数"确定性"的愚蠢任意规则.INSERT,UPDATE和常规存储过程调用是被禁止的.但是,允许扩展存储过程.这是如何确定的?如果另一个会话修改了数据库状态,则函数输出仍会发生变化.
我疯了.我以为我可以让缓存对用户透明.这可能吗?我没有部署扩展存储过程的权限.
编辑:
这种限制仍然存在于2008年.出于上帝的缘故,你不能叫兰德!
缓存将由我在DB中实现.缓存是用于缓存的任何数据存储...
编辑:
在基础数据的更改之外,不存在函数的相同参数将产生不同结果的情况.这是一个BI平台,唯一的变化来自计划的ETL,此时我将TRUNCATE缓存表.
这些是I/O密集型时间序列计算,大约为O(n ^ 4).我没有权限更改基础表或索引.此外,许多这些函数使用相同的中间函数,缓存允许使用这些函数.
UDF不是真正的确定性,除非它们考虑到数据库状态的变化.重点是什么?是SQL Server缓存吗?(Ironic.)如果SQL Server正在缓存,那么它必须在对模式绑定的表的更改时到期.如果它们是模式绑定的,那么为什么不绑定函数修改的表?我可以看到为什么不允许触发,尽管这只是草率的; 只是架构绑定过程.而且,BTW,为什么允许扩展存储过程?你无法跟踪那些确保确定性的行为!哎呀!
编辑:
我的问题是:有没有办法以一种可以在视图中使用的方式懒惰缓存功能结果?
CL有任何持续的集成框架吗?具体来说,我正在寻找:
在我看来,Lisp社区的开源方面支持独立开发.对团队的支持很少.只需创建一个可以由随机开发人员检出的具有lib依赖关系的项目主干,就必须手动滚动.
version-control continuous-integration unit-testing common-lisp
我是Erlang的新手,并且我一直在检查Faxien + Sinan和Rebar,而Erlang OTP的基本原理似乎是在单个Erlang图像实例上安装应用程序和发行版。使发布保持自我控制的最佳实践是什么?有没有办法打包发行版本,而不必为要部署到的计算机修改站点?如何将所有依赖项收集到代码库中进行管理?
也许我不赞成……我来自Java背景,“什么都没有预装,但JVM”的哲学似乎非常不同。
是否有可以安装到可以强制执行AOP标准的SQL Server实例(2008或更高版本)中的库,开放源代码或其他库?我真的希望避免在我们的开发人员中强制执行模板的跨领域问题.如果它可用,AOP似乎是最好的选择.
如果它不存在,我将尝试自己滚动.
编辑:
一些示例可能是子类化Table以生成特定类型的表,例如mixin特性.我在一个有很多审计要求的数据仓库环境中,所以我们创建了很多双时态表.拥有一个真棒太棒了
CREATE BITEMPORAL TABLE
Run Code Online (Sandbox Code Playgroud)
将添加事务和有效时间并根据这些表修改CRUD语句的语句.(是的,我知道视图和触发器可以做到这一点.)更难实现的是具有特定日志记录或事务特征的存储过程,例如
CREATE PROC FOO /* VERBOSE, ATOMIC, SERIALIZABLE */
Run Code Online (Sandbox Code Playgroud)
并使用适当的T-SQL自动包裹身体来做这些事情.是的,可以添加存储过程来获取这些参数并执行SQL生成并编译这些工件.但缺点是没有强制执行 - 开发人员可以绕过该过程并直接使用CREATE PROC - 并且syscomments中的内容是生成的代码,而不是AOP注释版本,它打破了抽象.
clojure ×2
common-lisp ×2
sql-server ×2
alembic ×1
aop ×1
asdf ×1
build ×1
bytecode ×1
caching ×1
dependencies ×1
erlang ×1
iphone ×1
java ×1
nrepl ×1
objective-c ×1
persistence ×1
python ×1
release ×1
setuptools ×1
unit-testing ×1