我有一个不作为应用程序运行的核心项目,它唯一的"产品"是构建和运行脚本.这个项目是在Xcode 3中创建的,并且运行良好.运行构建将运行测试脚本,没有麻烦.
升级到Xcode 4,我的脚本不再运行.我没有对该项目进行任何更改,但显然存在一些差异.我检查了构建设置,看起来脚本是管道结果/tmp/RunUnitTests.out,并且该文件的内容是:
/Developer/Tools/RunUnitTests:68: note: RunUnitTests exited without running tests because TEST_AFTER_BUILD was set to NO.
Run Code Online (Sandbox Code Playgroud)
这个TEST_AFTER_BUILD变量应该放在哪里?有没有办法在UI中找不到我找不到的,或者我是否需要在其他地方设置它?
(我假设自从Xcode 4到达Gold Master后,讨论这些东西是安全的吗?)
如果您有一个Collection的实例,请说:
Collection<String> addresses = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
然后用一堆值填充哪些值,这是"最好的"方式,如果有的话,使用toArray()方法而不需要类型转换?
String[] addressesArray = addresses.toArray(new String[] {});
String[] addressesArray = addresses.toArray(new String[0]);
String[] addressesArray = addresses.toArray(new String[addresses.size()]);
String[] addressesArray = addresses.toArray(new String[addresses.size() + 5]);
Run Code Online (Sandbox Code Playgroud)
前两个之间是否存在语义差异?第三是最有效的吗?第四个效率低于第三个吗?
我有一个NSStatusItem正确显示在MenuBar中.其中一个项目(单击时)显示我的应用程序中的模态NSWindow,用于执行一次性任务,然后消失.(例如,用户输入一小段文字,点击"保存",模态NSWindow就会消失.)
应用程序在后台运行时会出现此问题.模态窗口正确显示在前台运行的任何应用程序之上,但是当用户单击"保存"按钮时,应用程序窗口的其余部分也会处于活动状态.这是不可取的,因为用户必须回到他们正在使用的任何应用程序.(破坏NSStatusItem的便利性.)我正在使用以下方式显示模态窗口:
[myWindow setFrame:finalRect display:YES animate:NO];
[myWindow setLevel:NSPopUpMenuWindowLevel];
[NSApp runModalForWindow:myWindow];
Run Code Online (Sandbox Code Playgroud)
有没有办法阻止我的弹出窗口中的点击/事件导致应用程序的其余部分变为活动状态?或者让NSApp知道这个特定面板不应该自动激活应用程序的其余部分的方法?谢谢!
所以我以为我已经覆盖了我的基地,但显然我错过了关键的一两步.
makeKeyAndOrderFront:当按下NSStatusItem时,我有一个显示()的NSPanel.事情很有效,但是当NSPanel显示标题栏时,面板也可以拖动.(这是不受欢迎的.)
第一个屏幕截图显示了在"外观"类别中在Interface Builder中启用"标题栏"的面板.(抱歉模糊不清,现在仍然处于锁定和关键状态.)

该只说是在Interface Builder中做出更改取消选中"标题栏"复选框.然后我保存并重新运行,这就是你在第二个屏幕截图中看到的内容.虽然出现轻微阴影,但面板却没有.

我试过的事情:
我子类的NSPanel并返回YES了canBecomeKeyWindow和canBecomeMainWindow一些调查后,但(前子类)都返回这些方法NO无论我是否使用了标题栏或不是.所以我认为这不是问题所在.
我确保NSPanel的框架设置正确.它有一个很好的高度,原点也设置正确.
编辑:忘记提及:
该应用程序是一个仅菜单栏的应用程序.在下面的屏幕截图中,请注意添加了一个附加条目Info.plist以强制执行此操作.

