11:56
Example code from episode.
Libraries
Libraries included, /usr/lib/libcrypto.dylib and /usr/lib/libssl.dylib
#import <Foundation/Foundation.h>
#import <openssl/evp.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *string = @"Hello";
OpenSSL_add_all_algorithms();
unsigned char outbuf[EVP_MAX_MD_SIZE];
unsigned int templen, inlen = [string length];
const char *input = [string UTF8String];
EVP_MD_CTX ctx;
const EVP_MD *digest = EVP_md5();
if(!digest) {
NSLog(@"cannot get digest with name MD5");
return 1;
}
EVP_MD_CTX_init(&ctx);
EVP_DigestInit(&ctx,digest);
if(!EVP_DigestUpdate(&ctx,input,inlen)) {
NSLog(@"EVP_DigestUpdate() failed!");
EVP_MD_CTX_cleanup(&ctx);
return 1;
}
if (!EVP_DigestFinal(&ctx, outbuf, &templen)) {
NSLog(@"EVP_DigesttFinal() failed!");
EVP_MD_CTX_cleanup(&ctx);
return 1;
}
EVP_MD_CTX_cleanup(&ctx);
NSMutableString *md5 = [NSMutableString string];
for (int i=0; i<templen; i++) {
[md5 appendFormat:@"%x", outbuf[i]];
}
NSLog(@"MD5 of %@ is %@", string, md5);
[pool drain];
return 0;
}
FrameworksFrameworks included, AddressBook.framework
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
ABAddressBook *addressBook = [ABAddressBook sharedAddressBook];
NSArray *people = [addressBook people];
for (int i=0; i<[people count]; i++) {
ABPerson *person = [people objectAtIndex:i];
NSString *firstName = [person valueForProperty:kABFirstNameProperty];
NSString *lastName = [person valueForProperty:kABLastNameProperty];
NSString *name = nil;
if (firstName!=nil) {
name = firstName;
if (lastName!=nil)
name = [name stringByAppendingFormat:@" %@", lastName];
}
if (name!=nil)
NSLog(@"Person named: %@", name);
}
[pool drain];
return 0;
}
Keynote used in this Episode
Keynote in PDF Format

Thanks for all the time you spend doing the podcasts.
ReplyDeleteKeep 'em coming :)
@iKindred: I have a lot planed, but I am needing people to do it with, and also I need time to do it. I am currently working on Voice Mac, an application I wrote, and making it open source and then I have family things to do as well.
ReplyDeleteThere's no rush dude, family and work comes first :)
ReplyDeleteI just felt like I needed to support you and the rest of the crew for the job you are doing. Thanks again for your effort.