这是我的两个问题:
我现在正在学习使用CVS管理我的代码,我只想为我的C++文件,Makefile和bash以及python脚本创建一个存储库,而不是目标文件和可执行文件.所以我在我的项目目录下创建了几个子目录:src,bin,scripts,results和data.我把〜/ myproject/src下的C++文件和Makefile,〜/ myproject/scripts下的bash和python脚本以及〜/ myproject/bin下的对象和可执行文件放在下面.我希望只有src和脚本下的文件才能通过CVS更新.我想知道你们是如何组织你的项目的?只希望遵循一些好习惯
由于我将我的C++文件和Makefile放入〜/ myproject/src以及对象和可执行文件到〜/ myproject/bin中,我必须在Makefile中指定目录.这就是我在做的事情
Makefile文件:
...
BIN_DIR=/home/myproject/bin/
all: $(BIN_DIR)myexecutable TAGS
TAGS: *.cc *.h
etags --members --declarations -l c++ *.cc *.h
$(BIN_DIR)myexecutable: $(BIN_DIR)myobject.o
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
Makefile.depend: *.h *.cc Makefile
$(CXX) -M $(CXXFLAGS) *.cc > Makefile.depend
clean:
\rm -f $(BIN_DIR)myexecutable $(BIN_DIR)*.o Makefile.depend TAGS`
Run Code Online (Sandbox Code Playgroud)
但是这会给出错误
make:***没有规则来制作目标
/home/myproject/bin/myobject.o', needed by/ home/myproject/bin/myexecutable'.
如何在Makefile中的C++文件中为对象和可执行文件指定不同的目录?
感谢致敬!
我尝试使用webBrowser1.Document.Body.ScrollTop和webBrowser1.Document.Body.ScrollLeft,但它们不起作用.他们总是返回0,我无法访问webBrowser1.Document.documentElement.ScrollTop和.ScrollLeft.
我有一个包含几个类的托管程序集,这些类有重载方法.我将程序集暴露给COM/IDispatch调用者
[ComVisible(true)]
Run Code Online (Sandbox Code Playgroud)
..还要在装配本身上设置合适的Guid.我没有为COM互操作定义显式接口.这一切都是动态完成的.我运行regasm.exe /codebase托管DLL并将其注册为COM互操作.
当我运行OleView时,我可以看到程序集中各种类的ProgId.但是,浏览这些ProgId并扩展IDispatch节点,这些类没有TypeLib信息.
即便如此,从脚本中,我可以调用接受零参数的方法或接受一个参数的方法.如果还有一个接受多个参数的重载,我不能按名称调用该方法.我得到的错误一直是
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment: <methodname>
Run Code Online (Sandbox Code Playgroud)
由此我了解到COM/IDispatch客户端无法正确解析通过COM互操作公开的对象上的重载方法.
然后我补充说
[ClassInterface(ClassInterfaceType.AutoDual)]
Run Code Online (Sandbox Code Playgroud)
......对每个有关的课程.在regasm.exeDLL之后,我可以在IDispatch节点下看到每个方法的typelib信息.
我发现重载方法会自动获得包含附加后缀的名称.MethodX将在自动生成的类型库组件中公开重载,如MethodX,MethodX_2,MethodX_3等.
我发现通过引用具有这些后缀的方法名称,我可以调用重载方法,尽管不是通用名称.
更有趣的是,如果我然后[ClassInterface(ClassInterfaceType.AutoDual)]从类中删除了,我仍然可以通过这种方式调用重载方法,从而避免 Wrong number of arguments or invalid property assignment错误.
我的问题是:这种行为 - 将数字后缀附加到成员名称 - 稳定吗?记录?可信?
我已经存储了字典NSUserDefaults,我需要在这本字典中添加/删除项目.
令我困扰的是,要做到这一点,我必须创建整个字典的可变副本,更改一个元素并用新副本替换整个字典.
copy = [[defaults objectForKey:@"foo"] mutableCopy];
[copy setObject:… forKey:@"bar"];
[defaults setObject:copy forKey:@"foo"];
Run Code Online (Sandbox Code Playgroud)
它涉及对层次结构中更深层次的对象进行更多复制和重新设置.
有没有更好的办法?
我试过使用,[defaults setValue:… forKeyPath:@"foo.bar"]但似乎没有用(对象不可变).
这是代码:
Patient patient = factory.createPatient();
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(patient.getClass());
enhancer.setCallback(new DefaultMethodInterceptor(patient));
patient = (Patient) enhancer.create();
assertThat(patient.getFirstName()).isNotNull();
Enhancer enhancer2 = new Enhancer();
enhancer2.setSuperclass(patient.getClass());
enhancer2.setCallback(new DefaultMethodInterceptor(patient));
patient = (Patient) enhancer2.create();
assertThat(patient.getFirstName()).isNotNull();
Run Code Online (Sandbox Code Playgroud)
它失败了最后一个断言
net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
...
Caused by: java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.ClassFormatError: Duplicate method name&signature in class file my/package/entity/Patient$$EnhancerByCGLIB$$ca1e6685$$EnhancerByCGLIB$$f52743be
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我想增强Hibernate的实体,但有时候它会自己返回已经增强的实体,而我的第二个增强失败了.我怎么能避免这个?
我试图在运行时从代码隐藏设置Iframe的HTML.
在我的aspx页面中,我有:
<asp:Button ID="btnChange" runat="server" Text="Change iframe content"
onclick="btnChange_Click" />
<br />
<iframe id="myIframe" runat="server" />
Run Code Online (Sandbox Code Playgroud)
在后面的代码中:
protected void btnChange_Click(object sender, EventArgs e)
{
myIframe.InnerHtml = "<h1>Contents Changed</h1>";
}
Run Code Online (Sandbox Code Playgroud)
当我运行它....它回发,但不会改变myIframe内容...我做错了什么?
我需要这样做,因为我实施3D安全到我的结账过程..基本上:
1)客户输入信用卡详细信息2)提交表单,如果需要3d安全,则检查支付网关.如果是,则为银行安全位置生成url以输入信息3)我创建对此URL的POST请求,其包含长安全令牌和一些其他信息.我抓住从这个POST请求返回的HTML,并需要在iFrame中显示它.
下面是文档说要做的事情:
<html>
<head>
<title>Please Authenticate</title>
</head>
<body onload="OnLoadEvent();">
<form name="downloadForm" action="https://mybank.com/vbyv/verify" method="POST">
<input type="hidden" name="PaReq" value="AAABBBBCCCCHHHHHH=">
<input type="hidden" name="TermUrl" value="https:// www. MyWidgits.Com/next.cgi">
<input type="hidden" name="MD" value="200304012012a">
</form>
<script language="Javascript"> <!-- function OnLoadEvent(){ document.downloadForm.target = "ACSframe"; document.downloadForm.submit(); } //--> </script>
<!-- MERCHANT TO FILL IN THEIR OWN BRANDING HERE …Run Code Online (Sandbox Code Playgroud) 我试图推广以下IL(来自Reflector):
.method private hidebysig instance void SetValue(valuetype Test.TestFixture/ValueSource& thing, string 'value') cil managed
{
.maxstack 8
L_0000: nop
L_0001: ldarg.1
L_0002: ldarg.2
L_0003: call instance void Test.TestFixture/ValueSource::set_Value(string)
L_0008: nop
L_0009: ret
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用DynamicMethod重现此IL时:
[Test]
public void Test_with_DynamicMethod()
{
var sourceType = typeof(ValueSource);
PropertyInfo property = sourceType.GetProperty("Value");
var setter = property.GetSetMethod(true);
var method = new DynamicMethod("Set" + property.Name, null, new[] { sourceType.MakeByRefType(), typeof(string) }, true);
var gen = method.GetILGenerator();
gen.Emit(OpCodes.Ldarg_1); // Load input to stack
gen.Emit(OpCodes.Ldarg_2); // Load value to stack …Run Code Online (Sandbox Code Playgroud) 我只是回想起Radio Shack曾经出售袖珍电脑的日子.(许多人以前只有几K的内存.)他们有能力在Pocket计算机上编写小程序.也许它只是怀旧,但我总是认为这很方便.(通过我的记忆迷雾.)有没有像Iphone那样的能力?
编辑:我可以理解不允许像App-store上的GameBoy模拟器一样,它有点像说你的人加载"ROM"并可能让他们遇到麻烦.当你开始从模拟器中获利时,许可证持有者会变得非常小便,只要想想"Bleem"和索尼.索尼埋葬了这些人.我想Javascript总比没有好.沙盒中的Java怎么样?或者,如果他们想要一些他们并不害怕的东西会在那里蚕食市场,那就是BASIC翻译.
他们说在NHibernate中构建一个会话工厂是昂贵的,它应该只发生一次.我对此使用单例方法.这是在第一次请求会话时完成的.
我的问题:你是否应该每次都关闭Session工厂?如果是这样,人们什么时候会这样做?
我在一个表单上运行序列化,其中隐藏了字段的开头 - 这是一个非常重要的字段,应该发布.有没有办法通过jQuery轻松序列化它还是我应该编写自己的函数?