我第一次使用Django(和Python),我正在寻找一个包含模板的正确解决方案,该模板可能已经提供或未提供值.
例如,此模板将始终定义"公司",但可能并不总是定义"用户".如果未定义'user',则应定义一个,如下所示:
<% with guy=(user if user != None else company.admin_user) %>
Run Code Online (Sandbox Code Playgroud)
但我还没有找到一个很好的方法来实现这一目标.在某些情况下,用户将由模板的包含者定义,在其他情况下,模板应该必须找到"默认"用户.
编辑:根据Ignacio的回答,解决方案是:
<% with guy=user|default:company.admin_user %>
Run Code Online (Sandbox Code Playgroud) Django 1.4的权限/身份验证文档提供了以下代码片段,用于以编程方式创建自定义权限:
编辑:(我想采用这种对于那些权限不,不一定链接到一个特定的模型类,但跨越多个类型的更一般的权限)
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
content_type = ContentType.objects.get(app_label='myapp', model='BlogPost')
permission = Permission.objects.create(codename='can_publish',
name='Can Publish Posts',
content_type=content_type)
Run Code Online (Sandbox Code Playgroud)
我的问题是,其中的代码应该放置的位置.显然这些应该只创建一次,但我不想在shell中这样做.看起来这应该存储在某个文件中.(出于文档的缘故.)
我正在使用Hamcrest CoreMatcher类作为spring-test集成测试的一部分.我的JSON看起来像:
{"data":[{"distanceInMiles":4,"id":"f97236ba-f4ef-4...
Run Code Online (Sandbox Code Playgroud)
我的集成测试看起来像:
double miles = 4.0
Activity a = new BasicActivity(miles);
this.activityManager.add(a); // A mock activity manager (in-memory)
...
this.mockMvc.perform(get("/").accept("application/json"))
.andExpect(jsonPath("$.data[0].distanceInMiles", is(miles)))
Run Code Online (Sandbox Code Playgroud)
但是,断言失败了:
java.lang.AssertionError: JSON path "$.data[0].distanceInMiles"
Expected: is <4.0>
but: was <4>
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
Run Code Online (Sandbox Code Playgroud)
我知道这里有一个单独的IsCloseTo匹配器:http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/number/IsCloseTo.html,但是像这样使用它:
.andExpect(jsonPath("$.data[0].distanceInMiles", closeTo(miles, 0)))
Run Code Online (Sandbox Code Playgroud)
导致一个奇怪的错误:
java.lang.AssertionError: JSON path "$.data[0].distanceInMiles"
Expected: a numeric value within <0.0> of <4.0>
but: was a java.lang.Integer (<4>)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
Run Code Online (Sandbox Code Playgroud)
我希望避免包含某种错误 - 我希望返回的值完全正确4,我只是不关心包含多少尾随零.
我正在ARM机器上设置一个开发环境,其中包含以下版本的Java和Maven,两者都通过apt-get以下方式安装:
(xenial)craig@localhost:~$ mvn -version
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_91, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-armhf/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.14.0", arch: "arm", family: "unix"
(xenial)craig@localhost:~$ java -version
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~16.04.1-b14)
OpenJDK Zero VM (build 25.91-b14, interpreted mode)
Run Code Online (Sandbox Code Playgroud)
但是,当我mvn clean install在我的项目上运行时,它无法尝试下载确实存在的POM文件.(我可以在浏览器中访问它.)
堆栈跟踪非常大,但根似乎是:
Caused by: java.lang.IllegalStateException
at sun.security.ec.ECDHKeyAgreement.deriveKey(Native Method)
at sun.security.ec.ECDHKeyAgreement.engineGenerateSecret(ECDHKeyAgreement.java:130)
at sun.security.ec.ECDHKeyAgreement.engineGenerateSecret(ECDHKeyAgreement.java:163)
at javax.crypto.KeyAgreement.generateSecret(KeyAgreement.java:648)
at sun.security.ssl.ECDHCrypt.getAgreedSecret(ECDHCrypt.java:101)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1067)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:348) …Run Code Online (Sandbox Code Playgroud) 我们现有的 Spring Boot 集成设置用于@DirtiesContext在不同的测试方法之间重建整个 bean 池。
这是相当慢的,因此我们开始使用可以“刷新”或在内部拆除/重建的 bean ,而无需重新创建实例。
问题是只有一些bean 支持这一点。如果我们控制UsersBean,我们可以实现一个UsersBean.refresh()方法并在我们的方法中调用它@After。
但是,如果我们现有的 bean/类不支持刷新,或者我们无法控制,那么我们如何有条件地指示某些 bean 在特定测试后需要被弄脏/重建?
或者更简洁地说:有没有办法在测试方法结束时将 Bean 池的一部分标记为脏,以便重建?
我有一个用Objective-C编写的模型类,我正在转换为Swift.它包含一个NSMutableArray内部,但getter的方法签名,以及实际的返回值NSArray.调用时,它会创建一个不可变的副本来返回.
基本上,我希望调用者能够迭代/检查容器,但不能修改它.我有这个测试片段:
class Container {
internal var myItems = [String]()
func sayHello() {
"I have: \(myItems)"
}
}
let cont = Container()
cont.myItems.append("Neat") // ["Neat"]
cont.sayHello() // This causes sayHello() to print: "I have: [Neat]"
var isThisACopy = cont.myItems
isThisACopy.append("Huh") // ["Neat", "Huh"]
cont.sayHello() // This ALSO causes sayHello() to print: "I have: [Neat]"
Run Code Online (Sandbox Code Playgroud)
我一直试图找到一种覆盖getter的方法,myItems以便它返回一个不可变的副本,但似乎无法确定如何.
尝试#1
这会产生编译器错误: Function produces expected type '_ArrayBuffer<(String)>'; did you mean to call it with '()'?
internal var …Run Code Online (Sandbox Code Playgroud) java ×4
xcode ×3
cocoa ×2
django ×2
objective-c ×2
python ×2
spring ×2
arrays ×1
casting ×1
collections ×1
hamcrest ×1
json ×1
junit ×1
macos ×1
maven ×1
modal-dialog ×1
nspanel ×1
nswindow ×1
permissions ×1
spring-boot ×1
spring-test ×1
ssl ×1
swift ×1
unit-testing ×1