我们最近遇到了一个问题,即在发生一系列提交后,后端进程无法运行.现在,我们都是优秀的小男孩和女孩,并rake test
在每次办理登机手续后都跑了,但由于Rails图书馆装载中的一些奇怪现象,它只发生在我们直接从生产模式中的Mongrel运行时.
我追踪了这个错误,这是因为一个新的Rails gem以一种破坏运行时Rails代码中一个狭隘用法的方式覆盖了String类中的一个方法.
无论如何,长话短说,有没有办法在运行时询问Ruby在哪里定义了一个方法?这样的whereami( :foo )
回归/path/to/some/file.rb line #45
?在这种情况下,告诉我它是在类String中定义的将是无益的,因为它被某些库重载.
我不能保证源代码存在于我的项目中,因此grepping 'def foo'
不一定会给我我需要的东西,更不用说我是否有很多东西 def foo
,有时候直到运行时我才知道我可能正在使用哪一个.
目标是创建一个类似于db结果集的模拟类.
因此,例如,如果数据库查询使用dict表达式返回{'ab':100, 'cd':200}
,那么我想看到:
>>> dummy.ab
100
Run Code Online (Sandbox Code Playgroud)
起初我想也许我可以这样做:
ks = ['ab', 'cd']
vs = [12, 34]
class C(dict):
def __init__(self, ks, vs):
for i, k in enumerate(ks):
self[k] = vs[i]
setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))
def fn_readonly(self, v)
raise "It is ready only"
if __name__ == "__main__":
c = C(ks, vs)
print c.ab
Run Code Online (Sandbox Code Playgroud)
但是c.ab
返回一个属性对象.
更换setattr
线路k = property(lambda x: vs[i])
完全没用.
那么在运行时创建实例属性的正确方法是什么?
我有一个类(但没有实例),需要知道它是否符合某个协议.但是,Class可以多次子类化,class_conformsToProtocol()忽略在超类上声明的协议.
我可以使用class_getSuperclass()并递归检查层次结构中的所有类,直到超类为nil.但是,我想知道这对于深层嵌套的类层次结构来说是否效率低下,也许有更好的方法可以做到这一点?
换句话说,如何使用Objective-C运行时方法最好地实现NSObject方法conformsToProtocol,以便在超类上找到协议?
[myObject conformsToProtocol:@protocol(MyProtocol)];
Run Code Online (Sandbox Code Playgroud)
如果我在正确的轨道上以递归方式上升类层次结构,请告诉我.
public class PropHolder {
public static Properties prop;
static {
//code for loading properties from file
}
}
// Referencing the class somewhere else:
Properties prop = PropHolder.prop;
Run Code Online (Sandbox Code Playgroud)
class PropHolder
是我自己的一类.该类驻留在主类的同一JAR文件中.所以这不应该因为类路径中缺少任何JAR.
当我查看JAR文件时jar tf myjarfile
,我可以看到PropHolder.class
列出的那个.
顺便说一句:代码在我的本地机器上正常运行.但是当我将一些脚本部署到Linux服务器上时,它无法工作.所以我认为这不是代码的问题.但出于某种原因.部署过程很难跟踪.
可能是什么问题呢?
实际上是什么是C运行时库以及它用于什么?我正在搜索,谷歌搜索像魔鬼,但我找不到比微软更好的东西:"微软运行时库提供了Microsoft Windows操作系统编程的例程.这些例程自动执行许多常见的编程任务,这些任务不是由微软提供的. C和C++语言."
好的,我明白了,但是例如,是什么libcmt.lib
?它有什么作用?我认为C标准库是C编译器的一部分.那么libcmt.lib
Windows的C标准库函数的实现是否可以在win32下运行?
我正在使用运行时从我的Java程序运行命令提示符命令.但是我不知道如何获得命令返回的输出.
这是我的代码:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
Run Code Online (Sandbox Code Playgroud)
我尝试过,System.out.println(proc);
但没有返回任何东西.该命令的执行应返回由分号分隔的两个数字,我怎样才能在变量中打印出来?
这是我现在使用的代码:
String[] commands = {"system.exe", "-get t"};
Process proc = rt.exec(commands);
InputStream stdIn = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdIn);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何东西作为我的输出,但当我自己运行该命令它工作正常.
我喜欢D的一些功能,但如果它们带来运行时惩罚会有兴趣吗?
为了比较,我实现了一个简单的程序,用C++和D计算许多短向量的标量积.结果令人惊讶:
C++真的几乎快了五倍,还是我在D程序中犯了错误?
我在一个温和的最近的Linux桌面上用g ++ -O3(gcc-snapshot 2011-02-19)和D和dmd -O(dmd 2.052)编译了C++.结果可在多次运行中重现,标准偏差可忽略不计.
这里的C++程序:
#include <iostream>
#include <random>
#include <chrono>
#include <string>
#include <vector>
#include <array>
typedef std::chrono::duration<long, std::ratio<1, 1000>> millisecs;
template <typename _T>
long time_since(std::chrono::time_point<_T>& time) {
long tm = std::chrono::duration_cast<millisecs>( std::chrono::system_clock::now() - time).count();
time = std::chrono::system_clock::now();
return tm;
}
const long N = 20000;
const int size = 10;
typedef int value_type;
typedef long long result_type;
typedef std::vector<value_type> vector_t;
typedef typename vector_t::size_type size_type;
inline value_type scalar_product(const vector_t& x, const vector_t& …
Run Code Online (Sandbox Code Playgroud) 有哪些动态更改log4j日志级别的方法,以便我不必重新部署应用程序.在这些情况下,这些变化是永久性的吗?
有时我在我的vimrc中尝试自定义/命令.一切都是正确的,但它不起作用.
很难知道当vim启动时发生了什么,并且知道哪个命令失败了,所以很难调试可能导致我的vimrc出现问题的原因.这是一种试错法,耗时而且真的是PITA.例如,我在某些文件中遇到了snipmate插件的问题,并且没有关于如何发现问题的线索.
当vim启动时是否有"运行时日志",告诉它执行哪些命令,哪些命令失败等等?这对我很有帮助.
runtime ×10
java ×3
logging ×2
c ×1
c++ ×1
compile-time ×1
d ×1
definition ×1
jar ×1
log4j ×1
methods ×1
objective-c ×1
performance ×1
properties ×1
python ×1
ruby ×1
vim ×1