在第一次克隆存储库时,git首先接收对象(这很明显),然后花费大约相同的时间"解析增量".在克隆的这个阶段实际发生了什么?
我对git中的整个rebasing功能有点新意.假设我做了以下提交:
A -> B -> C -> D
Run Code Online (Sandbox Code Playgroud)
之后,我意识到D包含一个修复程序,它依赖于添加的一些新代码A,并且这些提交属于一起.如何壁球A和D在一起,离开B与C一个人吗?
在创建活动后,我正在尝试将动画应用到我的Android应用中的视图.为此,我需要确定视图的当前大小,然后设置动画以从当前大小缩放到新大小.此部分必须在运行时完成,因为视图根据用户的输入缩放到不同的大小.我的布局是用XML定义的.
这似乎是一件容易的事,虽然没有一个能解决我的问题,但很多问题都存在.所以也许我错过了一些明显的东西.我通过以下方式了解了我的观点:
ImageView myView = (ImageView)getWindow().findViewById(R.id.MyViewID);
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但打电话时getWidth(),getHeight(),getMeasuredWidth(),getLayoutParams().width,等,他们都返回0.我也试过手动调用measure()视图上,然后到一个呼叫getMeasuredWidth(),但没有效果.
我已经尝试调用这些方法并在我的activity onCreate()和in中检查调试器中的对象onPostCreate().如何在运行时确定此视图的确切尺寸?
我正在尝试创建一个XSD,并尝试使用以下要求编写定义:
我环顾四周,发现像各种解决方案这样:
<xs:element name="foo">
<xsl:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="child1" type="xs:int"/>
<xs:element name="child2" type="xs:string"/>
</xs:choice>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
但据我所知xs:choice仍然只允许单个元素选择.因此,将MaxOccurs设置为无界限应该只意味着子元素中的"任何一个"可以多次出现.这准确吗?
如果上述解决方案不正确,我怎样才能实现我在上述要求中所说的内容?
编辑:如果要求如下,该怎么办?
例如,此xml有效:
<foo>
<child1> value </child1>
<child1> value </child1>
<child3> value </child3>
<child2> value </child2>
<child4> value </child4>
<child1> value </child1>
</foo>
Run Code Online (Sandbox Code Playgroud)
但这不是(缺少孩子3)
<foo>
<child1> value </child1>
<child1> value </child1>
<child2> value </child2>
<child4> value </child4>
<child1> value </child1>
</foo>
Run Code Online (Sandbox Code Playgroud) 我到处都读到它们有多棒,但由于某些原因,我似乎无法弄清楚我到底应该测试一些东西.有人可能会发布一段示例代码以及他们将如何测试它?如果不是太麻烦:)
我这里有一个"Schroedinger's Cat"类型的问题 - 我的程序(实际上是我的程序的测试套件,但是程序仍然是)崩溃,但只有在发布模式下构建时才会发生,并且只有在从命令行启动时.通过穴居人调试(即整个地方讨厌的printf()消息),我已经确定了代码崩溃的测试方法,但遗憾的是实际的崩溃似乎发生在某些析构函数中,因为我看到的最后一条跟踪消息都在其他执行干净的析构函数.
当我尝试在Visual Studio中运行此程序时,它不会崩溃.从WinDbg.exe启动时也是如此.仅从命令行启动时才会发生崩溃.这是在Windows Vista,btw下发生的,不幸的是我现在无法访问XP机器进行测试.
这将是非常好的,如果我能得到的Windows打印出堆栈跟踪,或一些其他不是简单地结束,如果它已经退出干净方案.有没有人对如何在这里获得更有意义的信息有任何建议,希望能解决这个问题?
编辑:问题确实是由一个越界数组引起的,我在这篇文章中对此进行了更多描述.感谢大家帮忙找到这个问题!
我有一些C函数,我通过JNI调用它接受一个结构的指针,以及一些其他函数,它们将分配/释放一个指向同一类型结构的指针,这样它就更容易处理我的包装器.令人惊讶的是,JNI文档对如何处理C结构几乎没有说明.
我的C头文件看起来像这样:
typedef struct _MyStruct {
float member;
} MyStruct;
MyStruct* createNewMyStruct();
void processData(int *data, int numObjects, MyStruct *arguments);
Run Code Online (Sandbox Code Playgroud)
相应的JNI C包装文件包含:
JNIEXPORT jobject JNICALL
Java_com_myorg_MyJavaClass_createNewMyStruct(JNIEnv *env, jobject this) {
return createNewMyStruct();
}
JNIEXPORT void JNICALL
Java_com_myorg_MyJavaClass_processData(JNIEnv *env, jobject this, jintArray data,
jint numObjects, jobject arguments) {
int *actualData = (*env)->GetIntArrayElements(env, data, NULL);
processData(actualData, numObjects, arguments);
(*env)->ReleaseIntArrayElements(env, data, actualData, NULL);
}
Run Code Online (Sandbox Code Playgroud)
...最后,相应的Java类:
public class MyJavaClass {
static { System.loadLibrary("MyJniLibrary"); }
private native MyStruct createNewMyStruct();
private native void processData(int[] data, int numObjects, …Run Code Online (Sandbox Code Playgroud) 我有一个包含清单文件的webapp,我在其中编写了一个ant构建任务期间我的应用程序的当前版本.清单文件是正确创建的,但是当我尝试在运行时读取它时,我会得到一些奇怪的副作用.我在清单中阅读的代码是这样的:
InputStream manifestStream = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("META-INFFFF/MANIFEST.MF");
try {
Manifest manifest = new Manifest(manifestStream);
Attributes attributes = manifest.getMainAttributes();
String impVersion = attributes.getValue("Implementation-Version");
mVersionString = impVersion;
}
catch(IOException ex) {
logger.warn("Error while reading version: " + ex.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
当我将eclipse附加到tomcat时,我看到上面的代码有效,但它似乎得到了一个不同于我预期的清单文件,我可以告诉它,因为ant版本和构建时间戳都是不同的.然后,我在那里放了"META-INFFFF",上面的代码仍然有效!这意味着我正在阅读其他一些清单,而不是我的清单.我也试过了
this.getClass().getClassLoader().getResourceAsStream(...)
Run Code Online (Sandbox Code Playgroud)
但结果是一样的.从tomcat中运行的webapp内部读取清单文件的正确方法是什么?
编辑:感谢您的建议到目前为止.另外,我应该注意到我正在运行tomcat独立; 我从命令行启动它,然后附加到Eclipse调试器中正在运行的实例.这不应该有所作为,不是吗?
这已经困扰了我很长时间 - 如何正确解决目录中SVN属性集中的合并冲突?比如说有两个开发人员在一个项目上工作,在某个目录上设置了svn:ignore.如果两个开发人员都对此属性进行了更改,则当第二个更新时,他们将看到合并冲突.
与文件合并冲突不同,在名为"dir_conflicts.prej"的目录中生成单个文件,第二个开发人员必须阅读并手动更正.通常,我最终要做的是将我的所有更改还原到本地副本,然后使用dir_conflicts.prej中的信息手动重新设置这些属性.但是,在处理svn:externals属性中的大量URL列表时,这很麻烦,因为我们的许多项目都使用了这些URL.
必须有一个更好的方法来做到这一点 - 有人知道怎么做?
我最近在谷歌测试博客中偶然发现了关于编写更多可测试代码的指南.在此之前,我与作者达成了一致意见:
优先于条件的多态性:如果你看到一个switch语句,你应该考虑多态性.如果您在班级的许多地方看到相同的if条件,您应该再次考虑多态性.多态性会将您的复杂类分解为几个较小的简单类,这些类可以清楚地定义代码的哪些部分相关并一起执行.这有助于测试,因为更简单/更小的类更容易测试.
我根本无法绕过那个.我可以理解使用多态而不是RTTI(或DIY-RTTI,视情况而定),但这看起来像是一个广泛的陈述,我无法想象它实际上在生产代码中被有效使用.在我看来,更容易为具有switch语句的方法添加其他测试用例,而不是将代码分解为几十个单独的类.
此外,我的印象是多态可能导致各种其他微妙的错误和设计问题,所以我很想知道这里的权衡是否值得.有人可以向我解释这个测试指南的确切含义吗?
c++ ×2
git ×2
java ×2
tdd ×2
android ×1
android-ndk ×1
c ×1
debugging ×1
git-rebase ×1
jar ×1
manifest ×1
oop ×1
php ×1
polymorphism ×1
svn ×1
testing ×1
tomcat ×1
unit-testing ×1
xml ×1
xsd ×1