今天我开始为iOS8准备好我的应用程序.我发现我的UITableCells的字幕不会更新viewWillAppear.我把它归结为一个最小的例子:
我有一个带有2个单元格的静态单元格TableViewController(style = subtitle)一个副标题是空的,另一个是设置的.

我像这样更新字幕:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[self.without detailTextLabel] setText:@"foobar"];
[[self.with detailTextLabel] setText:@"barfoo"];
}
Run Code Online (Sandbox Code Playgroud)
虽然Everythin在iOS7(以及6和5)下工作,但iOS8不会更新第一个单元格的标题.

但是,当我触摸单元格时,它将更新并显示文本.
这是一个模拟器问题吗?一个bug?难道我做错了什么?
我解析数据/proc/[pid]/statm以获得关于某个进程的内存使用情况的线索.man proc说明驻留集大小(以"页面"衡量)与VmRSS(KB ??)相同/proc/[pid]/status.由于它们具有不同的值,我想了解这些值之间的联系.是否有某种因素我可以在某处阅读/proc(我想到了VmPTE,但它的......其他......)?我应该解析哪一个才能获得某个进程的已用内存的大小?
#ex 1782 = firefox
~$ cat /proc/1782/statm
224621 46703 9317 11 0 98637 0
# \--- resident set size
~$ cat /proc/1782/status | grep Vm
VmPeak: 935584 kB
VmSize: 898484 kB
VmLck: 0 kB
VmHWM: 257608 kB
VmRSS: 186812 kB
VmData: 394328 kB
VmStk: 220 kB
VmExe: 44 kB
VmLib: 61544 kB
VmPTE: 1224 kB
VmSwap: 0 kB
Run Code Online (Sandbox Code Playgroud) 现在我的公钥有问题,我使用SecKeyGeneratePair生成公共和私有.现在我必须将我的公钥发送到服务器.我使用下面的方法将SecKeyRef转换为NSData,总是得到相同的公钥.但是我将其转换为base64格式并将其发送到服务器.但它根本不工作,服务器(Java)开始抛出错误.这是我的iOS代码:
- (NSData *)getPublicKeyBits {
OSStatus sanityCheck = noErr;
NSData * publicKeyBits = nil;
NSMutableDictionary * queryPublicKey = [[NSMutableDictionary alloc] init];
// Set the public key query dictionary.
[queryPublicKey setObject:(id)kSecClassKey forKey:(id)kSecClass];
[queryPublicKey setObject:publicTag forKey:(id)kSecAttrApplicationTag];
[queryPublicKey setObject:(id)kSecAttrKeyTypeRSA forKey:(id)kSecAttrKeyType];
[queryPublicKey setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnData];
// Get the key bits.
sanityCheck = SecItemCopyMatching((CFDictionaryRef)queryPublicKey, (CFTypeRef *)&publicKeyBits);
if (sanityCheck != noErr)
{
publicKeyBits = nil;
}
[queryPublicKey release];
return publicKeyBits;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我将SecKeyRef转换为NSString或NSData.
提前致谢!!!
-Murali Krishnan
当我试图弄清楚“CSS 网格”时,我偶然发现了 Firefox 开发版。顺便说一句,这是学习 CSS Grid 的一个很好的工具。如果我可以使用编辑器来实际更改内容,那就更好了。不幸的是,我不知道如何保存我所做的更改(img)。非常感谢您的帮助。
我读过proc/<pid>/io来测量SQL查询的IO活动,其中<pid>是数据库服务器的PID.我读取每个查询之前和之后的值以计算差异并获得请求被读取和/或写入的字节数.
据我所知,该字段READ_BYTES计算实际的磁盘IO,同时RCHAR包含更多内容,例如linux页面缓存可以满足的读取(请参阅了解/ proc/[pid]/io中的计数器以 进行说明).这导致了假设,即RCHAR应该得到一个等于或大于的值READ_BYTES,但我的结果与这个假设相矛盾.
我可以想象我为Infobright ICE得到的一些小块或页面开销(值为MB):
Query RCHAR READ_BYTES
tpch_q01.sql| 34.44180| 34.89453|
tpch_q02.sql| 2.89191| 3.64453|
tpch_q03.sql| 32.58994| 33.19531|
tpch_q04.sql| 17.78325| 18.27344|
Run Code Online (Sandbox Code Playgroud)
但我完全不理解MonetDB的IO计数器(值为MB):
Query RCHAR READ_BYTES
tpch_q01.sql| 0.07501| 220.58203|
tpch_q02.sql| 1.37840| 18.16016|
tpch_q03.sql| 0.08272| 162.38281|
tpch_q04.sql| 0.06604| 83.25391|
Run Code Online (Sandbox Code Playgroud)
我错误的假设RCHAR包括READ_BYTES?有没有办法欺骗内核计数器,MonetDB可以使用?这里发生了什么?
我可能会补充一点,我清除页面缓存并在每次查询之前重新启动数据库服务器.我在Ubuntu 11.10上运行内核3.0.0-15-generic.
我有点被这个异常困住了:
java.lang.RuntimeException: error:0407806d:RSA routines:decrypt:DATA_LEN_NOT_EQUAL_TO_MOD_LEN
at com.android.org.conscrypt.NativeCrypto.RSA_private_decrypt(Native Method)
at com.android.org.conscrypt.OpenSSLCipherRSA.engineDoFinal(OpenSSLCipherRSA.java:274)
at javax.crypto.Cipher.doFinal(Cipher.java:1440)
at javax.crypto.CipherInputStream.close(CipherInputStream.java:190)
...
Run Code Online (Sandbox Code Playgroud)
当我关闭 Android Marshmallow 上的 CipherInputStream 时会抛出它。一切似乎都适用于早期的 Android 版本。
什么DATA_LEN_NOT_EQUAL_TO_MOD_LEN意思?为什么RSA_private_decrypt它应该在应该释放资源句柄(关闭)时解密(调用)?
更新:
我设法用一些测试代码重现了错误。它加密和解密"foobar"。一次直接使用密码,一次通过 CipherInputStream(就像在原始应用程序中完成的那样)。
一切都在 android < 6 上工作,非流代码甚至在 android 6 上工作。当我将显式密码更改RSA/ECB/PKCS1Padding为 generic时,我能够让流代码在 android 6 上工作RSA。但我敢打赌它的存在是有原因的;)
static final String RSA_ALGO = "RSA/ECB/PKCS1Padding";
// static final String RSA_ALGO = "RSA";
private void _testCrypto2() throws Exception {
KeyPairGenerator keyGen;
KeyPair keys;
byte[] encrypted;
byte[] decrypted;
String input;
String output;
keyGen …Run Code Online (Sandbox Code Playgroud) 我正在使用一些较旧的 JavaScript 代码,并偶然发现在这样的情况下广泛使用额外的括号:
if ((foo)) { /* ... */ }
if (!(bar)) { /* ... */ }
if ((lorem === 'ipsum')) { /* ... */ }
if ((functionCall1()) || (functionCall2())) { /* ... */}
Run Code Online (Sandbox Code Playgroud)
这种做法有意义吗?我是否不知道旧 javascript 实现中的错误?