我有点头疼,因为一个简单的外观,简单的陈述在我脸上抛出一些错误.
我有一个名为strings.json的json文件,如下所示:
"strings": [{"-name": "city", "#text": "City"}, {"-name": "phone", "#text": "Phone"}, ...,
{"-name": "address", "#text": "Address"}]
Run Code Online (Sandbox Code Playgroud)
我现在想读取json文件.我发现了这些陈述,但它不起作用:
import json
from pprint import pprint
with open('strings.json') as json_data:
d = json.load(json_data)
json_data.close()
pprint(d)
Run Code Online (Sandbox Code Playgroud)
控制台上显示的错误是:
Traceback (most recent call last):
File "/home/.../android/values/manipulate_json.py", line 5, in <module>
d = json.loads(json_data)
File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
[Finished in 0.1s with exit code 1]
Run Code Online (Sandbox Code Playgroud)
编辑 …
好吧,我有点尴尬地问这个问题,但我只是想确定......
众所周知,C在布尔表达式中使用短路评估:
int c = 0;
if (c && func(c)) { /* whatever... */ }
Run Code Online (Sandbox Code Playgroud)
在该示例func(c)
中未调用,因为c
求值为0
.但是,比较的副作用会改变下一个被比较的变量的更复杂的例子呢?像这样:
int c; /* this is not even initialized... */
if (canInitWithSomeValue(&c) && c == SOMETHING) { /*...*/ }
Run Code Online (Sandbox Code Playgroud)
函数canInitWithSomeValue
返回true并在成功时更改给定指针的值.是否保证后续比较(c == SOMETHING
在本例中)使用的值设置为canInitWithSomeValue(&c)
?
无论编译器使用多么繁重的优化?
我使用这种方法创建了iOS Framework项目:https://github.com/jverkoey/iOS-Framework
工作非常简洁,但我对如何包含我的框架工作所需的库/框架有点困惑,特别是如何做到这一点,以便在使用我的框架的第三方客户端应用程序可以包含这些库也没有冲突.
假设我的框架代码需要这两件事:
第一个是iOS框架.当我将它添加到我的框架中的"Link Binary With Libraries"阶段并尝试编译使用我的框架的客户端项目时,链接器抱怨缺少符号 - 我需要将FacebookSDK添加到客户端项目中这很棒:没有可能如果客户端应用想要使用Facebook,则会发生冲
但是,当我对Flurry静态库执行相同操作时,编译客户端项目时会出现重复符号错误.这让我有点困惑,因为不是FacebookSDK.framework只是一个打包的静态库?
ukaszs-iMac:FacebookSDK.framework lukasz$ file Versions/A/FacebookSDK
Versions/A/FacebookSDK: Mach-O universal binary with 3 architectures
Versions/A/FacebookSDK (for architecture i386): current ar archive random library
Versions/A/FacebookSDK (for architecture armv7): current ar archive random library
Versions/A/FacebookSDK (for architecture cputype (12) cpusubtype (11)): current ar archive random library
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
我在Android上尝试测试分片,我得到了非常奇怪的结果:
+ adb -s emulator-5580 shell am instrument -e numShards 2 -e shardIndex 0 -e class com.package.etc.automation.Tests.SanityTest.SanityTest -w com.package.etc.test/android.support.test.runner.AndroidJUnitRunner
com.package.etc.automation.Tests.SanityTest.SanityTest:..........
Time: 306.578
OK (10 tests)
+ adb -s emulator-5582 shell am instrument -e numShards 2 -e shardIndex 1 -e class com.package.etc.automation.Tests.SanityTest.SanityTest -w com.package.etc.test/android.support.test.runner.AndroidJUnitRunner
com.package.etc.automation.Tests.SanityTest.SanityTest:......................
Time: 645.723
OK (22 tests)
Run Code Online (Sandbox Code Playgroud)
如您所见,adb将测试分成两个不均匀的组.第二个测试的测试次数是第一个的两倍,执行时间是原来的两倍.如果你问我,不是最好的并行性.
是否有可能控制测试的分布,或至少强制adb平均分割测试?
是否有可能在Android中设置一个视图,它将一些颜色过滤器应用于其边界内可见的所有内容?就像在这个例子中:
只是一个简单的矩形视图,可以反转其下方所有内容的颜色.当然,当用户滚动列表时,它也会反映在倒置框中.有没有一些简单的方法来使用彩色滤镜,PorterDuff模式等?
有NSPointerArray
一些NSObject
已被释放的弱者.在打电话给compact
我看之前是:
(lldb) po [currentArray count]
1
(lldb) po [currentArray pointerAtIndex:0]
<nil>
(lldb) po [currentArray allObjects]
<__NSArrayM 0x16f04f00>(
)
Run Code Online (Sandbox Code Playgroud)
这是有道理的,但真正奇怪的是,当我调用compact
该数组时,我看到了相同的值!计数仍然返回1并且pointerAtIndex:0
是nil
.
为什么没有删除nil?
编辑
这是完整的代码(是的,它是XCTesting框架):
- (void)testCompaction {
__weak id testingPointer = nil;
NSPointerArray *weakArray = [NSPointerArray weakObjectsPointerArray];
@autoreleasepool {
NSObject *someObj = [[NSObject alloc] init];
testingPointer = someObj;
[weakArray addPointer:(__bridge void*)testingPointer];
NSLog(@"before compaction inside autorelease: testingPointer = %@ count = %d, allObjects = %@, pointerAtIndex:0 = %@, pointerAtIndex:0 class = …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一些静态库或开源项目(在obj-c中,在一些许可许可下发布)来解析iPhone中的CSS.有什么建议?
这是我使用自签名证书进行身份验证的非常标准的NSURLConnection回调:
- (SecCertificateRef)certRefFromDerNamed:(NSString*)derFileName resultingDataRef:(CFDataRef*)dataRefPtr{
NSString *thePath = [[NSBundle mainBundle] pathForResource:derFileName ofType:@"der"];
NSData *certData = [[NSData alloc] initWithContentsOfFile:thePath];
CFDataRef certDataRef = (__bridge_retained CFDataRef)certData;
SecCertificateRef cert = SecCertificateCreateWithData(NULL, certDataRef);
*dataRefPtr = certDataRef;
return cert;
}
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if (connection == self.connection) {
BOOL trusted = NO;
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
SecPolicyRef policyRef = SecPolicyCreateBasicX509();
SecCertificateRef cert1;
CFDataRef certData1;
cert1 = [self certRefFromDerNamed:@"some3rdpartycacert" resultingDataRef:&certData1];
SecCertificateRef certArray[1] = { cert1 };
CFArrayRef certArrayRef = CFArrayCreate(NULL, (void *)certArray, 1, NULL);
SecTrustRef …
Run Code Online (Sandbox Code Playgroud) 我在哪里可以找到高级CoreData并发的具体示例?高级我指的是在两个或多个线程上同时运行的上下文和NSManagedObjects上的操作,每个线程都可以读取和更改对象.每个对象都保存上下文并监听另一个线程中的更改,每个人都正确地合并更改,没有任何崩溃,没有不一致的异常,一切都按照应有的方式完成.
我阅读了有关Core Data并发的官方Apple文档,现在我正在寻找代码示例,教程,书籍或至少一些有关如何处理此类场景的更详细信息.
我想弄清楚如何解决以下情况
NSManagedObjectContext
使用NSMainQueueConcurrencyType
.它产生了几个后台线程,为它们提供了NSManagedObjectID
一些可以处理的对象.NSConfinenmentConcurrencyType
I thought the main context (some custom object that manages it) could keep the record of the object ids that were deleted during background thread lifetime (or, more precisely, between creating background context and final save of the background context). Then the background context would have to perform deleteObject:
on these objects just before it saves. And everything will go smoothly.
In order to be sure that main …
我想知道现代Android开发世界中有关Back Stack管理的常见做法或模式,特别是处理应用程序被杀或崩溃的情况,以及系统尝试重新创建其活动,因为应用程序创建的任务仍然存在.
以下是在示例应用上演示上述行为的视频:https://www.dropbox.com/s/pkm88dvdpzsw9lm/IMG_2334-480.mov?dl = 0
这里是源代码 - 基本上只是一个使用Android Studio向导创建的简单应用程序:ssh://git@github.com:lukaszs-appdate/crashingtask.git
假设该应用程序在开始时显示登录活动.然后当用户登录时从服务器下载数据并允许用户操作数据,启动其他活动,操纵应用程序的状态等.重要的假设是当用户例如切换到不同的应用程序并返回到我们的应用程序时,他们看到最后一个活动,而不是回到登录.因此,我认为文档https://developer.android.com/guide/components/activities/tasks-and-back-stack.html中的标记组合不足以解决问题.
问题是,当:a)应用程序崩溃并重新启动,或b)使用Android中的任务切换按钮将应用程序移至后台,然后在Android Studio中手动终止并通过点击任务图标然后返回Android尝试从任务中重新创建活动.我想让它在这些事件的情况下从头开始启动应用程序并显示登录屏幕.
我看到的唯一解决方案是除了登录之外的所有活动的一些丑陋的父类,我们将检查是否设置了一些伪会话变量,如果不是,则假设应用程序已重新启动并替换整个任务堆栈登录活动,或者做一些finish()调用或其他类似臭的东西.
还有其他想法吗?当有问题的应用程序被杀死时,Android是否只能删除应用程序创建的任务?
一个干净的解决方案是使用某种会话管理,允许任何活动有效地恢复应用程序的业务状态,使用户能够从任何活动中正确地恢复应用程序,即使它已被杀死.但这是另一个讨论.
我发现reshuffle_each_iteration
参数tf.Dataset.shuffle
有点混乱。考虑以下代码:
import tensorflow as tf
flist = ["trimg1", "trimg2", "trimg3", "trimg4"]
filenames = tf.constant(flist)
train_x_dataset = tf.data.Dataset.from_tensor_slices((filenames))
train_x_dataset = train_x_dataset.shuffle(buffer_size=10, reshuffle_each_iteration=False)
it_train_x = train_x_dataset.make_initializable_iterator()
next_sample = it_train_x.get_next()
with tf.Session() as sess:
for epoch in range(3):
sess.run(it_train_x.initializer)
print("Starting epoch ", epoch)
while True:
try:
s = sess.run(next_sample)
print("Sample: ", s)
except tf.errors.OutOfRangeError:
break
Run Code Online (Sandbox Code Playgroud)
代码输出:
Starting epoch 0
Sample: b'trimg2'
Sample: b'trimg1'
Sample: b'trimg3'
Sample: b'trimg4'
Starting epoch 1
Sample: b'trimg4'
Sample: b'trimg3'
Sample: b'trimg2'
Sample: b'trimg1'
Starting …
Run Code Online (Sandbox Code Playgroud) 当用户从移动Safari中选择"添加到主屏幕"选项时,她会看到一个对话框,在该对话框中,她可以输入该快捷方式的标题.文本字段已填充一些默认标题.
问题是:这个标题取自哪里?
在我的代码中,我有一个页面的标题(单个html文件中的所有页面):
<div data-role="header" class="toolbar">
<h1 id="someHeader" class="exampleHeader">Example Header</h1>
<a href="#" onclick="loadOtherStuff()">Other</a>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在使用动态更改此标题
var someDifferentTitle = ...
$('.exampleHeader').html(someDifferentTitle).trigger('create');
Run Code Online (Sandbox Code Playgroud)
标题更新很好,但当我点击"添加到主屏幕"时,系统仍然使用原始的"示例标题"提示!
如何解决这个问题?有任何想法吗?
ios ×4
android ×3
core-data ×2
iphone ×2
objective-c ×2
adb ×1
back-stack ×1
c ×1
colorfilter ×1
crash ×1
css ×1
frameworks ×1
json ×1
junit ×1
linker ×1
parsing ×1
porter-duff ×1
python ×1
session ×1
sharding ×1
ssl ×1
tensorflow ×1