- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我将图像 Assets 添加到 iOS 8.4 照片集合中的相册时,我正在尝试添加/修改图像元数据。以下代码成功添加了 GPS 字典,但没有添加或更改 EXIF 数据(我已经检查了图像标题并使用 EXIF 工具进行确认)。我尝试了两种不同的方法(请参阅 altSetMyImageInfo),但都没有结果。我错过了什么?
@property (nonatomic) CLLocation *location;
. . .
[self.stillImageOutput captureStillImageAsynchronouslyFromConnection:connection completionHandler:^( CMSampleBufferRef imageDataSampleBuffer, NSError *error ) {
if ( imageDataSampleBuffer ) {
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
CFDictionaryRef tempDict = CMCopyDictionaryOfAttachments(NULL, imageDataSampleBuffer, kCMAttachmentMode_ShouldPropagate);
CFMutableDictionaryRef theDict = CFDictionaryCreateMutableCopy(NULL, 0, tempDict);
[self setMyImageInfo:theDict];
[self setMyLocation:theDict];
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
CFStringRef UTI = CGImageSourceGetType(source);
NSMutableData *newImageData = [NSMutableData data];
CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)newImageData,UTI,1,NULL);
BOOL success = CGImageDestinationFinalize(destination);
CFRelease(destination);
CFRelease(source);
}
}
. . .
if ( [PHAssetResourceCreationOptions class] ) {
[[PHAssetCreationRequest creationRequestForAsset] addResourceWithType:PHAssetResourceTypeFullSizePhoto data:newImageData options:nil];
}
else {
NSError *error = nil;
[newImageData writeToURL:temporaryFileURL options:NSDataWritingAtomic error:&error];
if ( error ) {
NSLog( @"Error: %@", error );
}
else {
PHAssetChangeRequest *newImageRequest = [PHAssetChangeRequest creationRequestForAssetFromImageAtFileURL:temporaryFileURL];
PHAssetCollectionChangeRequest *albumChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:theAlbum];
[albumChangeRequest addAssets:@[newImageRequest.placeholderForCreatedAsset]];
}
. . .
- (void) setMyImageInfo:(CFMutableDictionaryRef)theDict
{
NSMutableDictionary *exif = [NSMutableDictionary dictionary];
[exif setObject:@"2.2.2" forKey:(NSString *)kCGImagePropertyExifVersion];
[exif setObject:@“MyIdentity” forKey:(NSString *)kCGImagePropertyExifImageUniqueID];
[exif setObject:@"I hope this works!" forKey:(NSString *)kCGImagePropertyExifUserComment];
CFDictionarySetValue(theDict, kCGImagePropertyExifDictionary, (__bridge void *)exif);
}
- (void) setMyLocation:(CFMutableDictionaryRef)theDict
{
NSMutableDictionary *gps = [NSMutableDictionary dictionary];
[gps setObject:@"2.2.0.0" forKey:(NSString *)kCGImagePropertyGPSVersion];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss.SSSSSS"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[gps setObject:[formatter stringFromDate:self.location.timestamp] forKey:(NSString *)kCGImagePropertyGPSTimeStamp];
[formatter setDateFormat:@"yyyy:MM:dd"];
[gps setObject:[formatter stringFromDate:self.location.timestamp] forKey:(NSString *)kCGImagePropertyGPSDateStamp];
CGFloat latitude = self.location.coordinate.latitude;
if (latitude < 0) {
latitude = -latitude;
[gps setObject:@"S" forKey:(NSString *)kCGImagePropertyGPSLatitudeRef];
} else {
[gps setObject:@"N" forKey:(NSString *)kCGImagePropertyGPSLatitudeRef];
}
[gps setObject:[NSNumber numberWithFloat:latitude] forKey:(NSString *)kCGImagePropertyGPSLatitude];
CGFloat longitude = self.location.coordinate.longitude;
if (longitude < 0) {
longitude = -longitude;
[gps setObject:@"W" forKey:(NSString *)kCGImagePropertyGPSLongitudeRef];
} else {
[gps setObject:@"E" forKey:(NSString *)kCGImagePropertyGPSLongitudeRef];
}
[gps setObject:[NSNumber numberWithFloat:longitude] forKey:(NSString *)kCGImagePropertyGPSLongitude];
CGFloat altitude = self.location.altitude;
if (!isnan(altitude)){
if (altitude < 0) {
altitude = -altitude;
[gps setObject:@"1" forKey:(NSString *)kCGImagePropertyGPSAltitudeRef];
} else {
[gps setObject:@"0" forKey:(NSString *)kCGImagePropertyGPSAltitudeRef];
}
[gps setObject:[NSNumber numberWithFloat:altitude] forKey:(NSString *)kCGImagePropertyGPSAltitude];
}
if (self.location.speed >= 0){
[gps setObject:@"K" forKey:(NSString *)kCGImagePropertyGPSSpeedRef];
[gps setObject:[NSNumber numberWithFloat:self.location.speed*3.6] forKey:(NSString *)kCGImagePropertyGPSSpeed];
}
if (self.location.course >= 0){
[gps setObject:@"T" forKey:(NSString *)kCGImagePropertyGPSTrackRef];
[gps setObject:[NSNumber numberWithFloat:self.location.course] forKey:(NSString *)kCGImagePropertyGPSTrack];
}
CFDictionarySetValue(theDict, kCGImagePropertyGPSDictionary, (__bridge void *)gps);
}
- (void) altSetMyImageInfo:(CFMutableDictionaryRef)theDict
{
CFStringRef imageUniqueID = CFStringCreateWithCString(NULL, [@“MyImageID” cStringUsingEncoding:NSASCIIStringEncoding], kCFStringEncodingASCII);
CFDictionarySetValue(theDict, kCGImagePropertyExifImageUniqueID, imageUniqueID);
CFRelease (imageUniqueID);
CFStringRef userComment = CFStringCreateWithCString(NULL, [@"I hope this works!" cStringUsingEncoding:NSASCIIStringEncoding], kCFStringEncodingASCII);
CFDictionarySetValue(theDict, kCGImagePropertyExifUserComment, userComment);
CFRelease (userComment);
}
最佳答案
这个问题的答案涉及到很多东西。一个小例子,“CGImageSourceRef source”丢失了。最重要的是,由于“你们都知道谁”(你们最好知道,因为我不能说)的 NDA 限制,我无法将问题放入项目的上下文中。我没有解析问题,而是用代码发布了答案。如果你将这段代码插入到“你知道谁”的某个示例程序中(我不能说出示例名称,但 maCVA 可能会为你提供搜索他们的开发者库的线索)。我这样做是为了让大部分代码位于某个大源文件的末尾,其他行有引用行号(从顶部开始插入)。唯一的其他变化是头文件将 CLLocationManagerDelegate 添加到 @interface。您可能还想将位置服务添加到 plist。
我已经包含调试代码以查看日志文件中的元数据。剩下的唯一问题是是使用 CFDictionarySetValue 还是“setObject:forKey:”来分配字典值。我将前者用于 EXIF/TIFF 数据,将后者用于 GPS 数据,但在 EXIF/TIFF 方法中包含“setObject: forKey:”代码作为注释。两者都有效。 “setObject: forKey:”更简洁。有什么意见吗?
@import CoreLocation; // MAS: for GPS (line 11)
@property (strong, nonatomic) CLLocationManager *locationManager; // MAS: for image metadata (line 42)
@property (nonatomic) CLLocation *location; // MAS: get it early and save it here (line 43)
@property (assign, nonatomic) id< CLLocationManagerDelegate > delegate; // MAS: do we really need this? (line 44)
/* MAS: Instantiate location manager (in viewDidLoad, about line 70)
*/
self.locationManager = [[CLLocationManager alloc] init];
/* MAS: end
*/
[self startStandardUpdates]; // MAS: get our location (in viewDidLoad about line 201, not quite at the end)
/* MAS: (still in veiwDidLoad about line 206 after dispatch)
*/
if ([CLLocationManager locationServicesEnabled]) {
NSLog(@"location services enabled");
}
else {
NSLog( @"Could not add location services to the session" );
// self.setupResult = PikBitSetupResultSessionConfigurationFailed;
// Display alert to the user.
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Location services"
message:@"Location services are not enabled on this device. Please enable location services in settings."
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"Dismiss" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}]; // NULL action to dismiss the alert.
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
}
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)
{
[self.locationManager requestWhenInUseAuthorization];
NSLog(@"location authorization status not determined");
} else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
NSLog(@"location services authorization was previously denied by the user.");
// Display alert to the user.
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Location services"
message:@"Location services were previously denied by the user. Please enable location services for this app in settings."
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"Dismiss" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}]; // Do nothing action to dismiss the alert.
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
}
/* MAS: end
*/
/* MAS: about line 616, once you have image NSData
*/
CFDictionaryRef tempDict = CMCopyDictionaryOfAttachments(NULL, imageDataSampleBuffer, kCMAttachmentMode_ShouldPropagate);
CFMutableDictionaryRef theDict = CFDictionaryCreateMutableCopy(NULL, 0, tempDict);
[self setMyImageInfo:theDict];
[self setMyLocation:theDict];
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
CFStringRef UTI = CGImageSourceGetType(source);
NSMutableData *newImageData = [NSMutableData data];
CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)newImageData,UTI,1,NULL);
if(!destination) {
NSLog(@"***Could not create image destination ***");
}
CGImageDestinationAddImageFromSource(destination,source,0, (CFDictionaryRef) theDict);
BOOL success = CGImageDestinationFinalize(destination);
CFRelease(destination);
CFRelease(source);
if( success ) {
NSLog(@"it worked, let's see the metadata");
[self checkEXIF:newImageData];
}
else {
NSLog(@"***Could not create data from image destination ***");
}
/* MAS: end
*/
[[PHAssetCreationRequest creationRequestForAsset] addResourceWithType:PHAssetResourceTypePhoto data:newImageData options:nil]; // MAS: change data to 'NewImageData' (about line 654)
[newImageData writeToURL:temporaryFileURL options:NSDataWritingAtomic error:&error]; // MAS: change source to newImageData (about line 668)
/* MAS: start (immediately before @end)
*/
#pragma mark - location delegate methods
// Start the standard location service
- (void)startStandardUpdates
{
// set the delegate and the parameters
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
// Set a movement threshold for new events.
self.locationManager.distanceFilter = 500; // meters
[self.locationManager startUpdatingLocation];
NSLog(@"location manager started");
}
// Delegate methods
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
// If it's a relatively recent event, turn off updates to save power.
self.location = [locations lastObject];
NSLog(@"location manager delegate used");
NSDate* eventDate = self.location.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
if (fabs(howRecent) < 15.0) {
// If the event is recent, do something with it.
NSLog(@"latitude %+.6f, longitude %+.6f\n",
self.location.coordinate.latitude,
self.location.coordinate.longitude);
}
else {
NSLog(@"latitude %+.6f, longitude %+.6f\n",
self.location.coordinate.latitude,
self.location.coordinate.longitude);
}
/* MAS: for optimizing usage (later)
[manager stopUpdatingLocation]; // If we only want one update.
manager.delegate = nil; // We might be called again here, even though we
// called "stopUpdatingLocation", so remove us as the delegate to be sure.
*/
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
// report any errors returned back from Location Services
NSLog(@"location manager error - %@", error.description);
}
- (void) setMyImageInfo:(CFMutableDictionaryRef)theDict
{
NSString *temp = @"This is a very long string, used to test the loading of the image description field";
NSString *tempID = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ012345"; // used to test imageUniqueID field, should the 33rd character be a nul?
//
if (theDict) {
// save a dictionary of the TIFF image properties
CFDictionaryRef tiffData = CFDictionaryGetValue(theDict, kCGImagePropertyTIFFDictionary);
CFMutableDictionaryRef tiffDataMut;
if (tiffData) {
tiffDataMut = CFDictionaryCreateMutableCopy(nil, 0, tiffData);
}
else {
tiffDataMut = CFDictionaryCreateMutable(nil, 0,
&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
}
// The best place to store a long string --
CFStringRef imageDescription = CFStringCreateWithCString(NULL, [temp cStringUsingEncoding:NSASCIIStringEncoding], kCFStringEncodingASCII);
CFDictionarySetValue(tiffDataMut, kCGImagePropertyTIFFImageDescription, imageDescription);
CFRelease (imageDescription);
// Carry the brand into the image --
CFStringRef software = CFStringCreateWithCString(NULL, [@"MyApp" cStringUsingEncoding:NSASCIIStringEncoding], kCFStringEncodingASCII);
CFDictionarySetValue(tiffDataMut, kCGImagePropertyTIFFSoftware, software);
CFRelease (software);
// Carry the manufacturer into the image --
CFStringRef make = CFStringCreateWithCString(NULL, [@"Apple" cStringUsingEncoding:NSASCIIStringEncoding], kCFStringEncodingASCII);
CFDictionarySetValue(tiffDataMut, kCGImagePropertyTIFFMake, make);
CFRelease (make);
// Carry the device name into the image --
CFStringRef model = CFStringCreateWithCString(NULL, [@"iPhone" cStringUsingEncoding:NSASCIIStringEncoding], kCFStringEncodingASCII);
CFDictionarySetValue(tiffDataMut, kCGImagePropertyTIFFModel, model);
CFRelease (model);
CFDictionarySetValue(theDict, kCGImagePropertyTIFFDictionary, tiffDataMut);
CFRelease(tiffDataMut);
// Now do the same for EXIF
// save a dictionary of the EXIF image properties
CFDictionaryRef exifData = CFDictionaryGetValue(theDict, kCGImagePropertyExifDictionary);
CFMutableDictionaryRef exifDataMut;
if (exifData) {
exifDataMut = CFDictionaryCreateMutableCopy(nil, 0, exifData);
}
else {
exifDataMut = CFDictionaryCreateMutable(nil, 0,
&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
}
// This is a good place to store an ID, but it only holds 33 characters --
CFStringRef imageUniqueID = CFStringCreateWithCString(NULL, [tempID cStringUsingEncoding:NSASCIIStringEncoding], kCFStringEncodingASCII);
CFDictionarySetValue(exifDataMut, kCGImagePropertyExifImageUniqueID, imageUniqueID);
CFRelease (imageUniqueID);
// Just to see that it works --
CFStringRef userComment = CFStringCreateWithCString(NULL, [@"I hope this works! And it does!!" cStringUsingEncoding:NSASCIIStringEncoding], kCFStringEncodingASCII);
CFDictionarySetValue(exifDataMut, kCGImagePropertyExifUserComment, userComment);
CFRelease (userComment);
CFDictionarySetValue(theDict, kCGImagePropertyExifDictionary, exifDataMut);
CFRelease(exifDataMut);
}
else {
NSLog(@"Metadata Dictionairy for image empty");
}
/* alternative version (this has been tested and works) --
// Create dictionaries -
NSMutableDictionary *exif = [NSMutableDictionary dictionary];
NSMutableDictionary *tiff = [NSMutableDictionary dictionary];
// load some TIFF and EXIF data --
[tiff setObject:temp forKey:(NSString *)kCGImagePropertyTIFFImageDescription];
[tiff setObject:@"Apple" forKey:(NSString *)kCGImagePropertyTIFFMake];
[tiff setObject:@"iPhone" forKey:(NSString *)kCGImagePropertyTIFFModel];
[tiff setObject:@"PikLips" forKey:(NSString *)kCGImagePropertyTIFFSoftware];
[exif setObject:@"I hope this works! And it does, too!!" forKey:(NSString *)kCGImagePropertyExifUserComment];
[exif setObject:tempID forKey:(NSString *)kCGImagePropertyExifImageUniqueID];
// load the info into the passed CFMutableDictionaryRef --
CFDictionarySetValue(theDict, kCGImagePropertyExifDictionary, (__bridge void *)exif);
CFDictionarySetValue(theDict, kCGImagePropertyTIFFDictionary, (__bridge void *)tiff);
* end
*/
}
- (void) setMyLocation:(CFMutableDictionaryRef)theDict
{
NSMutableDictionary *gps = [NSMutableDictionary dictionary];
[gps setObject:@"2.2.0.0" forKey:(NSString *)kCGImagePropertyGPSVersion];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss.SSSSSS"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[gps setObject:[formatter stringFromDate:self.location.timestamp] forKey:(NSString *)kCGImagePropertyGPSTimeStamp];
[formatter setDateFormat:@"yyyy:MM:dd"];
[gps setObject:[formatter stringFromDate:self.location.timestamp] forKey:(NSString *)kCGImagePropertyGPSDateStamp];
CGFloat latitude = self.location.coordinate.latitude;
if (latitude < 0) {
latitude = -latitude;
[gps setObject:@"S" forKey:(NSString *)kCGImagePropertyGPSLatitudeRef];
} else {
[gps setObject:@"N" forKey:(NSString *)kCGImagePropertyGPSLatitudeRef];
}
[gps setObject:[NSNumber numberWithFloat:latitude] forKey:(NSString *)kCGImagePropertyGPSLatitude];
CGFloat longitude = self.location.coordinate.longitude;
if (longitude < 0) {
longitude = -longitude;
[gps setObject:@"W" forKey:(NSString *)kCGImagePropertyGPSLongitudeRef];
} else {
[gps setObject:@"E" forKey:(NSString *)kCGImagePropertyGPSLongitudeRef];
}
[gps setObject:[NSNumber numberWithFloat:longitude] forKey:(NSString *)kCGImagePropertyGPSLongitude];
CGFloat altitude = self.location.altitude;
if (!isnan(altitude)){
if (altitude < 0) {
altitude = -altitude;
[gps setObject:@"1" forKey:(NSString *)kCGImagePropertyGPSAltitudeRef];
} else {
[gps setObject:@"0" forKey:(NSString *)kCGImagePropertyGPSAltitudeRef];
}
[gps setObject:[NSNumber numberWithFloat:altitude] forKey:(NSString *)kCGImagePropertyGPSAltitude];
}
if (self.location.speed >= 0){
[gps setObject:@"K" forKey:(NSString *)kCGImagePropertyGPSSpeedRef];
[gps setObject:[NSNumber numberWithFloat:self.location.speed*3.6] forKey:(NSString *)kCGImagePropertyGPSSpeed];
}
if (self.location.course >= 0){
[gps setObject:@"T" forKey:(NSString *)kCGImagePropertyGPSTrackRef];
[gps setObject:[NSNumber numberWithFloat:self.location.course] forKey:(NSString *)kCGImagePropertyGPSTrack];
}
CFDictionarySetValue(theDict, kCGImagePropertyGPSDictionary, (__bridge void *)gps);
}
#pragma mark debug
// This is used to verify the metadata loading
- (void)checkEXIF:(NSData *) imageData {
CGImageSourceRef myImageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
CFDictionaryRef imagePropertiesDictionary;
CFDictionaryRef tiffPropertiesDictionary;
CFDictionaryRef exifPropertiesDictionary;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], (NSString *)kCGImageSourceShouldCache,
nil];
imagePropertiesDictionary = CGImageSourceCopyPropertiesAtIndex(myImageSource,0, (CFDictionaryRef)options);
/* these value are produced by the system
*/
CFNumberRef imageWidth = (CFNumberRef)CFDictionaryGetValue(imagePropertiesDictionary, kCGImagePropertyPixelWidth);
CFNumberRef imageHeight = (CFNumberRef)CFDictionaryGetValue(imagePropertiesDictionary, kCGImagePropertyPixelHeight);
int w = 0;
int h = 0;
CFNumberGetValue(imageWidth, kCFNumberIntType, &w);
CFNumberGetValue(imageHeight, kCFNumberIntType, &h);
// NSDictionary *propertiesDict = (NSDictionary *)CFBridgingRelease(imagePropertiesDictionary); // this assignment throws an exception later in the code
NSLog(@"Image Width: %d",w);
NSLog(@"Image Height: %d",h);
// NSLog(@"Image Properties: %@", propertiesDict);
/* These values are what we added --
*/
tiffPropertiesDictionary = CFDictionaryGetValue(imagePropertiesDictionary,kCGImagePropertyTIFFDictionary);
if ( tiffPropertiesDictionary ) {
NSString *make = (NSString *)CFDictionaryGetValue(tiffPropertiesDictionary, kCGImagePropertyTIFFMake);
NSString *model = (NSString *)CFDictionaryGetValue(tiffPropertiesDictionary, kCGImagePropertyTIFFModel);
NSString *imageDescription = (NSString *)CFDictionaryGetValue(tiffPropertiesDictionary, kCGImagePropertyTIFFImageDescription);
NSString *software = (NSString *)CFDictionaryGetValue(tiffPropertiesDictionary, kCGImagePropertyTIFFSoftware);
NSLog(@"Image Description: %@", imageDescription);
NSLog(@"Make: %@", make);
NSLog(@"Model: %@", model);
NSLog(@"Software: %@", software);
}
else {
NSLog(@"No TIFF dictionary");
}
exifPropertiesDictionary = CFDictionaryGetValue(imagePropertiesDictionary,kCGImagePropertyExifDictionary);
if ( exifPropertiesDictionary ) {
NSString *uniqueID = (__bridge NSString *)CFDictionaryGetValue(exifPropertiesDictionary, kCGImagePropertyExifImageUniqueID);
NSString *userComment = (__bridge NSString *)CFDictionaryGetValue(exifPropertiesDictionary, kCGImagePropertyExifUserComment);
NSLog(@"Unique ID: %@", uniqueID);
NSLog(@"User comment: %@", userComment);
}
else {
NSLog(@"No EXIF dictionary");
}
CFRelease(imagePropertiesDictionary);
}
/* MAS: end
*/
关于ios - CFDictionary 更新到 PHPhotoLibrary kCGImagePropertyExifDictionary 不采取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32275454/
我查看了网站上的一些问题,但还没有完全弄清楚我做错了什么。我有一些这样的代码: var mongoose = require('mongoose'), db = mongoose.connect('m
基本上,根据 this bl.ocks,我试图在开始新序列之前让所有 block 都变为 0。我认为我需要的是以下顺序: 更新为0 退出到0 更新随机数 输入新号码 我尝试通过添加以下代码块来遵循上述
我试图通过使用随机数在循环中设置 JSlider 位置来模拟“赛马”的投注结果。我的问题是,当然,我无法在线程执行时更新 GUI,因此我的 JSlider 似乎没有在竞赛,它们从头到尾都在运行。我尝试
该功能非常简单: 变量:$table是正在更新的表$fields 是表中的字段,$values 从帖子生成并放入 $values 数组中而$where是表的索引字段的id值$indxfldnm 是索引
让我们想象一个环境:有一个数据库客户端和一个数据库服务器。数据库客户端可以是 Java 程序或其他程序等;数据库服务器可以是mysql、oracle等。 需求是在数据库服务器上的一个表中插入大量记录。
在我当前的应用程序中,我正在制作一个菜单结构,它可以递归地创建自己的子菜单。然而,由于这个原因,我发现很难也允许某种重新排序方法。大多数应用程序可能只是通过“排序”列进行排序,但是在这种情况下,尽管这
Provisioning Profile 有 key , key 链依赖于它。我想知道 key 什么时候会改变。 Key will change after renew Provisioning Pr
截至目前,我在\server\publications.js 中有我的 MongoDB“选择”,例如: Meteor.publish("jobLocations", function () { r
我读到 UI 应该始终在主线程上更新。但是,当谈到实现这些更新的首选方法时,我有点困惑。 我有各种函数可以执行一些条件检查,然后使用结果来确定如何更新 UI。我的问题是整个函数应该在主线程上运行吗?应
我在代理后面,我无法构建 Docker 镜像。 我试过 FROM ubuntu , FROM centos和 FROM alpine ,但是 apt-get update/yum update/apk
我构建了一个 Java 应用程序,它向外部授权客户端公开网络服务。 Web 服务使用带有证书身份验证的 WS-security。基本上我们充当自定义证书颁发机构 - 我们在我们的服务器上维护一个 ja
因此,我有时会在上传新版本时使用 app_offline.htm 使应用程序离线。 但是,当我上传较大的 dll 时,我收到黄色错误屏幕,指出无法加载 dll。 这似乎与我对 app_offline.
我刚刚下载了 VS Apache Cordova Tools Update 5,但遇到了 Node 和 NPM 的问题。我使用默认的空白 cordova 项目进行测试。 版本 如果我在 VS 项目中对
所以我有一个使用传单库实例化的 map 对象。 map 实例在单独的模板中创建并以这种方式路由:- var app = angular.module('myApp', ['ui', 'ngResour
我使用较早的 Java 6 u 3 获得的帧速率是新版本的两倍。很奇怪。谁能解释一下? 在 Core 2 Duo 1.83ghz 上,集成视频(仅使用一个内核)- 1500(较旧的 java)与 70
我正在使用 angular 1.2 ng-repeat 创建的 div 也包含 ng-click 点击时 ng-click 更新 $scope $scope 中的变化反射(reflect)在使用 $a
这些方法有什么区别 public final void moveCamera(CameraUpdate更新)和public final void animateCamera (CameraUpdate
我尝试了另一篇文章中某人评论中关于如何将树更改为列表的建议。但是,我在某处(或某物)有未声明的变量,所以我列表中的值是 [_G667, _G673, _G679],而不是 [5, 2, 6],这是正确
实现以下场景的最佳方法是什么? 我需要从java应用程序调用/查询包含数百万条记录的数据库表。然后,对于表中的每条记录,我的应用程序应该调用第三方 API 并获取状态字段作为响应。然后我的应用程序应该
只是在编写一些与 java 图形相关的代码,这是我今天的讲座中的非常简单的示例。不管怎样,互联网似乎说更新不会被系统触发器调用,例如调整框架大小等。在这个例子中,更新是由这样的触发器调用的(因此当我只
我是一名优秀的程序员,十分优秀!