(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| # 1.install gource using HomeBrew | |
| $ brew install gource | |
| # 2.install avconv | |
| git clone git://git.libav.org/libav.git | |
| cd libav | |
| # it will take 3-5 minutes to complie, be patient. | |
| ./configure --disable-yasm | |
| make && make install |
| NSURLConnection | NSURLSession | |
| ------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------- | |
| NSURLConnectionDelegate connectionShouldUseCredentialStorage: | | |
| ------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------- | |
| NSURLConnectionDelegate connection:willSendRequestForAuthenticationChallenge: | NSURLSessionDelegate URLSession:didReceiveChallenge:completionHandler: | |
| | N |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| <plist version="1.0"> | |
| <dict> | |
| <key>People</key> | |
| <array> | |
| <string>😄</string> | |
| <string>😃</string> | |
| <string>😀</string> | |
| <string>😊</string> |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <Bucket | |
| type = "2" | |
| version = "2.0"> | |
| <Breakpoints> | |
| <BreakpointProxy | |
| BreakpointExtensionID = "Xcode.Breakpoint.SymbolicBreakpoint"> | |
| <BreakpointContent | |
| shouldBeEnabled = "Yes" | |
| ignoreCount = "0" |
| - (BOOL)__isValidResumeData:(NSData *)data{ | |
| if (!data || [data length] < 1) return NO; | |
| NSError *error; | |
| NSDictionary *resumeDictionary = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:NULL error:&error]; | |
| if (!resumeDictionary || error) return NO; | |
| NSString *localFilePath = [resumeDictionary objectForKey:@"NSURLSessionResumeInfoLocalPath"]; | |
| if ([localFilePath length] < 1) return NO; | |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| // | |
| // JAZMusician.h | |
| // JazzyApp | |
| // | |
| #import <Foundation/Foundation.h> | |
| /** | |
| JAZMusician models, you guessed it... Jazz Musicians! | |
| From Ellington to Marsalis, this class has you covered. |
| @interface NSArray (Batching) | |
| - (void) enumerateObjectsWithBatchSize:(NSUInteger)batchSize | |
| usingBlock:(void (^)(NSArray* batch, NSUInteger startIndex, BOOL *stop))block; | |
| @end | |
| var mediaJSON = { "categories" : [ { "name" : "Movies", | |
| "videos" : [ | |
| { "description" : "Big Buck Bunny tells the story of a giant rabbit with a heart bigger than himself. When one sunny day three rodents rudely harass him, something snaps... and the rabbit ain't no bunny anymore! In the typical cartoon tradition he prepares the nasty rodents a comical revenge.\n\nLicensed under the Creative Commons Attribution license\nhttp://www.bigbuckbunny.org", | |
| "sources" : [ "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" ], | |
| "subtitle" : "By Blender Foundation", | |
| "thumb" : "images/BigBuckBunny.jpg", | |
| "title" : "Big Buck Bunny" | |
| }, | |
| { "description" : "The first Blender Open Movie from 2006", | |
| "sources" : [ "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4" ], |