8+ 1 рдореЗрдВ: рдореИрдВ рдХреИрд╕реЗ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛

рд╢реБрдн рд╕рдВрдзреНрдпрд╛, рд╣рдмрд░рдЪрд┐рддреНрддреЗрд▓реА!

рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдирдП рд╕рдВрджреЗрд╢рд╡рд╛рд╣рдХ рдореЗрдВ 8+ рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдЙрди рдЬрдЧрд╣реЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдерд╛, рдЬрд╣рд╛рдВ рд╣рдо рдкреНрд░реЗрд╕ рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рдереЗред рдРрд╕реА рд╣реА рдЬрдЧрд╣реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдереА рд╣рдмрд░ред

рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдкреВрдЫреЗ:


рдЫрд╡рд┐



рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐

рд╢реБрд░реВ рд╕реЗ рд╣реА рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдореИрдВ рдкрд╣рд▓реЗ рднреА рдПрдХ рдРрд╕рд╛ рд╣реА рд▓реЗрдЦ рджреЗрдЦ рдЪреБрдХрд╛ рд╣реВрдБ, рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдпрд╣ рд╕рд╡рд╛рд▓ рдкрд╣рд▓реЗ рд╣реА рдЙрда рдЪреБрдХрд╛ рдерд╛, рдкрд░ рдХрд╣рд╛рдБ! рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ ( рдпрд╣рд╛рдВ , рдпрд╣рд╛рдВ , рдпрд╣рд╛рдВ ) рджреЗрдЦ рд░рд╣рд╛ рдерд╛ , рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЦреБрдж рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред

рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ "рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда" рд╕реЗ рд╣рдорд╛рд░рд╛ рддрд╛рддреНрдкрд░реНрдп рдЙрди рдЕрдзрд┐рдХрддрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдпрд╛ рддреЛ рджреЗрдЦреЗрдВ (рдкрдврд╝реЗрдВ), рдмреБрдХрдорд╛рд░реНрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдпрд╛ рдкреЛрд╕реНрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВрдЧреЗред

рдпрд╣ рд╕рдм рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЗрдЦреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣реИрдмрд░ рдХреЗ рдкрд╛рд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

habrahabr.ru/post[id]/


рдЬрд▓реНрджрдмрд╛рдЬреА рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рдПрдХ рд╣рдбрд╝рдкрдиреЗ рд╡рд╛рд▓рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рдзрд░рдиреЗрд╡рд╛рд▓рд╛ рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* getPublishDate(NSString *); NSString* getPostViewsCount(NSString *); NSString* getFavCount(NSString *); NSString* getCommentsCount(NSString *); NSString* removeTags(NSString *); int main(int argc, const char * argv[]) { // freopen("/Users/new/Documents/Development/HabrahabrParser/habrahabr.txt", "w", stdout); const int MAX = 200000; for(int i=1; i<=MAX; i++) { @autoreleasepool { NSString *url = [NSString stringWithFormat:@"http://habrahabr.ru/post/%d/", i]; NSURL *link = [NSURL URLWithString:url]; NSURLRequest *request = [NSURLRequest requestWithURL:link]; NSError *error = nil; NSData *post = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrPages/%d.txt", i]; [post writeToFile:path atomically:YES]; NSLog(@"[%d / %d]", i, MAX); } } return 0; } NSString* removeTags(NSString *matchString) { if(nil == matchString) return nil; NSRegularExpression *tagContent = [NSRegularExpression regularExpressionWithPattern:@">.+<" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString* resultingString; [tagContent enumerateMatchesInString:matchString options:0 range:NSMakeRange(0, [matchString length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { resultingString = [matchString substringWithRange:[result range]]; *stop = YES; }]; return [resultingString substringWithRange:NSMakeRange(1, [resultingString length] - 2)]; } NSString* getCommentsCount(NSString *html) { if(nil == html) return nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"id=\"comments_count\">.+</" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString *comments; [regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { comments = [html substringWithRange:[result range]]; *stop = YES; }]; return comments; } NSString* getFavCount(NSString *html) { if(nil == html) return nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"title=\" ,    \">.+</" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString *fav; [regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { fav = [html substringWithRange:[result range]]; *stop = YES; }]; return fav; } NSString* getPostViewsCount(NSString *html) { if(nil == html) return nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"title=\" \">.+</" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString *views; [regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { views = [html substringWithRange:[result range]]; *stop = YES; }]; return views; } NSString* getPublishDate(NSString *html) { NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"class=\"published\">.+</" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString *date; [regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { date = [html substringWithRange:[result range]]; *stop = YES; }]; return date; } 



рджреЗрдЦ рдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛:



рд╕рдм рдХреБрдЫ рдореБрдЭреЗ 17-19 рдШрдВрдЯреЗ рд▓рдЧ рдЧрдПред

рдЗрдВрдбреЗрдХреНрд╕ 1 рд╕реЗ 200,000 рддрдХ рдХреЗ рд╕рднреА рдкреЗрдЬ рдкрд▓ рдореЗрдВ (28 рд╕рд┐рддрдВрдмрд░ 2013, 20:03)
 AndrewShmigs-MacBook-Pro:TimeMachine Backup new$ du -sh HabrahabrPages/ 18G HabrahabrPages/ 


рдЫрд╛рдирдиреЗ

рдЕрдм рдЖрдкрдХреЛ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпреЗ рдРрд╕реЗ рдкрджреЛрдВ рд╡рд╛рд▓реЗ рдкреГрд╖реНрда рд╣реИрдВ рдЬреЛ рдЫрд┐рдкреЗ рд╣реБрдП рдереЗ рдпрд╛ рдЬреЛ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред
рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЬреЛ рдбреЗрдЯрд╛ рдЪрд╛рд╣рд┐рдП рдЙрд╕реЗ рдлрд╛рдбрд╝ рджреЗрдВ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ (рд╕рд╛рдЭрд╛) рдкрд░ рд▓рд┐рдЦреЗрдВред

рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:

рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкрд╛рд░реНрд╕рд░ рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* getPublishDate(NSString *); NSString* getPostViewsCount(NSString *); NSString* getFavCount(NSString *); NSString* getCommentsCount(NSString *); NSString* removeTags(NSString *); int main(int argc, const char * argv[]) { FILE *output = fopen("/Volumes/TimeMachine Backup/HabrahabrData.txt", "a"); @autoreleasepool { const int MAX = 200000; int totalOk = 0; for(int i=1; i<=MAX; i++) { @autoreleasepool { // NSString *url = [NSString stringWithFormat:@"http://habrahabr.ru/post/%d/", i]; // NSURL *link = [NSURL URLWithString:url]; // NSURLRequest *request = [NSURLRequest requestWithURL:link]; // // NSError *error = nil; // NSData *post = [NSURLConnection sendSynchronousRequest:request // returningResponse:nil // error:&error]; // NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrPages/%d.txt", i]; // [post writeToFile:path atomically:YES]; // // NSLog(@"[%d / %d]", i, MAX); NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrPages/%d.txt", i]; NSString *page = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; if(nil == page) continue; //     NSString *publishedAt = removeTags(getPublishDate(page)); NSString *viewsCount = removeTags(getPostViewsCount(page)); NSString *favsCount = removeTags(getFavCount(page)); NSString *commentsCount = removeTags(getCommentsCount(page)); if(nil == publishedAt) { [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; continue; // closed post } totalOk++; NSLog(@"%d,%@,%@,%@,%@", i, publishedAt, viewsCount, favsCount, commentsCount); fprintf(output, "%d,%s,%s,%s,%s\n", i, [publishedAt UTF8String], [viewsCount UTF8String], [favsCount UTF8String], [commentsCount UTF8String]); } } NSLog(@"totalOK: %d", totalOk); fclose(output); } return 0; } NSString* removeTags(NSString *matchString) { if(nil == matchString) return nil; NSRegularExpression *tagContent = [NSRegularExpression regularExpressionWithPattern:@">.+<" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString* resultingString; [tagContent enumerateMatchesInString:matchString options:0 range:NSMakeRange(0, [matchString length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { resultingString = [matchString substringWithRange:[result range]]; *stop = YES; }]; return [resultingString substringWithRange:NSMakeRange(1, [resultingString length] - 2)]; } NSString* getCommentsCount(NSString *html) { if(nil == html) return nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"id=\"comments_count\">.+</" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString *comments; [regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { comments = [html substringWithRange:[result range]]; *stop = YES; }]; return comments; } NSString* getFavCount(NSString *html) { if(nil == html) return nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"title=\" ,    \">.+</" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString *fav; [regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { fav = [html substringWithRange:[result range]]; *stop = YES; }]; return fav; } NSString* getPostViewsCount(NSString *html) { if(nil == html) return nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"title=\" \">.+</" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString *views; [regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { views = [html substringWithRange:[result range]]; *stop = YES; }]; return views; } NSString* getPublishDate(NSString *html) { NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"class=\"published\">.+</" options:NSRegularExpressionCaseInsensitive error:nil]; __block NSString *date; [regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) { date = [html substringWithRange:[result range]]; *stop = YES; }]; return date; } 



рдХреБрд▓ рд▓реЗрдЦ рдЬреЛ рдЕрдм рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рд╣реИрдВ: 115468ред
рдЗрд╕ ( рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг ) рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
195428,26 19:56,13667,264,37


рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ:


рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдореИрдВ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рд╕рдВрдкреАрдбрд╝рд┐рдд рд░реВрдк рдореЗрдВ рдПрдХ рдзрд╛рд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рдЬрди рд▓рдЧрднрдЧ 4 рдЬреАрдмреА рд╣реИ)ред рдкреАрдПрдо рдХреЛ рд▓рд┐рдЦреЗрдВред

рдЕрдЧрд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдо рдХрд░реЗрдВрдЧреЗ, рд╡рд╣ рдкреНрд░рдХрд╛рд╢рди рддрд┐рдерд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╣реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд╛рдПрдЧрд╛: TT:TT.DD.MM.YYYY
рд╡рд░реНрддрдорд╛рди рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдХрд╛рд╢рди рддрд┐рдерд┐рдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
13 2006 18:23
15 05:27

рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ (рд╡рд╣рд╛рдБ рд╕рдЪрдореБрдЪ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдереЗ, рдиреБрдХрд╕рд╛рди рд╕рд╣рдиреАрдп рд╣реИрдВ):
18:23
17:44

рд╣рдорд╛рд░реЗ рдЕрдЧрд▓реЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:


рдкрд╛рд░реНрд╕рд░ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рддрд┐рдерд┐рдпрд╛рдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; FILE *output = fopen("/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt", "a"); for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; if(0 == [components count]) continue; NSString *newDateFormat = parseDate(components[1]); NSString *newFavFormat = parseFav(components[3]); if(nil == newDateFormat) { continue; } components[1] = newDateFormat; components[3] = newFavFormat; NSString *newLine = [components componentsJoinedByString:@","]; NSLog(@"%@", newLine); fprintf(output, "%s\n", [newLine UTF8String]); } } fclose(output); return 0; } NSString* parseDate(NSString *date) { NSArray *components = [date componentsSeparatedByString:@" "]; NSUInteger count = [components count]; if(5 == count || 4 == count || 6 == count) { // 0, 1, 2, 4 NSLog(@"date: %@", date); NSString *day; NSString *month = components[1]; if(6 == count) { day = components[1]; month = components[2]; } else { day = components[0]; month = components[1]; } NSString *year; if(5 == count) { year = components[2]; } else { year = @"2013"; } NSString *time = [components lastObject]; NSArray *months = @[@"", @"", @"", @"", @"", @"", @"", @"", @"", @"", @"", @""]; NSUInteger index = [months indexOfObject:month] + 1; return [NSString stringWithFormat:@"%@.%@.%@.%@", time, day, @(index), year]; } return nil; } NSString* parseFav(NSString *fav) { if([fav isEqualToString:@"(null)"]) { return @"0"; } return fav; } 



рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдЕрджреНрдпрддрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
 1,18:23.13.7.2006,(null),4,32 2,00:45.14.7.2006,(null),0,34 


рдШрдВрдЯреЗ рдФрд░ рдорд┐рдирдЯ, рджрд┐рди, рдорд╣реАрдиреЗ рдФрд░ рд╕рд╛рд▓ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ

рдиреЛрдЯ: рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ 2006 рд╕реЗ 28 рд╕рд┐рддрдВрдмрд░, 2013 рддрдХ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдкреНрд░рд╢реНрди: рджрд┐рди рдХреЗ рдХрд┐рддрдиреЗ рдШрдВрдЯреЗ рдЕрдзрд┐рдХрддрд░ рдкреЛрд╕реНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int hours[24] = {0}; for(NSString *line in lines) { NSArray *components = [line componentsSeparatedByString:@","]; NSString *time = [components[1] componentsSeparatedByString:@"."][0]; int hour = (int)[[time componentsSeparatedByString:@":"][0] integerValue]; hours[hour]++; } FILE *file = fopen("/Volumes/TimeMachine Backup/HabrahabrByOurs.txt", "a"); for(int index=0; index<24; index++) { fprintf(file, "%d, %d\n", index, hours[index]); } fclose(file); return 0; } 




рдкреНрд░рд╢реНрди: рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рддрдиреЗ рдорд┐рдирдЯ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int mins[59] = {0}; for(NSString *line in lines) { NSArray *components = [line componentsSeparatedByString:@","]; NSString *time = [components[1] componentsSeparatedByString:@"."][0]; int min = (int)[[time componentsSeparatedByString:@":"][1] integerValue]; mins[min]++; } FILE *file = fopen("/Volumes/TimeMachine Backup/HabrahabrByOurs.txt", "a"); for(int index=0; index<60; index++) { fprintf(file, "%d, %d\n", index, mins[index]); } fclose(file); return 0; } 




рдкреНрд░рд╢реНрди: рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреЛрд╕реНрдЯ рдХрд┐рддрдиреЗ рдШрдВрдЯреЗ рдФрд░ рдорд┐рдирдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
//
// рдореЗрди
// рд╣реИрдмреНрд░рд╛рд╣рдмрд░рдкрд░реНрд╕рд░
//
// рдПрдВрдбреНрд░рдпреВрд╢рдореАрдЧ рджреНрд╡рд╛рд░рд╛ 9/27/13 рдХреЛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред
// рдХреЙрдкреАрд░рд╛рдЗрдЯ ┬й 2013 рдПрдВрдбреНрд░рдпреВрд╢рд┐рдЧред рд╕рднреА рдЕрдзрд┐рдХрд╛рд░ рд╕реБрд░рдХреНрд╖рд┐рддред
//

#import <Foundation / Foundation.h>

int main (int argc, const char * argv [])
{

NSString * path = [NSString stringWithFormat: @ "/ Volumes / TimeMachine Backup / HabrahabrDataParsedDate.txt"];
NSString * fileContent = [NSString stringWithContentsOfFile: path
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ: NSUTF8StringEncoding
рддреНрд░реБрдЯрд┐: рдиреАрд▓];

NSArray * рд▓рд╛рдЗрдиреЗрдВ = [рдлрд╝рд╛рдЗрд▓рд╕рдВрдкрд░реНрдХ рдШрдЯрдХрд╕реБрд╡рд┐рдзрд╛рдПрдБрдмрд┐рд░рдВрдЧ: @ "\ n"];
int time [1440] = {0};

рдХреЗ рд▓рд┐рдП (NSString * рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд▓рд╛рдЗрди) {
NSArray * рдШрдЯрдХ = [рд▓рд╛рдЗрди рдШрдЯрдХрд╕реЗрдкреИрд░реЗрдЯреЗрдбрдмрд╛рдЗрд╕реНрдЯреНрд░рд┐рдВрдЧ: @ ","];
NSString * timeStr = [рдЕрд╡рдпрд╡ [1] рдШрдЯрдХрд╕рдВрд╢реЛрдзрд┐рддрдмрдпрдВрддреНрд░: @ "ред"] [0];

int min = (int) [[timeStr ComponentsSeparatedByString: @ ":"] [1] рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд╛рдпрд░рд▓];
int hour = (int) [[timeStr ComponentsSeparatedByString: @ ":"] [0] рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд╛рдпрд░рд▓];

рд╕рдордп [рдШрдВрдЯрд╛ * 60 + рдорд┐рдирдЯ] ++;
}


рдлрд╝рд╛рдЗрд▓ * рдлрд╝рд╛рдЗрд▓ = fopen ("/ рд╡реЙрд▓реНрдпреВрдо / TimeMachine рдмреИрдХрдЕрдк / RESULTS.txt", "a");
(int index = 0; index <1440; index ++) {
fprintf (рдлрд╝рд╛рдЗрд▓, "% d,% d \ n", рд╕реВрдЪрдХрд╛рдВрдХ, рд╕рдордп [рд╕реВрдЪрдХрд╛рдВрдХ]);
}
fclose (рдлрд╝рд╛рдЗрд▓);

рд╡рд╛рдкрд╕реА 0;
}



рдкреНрд░рд╢реНрди: рдорд╣реАрдиреЗ рдХрд╛ рдХреМрди рд╕рд╛ рджрд┐рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдкрджреЛрдВ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int days[31] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; int day = (int)[datetime[1] integerValue]; days[day]++; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=1; i<32; i++) { fprintf(output, "%d,%d\n", i, days[i]); } fclose(output); return 0; } 




рдкреНрд░рд╢реНрди: рдХрд┐рд╕ рдорд╣реАрдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрдж рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int months[31] = {0}; for(NSString *line in lines) { NSArray *components = [line componentsSeparatedByString:@","]; NSString *month = [components[1] componentsSeparatedByString:@"."][2]; months[(int)[month integerValue]]++; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); for(int index=1; index<13; index++) { fprintf(file, "%d, %d\n", index, months[index]); } fclose(file); return 0; } 




рдкреНрд░рд╢реНрди: рдХрд┐рд╕ рд╡рд░реНрд╖ рдореЗрдВ рдкрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдИ рдереА?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int years[2020] = {0}; for(NSString *line in lines) { NSArray *components = [line componentsSeparatedByString:@","]; NSString *year = [components[1] componentsSeparatedByString:@"."][3]; years[(int)[year integerValue]]++; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); for(int index=2005; index<2014; index++) { fprintf(file, "%d, %d\n", index, years[index]); } fclose(file); return 0; } 




рджреГрд╢реНрдп

рдпрд╣рд╛рдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдХ рд▓реЗрдЦ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рд╕реЗ рдкрд╣рд▓реЗ 63,310 рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рд▓реЗрдЦреЛрдВ рдХреЗ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд░реНрдЬ рдХреА рдЧрдИ рд╣реИред

рдкреНрд░рд╢реНрди: рдПрдХ рдкреЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдХреЗ, рдореИрдВ рдХрд┐рд╕ рдорд┐рдирдЯ рдкрд░ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int mins[60] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *views = parts[2]; if([views isEqualToString:@"(null)"]) continue; int viewsCount = (int)[views integerValue]; int min = (int)[[[parts[1] componentsSeparatedByString:@"."][0] componentsSeparatedByString:@":"][1] integerValue]; mins[min]+=viewsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 0; int end = 60; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, mins[index]); } fclose(file); return 0; } 




рдФрд╕рдд рдореВрд▓реНрдп:
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int mins[60] = {0}; int minsCount[60] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; // int hour = (int)[[datetime[0] componentsSeparatedByString:@":"][0] integerValue]; int min = (int)[[datetime[0] componentsSeparatedByString:@":"][1] integerValue]; // int day = (int)[datetime[1] integerValue]; // int month = (int)[datetime[2] integerValue]; // int year = (int)[datetime[3] integerValue]; if([components[2] isEqualToString:@"(null)"]) continue; int viewsCount = (int)[components[2] integerValue]; mins[min]+=viewsCount; minsCount[min]++; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=0; i<60; i++) { fprintf(output, "%d,%f\n", i, 1.0f * mins[i] / minsCount[i]); } fclose(output); return 0; } 




рдкреНрд░рд╢реНрди: рдХрд┐рддрдиреЗ рдШрдВрдЯреЗ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рддрдХ рдкрд╣реБрдБрдЪ рдЧрдпрд╛ рд╣реИ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int hours[60] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *views = parts[2]; if([views isEqualToString:@"(null)"]) continue; int viewsCount = (int)[views integerValue]; int hour = (int)[[[parts[1] componentsSeparatedByString:@"."][0] componentsSeparatedByString:@":"][0] integerValue]; hours[hour]+=viewsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 0; int end = 60; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, hours[index]); } fclose(file); return 0; } 




рдФрд╕рдд рдореВрд▓реНрдп:
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; const int MAX = 24; int mins[MAX] = {0}; int minsCount[MAX] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; int hour = (int)[[datetime[0] componentsSeparatedByString:@":"][0] integerValue]; // int min = (int)[[datetime[0] componentsSeparatedByString:@":"][1] integerValue]; // int day = (int)[datetime[1] integerValue]; // int month = (int)[datetime[2] integerValue]; // int year = (int)[datetime[3] integerValue]; if([components[2] isEqualToString:@"(null)"]) continue; int viewsCount = (int)[components[2] integerValue]; mins[hour]+=viewsCount; minsCount[hour]++; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=0; i<MAX; i++) { fprintf(output, "%d,%f\n", i, 1.0f * mins[i] / minsCount[i]); } fclose(output); return 0; } 




рдкреНрд░рд╢реНрди: рдорд╣реАрдиреЗ рдХреЗ рдХрд┐рд╕ рджрд┐рди рдкрд░ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int days[31] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; int day = (int)[datetime[1] integerValue]; if([components[2] isEqualToString:@"(null)"]) continue; int viewsCount = (int)[components[2] integerValue]; days[day]+=viewsCount; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=1; i<32; i++) { fprintf(output, "%d,%d\n", i, days[i]); } fclose(output); return 0; } 




рдФрд╕рдд рдореВрд▓реНрдп:
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; const int MAX = 32; const int MIN = 1; int mins[MAX] = {0}; int minsCount[MAX] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; // int hour = (int)[[datetime[0] componentsSeparatedByString:@":"][0] integerValue]; // int min = (int)[[datetime[0] componentsSeparatedByString:@":"][1] integerValue]; int day = (int)[datetime[1] integerValue]; // int month = (int)[datetime[2] integerValue]; // int year = (int)[datetime[3] integerValue]; if([components[2] isEqualToString:@"(null)"]) continue; int viewsCount = (int)[components[2] integerValue]; mins[day]+=viewsCount; minsCount[day]++; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=MIN; i<MAX; i++) { fprintf(output, "%d,%f\n", i, 1.0f * mins[i] / minsCount[i]); } fclose(output); return 0; } 




рдкрд╕рдВрджреАрджрд╛

рдкреНрд░рд╢реНрди: рдкреНрд░рдХрд╛рд╢рд┐рдд рдкреЛрд╕реНрдЯреНрд╕ рдХрд┐рд╕ рд╕рдордп рдЕрдкрдиреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЛ рд╕рдмрд╕реЗ рдкрд╕рдВрджреАрджрд╛ рдмрдирд╛рддреА рд╣реИрдВ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int mins[60] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *favs = parts[3]; int favsCount = (int)[favs integerValue]; int min = (int)[[[parts[1] componentsSeparatedByString:@"."][0] componentsSeparatedByString:@":"][1] integerValue]; mins[min]+=favsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 0; int end = 60; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, mins[index]); } fclose(file); return 0; } 




рдФрд╕рдд рдореВрд▓реНрдп:
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; const int MAX = 60; const int MIN = 0; int mins[MAX] = {0}; int minsCount[MAX] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; // int hour = (int)[[datetime[0] componentsSeparatedByString:@":"][0] integerValue]; int min = (int)[[datetime[0] componentsSeparatedByString:@":"][1] integerValue]; // int day = (int)[datetime[1] integerValue]; // int month = (int)[datetime[2] integerValue]; // int year = (int)[datetime[3] integerValue]; // if([components[2] isEqualToString:@"(null)"]) continue; // int viewsCount = (int)[components[2] integerValue]; int favsCount = (int)[components[3] integerValue]; mins[min]+=favsCount; minsCount[min]++; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=MIN; i<MAX; i++) { fprintf(output, "%d,%f\n", i, 1.0f * mins[i] / minsCount[i]); } fclose(output); return 0; } 




рдкреНрд░рд╢реНрди: рдХрд┐рд╕ рд╕рдордп рдкреЛрд╕реНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рдЕрдкрдиреЗ рд▓реЗрдЦрдХ рдХреЛ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int hours[24] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *favs = parts[3]; int favsCount = (int)[favs integerValue]; int hour = (int)[[[parts[1] componentsSeparatedByString:@"."][0] componentsSeparatedByString:@":"][0] integerValue]; hours[hour]+=favsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 0; int end = 24; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, hours[index]); } fclose(file); return 0; } 




рдФрд╕рдд рдореВрд▓реНрдп:
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; const int MAX = 24; const int MIN = 0; int mins[MAX] = {0}; int minsCount[MAX] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; int hour = (int)[[datetime[0] componentsSeparatedByString:@":"][0] integerValue]; // int min = (int)[[datetime[0] componentsSeparatedByString:@":"][1] integerValue]; // int day = (int)[datetime[1] integerValue]; // int month = (int)[datetime[2] integerValue]; // int year = (int)[datetime[3] integerValue]; // if([components[2] isEqualToString:@"(null)"]) continue; // int viewsCount = (int)[components[2] integerValue]; int favsCount = (int)[components[3] integerValue]; mins[hour]+=favsCount; minsCount[hour]++; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=MIN; i<MAX; i++) { fprintf(output, "%d,%f\n", i, 1.0f * mins[i] / minsCount[i]); } fclose(output); return 0; } 




рдкреНрд░рд╢реНрди: рдорд╛рд╣ рдХреЗ рдХрд┐рд╕ рджрд┐рди рд▓реЗрдЦрдХ рдХреЗ рдкрд╕рдВрджреАрджрд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рдЕрдзрд┐рдХрддрдо рдЬреЛрдбрд╝ рджреЗрдЧрд╛?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int days[31] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; int day = (int)[datetime[1] integerValue]; int favsCount = (int)[components[3] integerValue]; days[day]+=favsCount; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=1; i<32; i++) { fprintf(output, "%d,%d\n", i, days[i]); } fclose(output); return 0; } 




рдФрд╕рдд рдореВрд▓реНрдп:
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; const int MAX = 32; const int MIN = 1; int mins[MAX] = {0}; int minsCount[MAX] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; // int hour = (int)[[datetime[0] componentsSeparatedByString:@":"][0] integerValue]; // int min = (int)[[datetime[0] componentsSeparatedByString:@":"][1] integerValue]; int day = (int)[datetime[1] integerValue]; // int month = (int)[datetime[2] integerValue]; // int year = (int)[datetime[3] integerValue]; // if([components[2] isEqualToString:@"(null)"]) continue; // int viewsCount = (int)[components[2] integerValue]; int favsCount = (int)[components[3] integerValue]; mins[day]+=favsCount; minsCount[day]++; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=MIN; i<MAX; i++) { fprintf(output, "%d,%f\n", i, 1.0f * mins[i] / minsCount[i]); } fclose(output); return 0; } 




рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ 2013 рдХреЗ рд▓рд┐рдП:


рдкреНрд░рд╢реНрди: рдХрд┐рд╕ рдорд╣реАрдиреЗ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рди рдкреЛрд╕реНрдЯ рд▓реЗрдЦрдХ рдХреЛ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓рд╛рдПрдЧрд╛?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int months[12] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *favs = parts[3]; int favsCount = (int)[favs integerValue]; int month = (int)[[parts[1] componentsSeparatedByString:@"."][2] integerValue]; months[month]+=favsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 1; int end = 13; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, months[index]); } fclose(file); return 0; } 


Habr рдкрд░, рджрд┐рд╕рдВрдмрд░ рд╕реАрдзреЗ рдЦреБрд╢реА рдФрд░ рджрдпрд╛ рдХреЗ рдХреБрдЫ рдорд╣реАрдиреЗ рд╣реИ :)


рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдкреНрд░рд╢реНрди: рд▓реЗрдЦрдХ рдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдХрдм рдкреЛрд╕реНрдЯ рдХреА рдЬрд╛рдПрдВрдЧреА?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int mins[60] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *comments = parts[3]; int favsCount = (int)[comments integerValue]; // int mins = (int)[[parts[1] componentsSeparatedByString:@"."][2] integerValue]; int min = (int)[[[parts[1] componentsSeparatedByString:@"."][0] componentsSeparatedByString:@":"][1] integerValue]; mins[min]+=favsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 0; int end = 60; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, mins[index]); } fclose(file); return 0; } 




рдкреНрд░рд╢реНрди: рд▓реЗрдЦрдХ рдХрд╛ рдЕрдзрд┐рдХрддрдо рд╕рдордп рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдЗрд╕ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд╢рди?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int hours[24] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *comments = parts[3]; int favsCount = (int)[comments integerValue]; // int mins = (int)[[parts[1] componentsSeparatedByString:@"."][2] integerValue]; int hour = (int)[[[parts[1] componentsSeparatedByString:@"."][0] componentsSeparatedByString:@":"][0] integerValue]; hours[hour]+=favsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 0; int end = 24; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, hours[index]); } fclose(file); return 0; } 




рдФрд╕рдд рдорд╛рди:


рдХреЗрд╡рд▓ 2013 рдХреЗ рд▓рд┐рдП:


рдкреНрд░рд╢реНрди: рдорд╣реАрдиреЗ рдХреЗ рдХрд┐рд╕ рджрд┐рди рдкреЛрд╕реНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рд▓реЗрдЦрдХ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд▓рд╛рдПрдЧрд╛?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int days[31] = {0}; for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; int day = (int)[datetime[1] integerValue]; int comments = (int)[components[4] integerValue]; days[day]+=comments; } } FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(int i=1; i<32; i++) { fprintf(output, "%d,%d\n", i, days[i]); } fclose(output); return 0; } 




рдкреНрд░рд╢реНрди: рдХрд┐рд╕ рдорд╣реАрдиреЗ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рди рд▓реЗрдЦрдХ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд▓рд╛рдПрдЧрд╛?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int months[12] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *comments = parts[3]; int commentsCount = (int)[comments integerValue]; int month = (int)[[parts[1] componentsSeparatedByString:@"."][2] integerValue]; // int hour = (int)[[[parts[1] componentsSeparatedByString:@"."][0] componentsSeparatedByString:@":"][0] integerValue]; months[month]+=commentsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 1; int end = 13; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, months[index]); } fclose(file); return 0; } 




рдкреНрд░рд╢реНрди: рдХрд┐рд╕ рд╡рд░реНрд╖ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рди рд▓реЗрдЦрдХ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд▓рд╛рдПрдЧрд╛?
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedDate.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; int years[2020] = {0}; for(NSString *line in lines) { NSArray *parts = [line componentsSeparatedByString:@","]; NSString *comments = parts[3]; int commentsCount = (int)[comments integerValue]; int year = (int)[[parts[1] componentsSeparatedByString:@"."][3] integerValue]; // int hour = (int)[[[parts[1] componentsSeparatedByString:@"."][0] componentsSeparatedByString:@":"][0] integerValue]; years[year]+=commentsCount; } FILE *file = fopen("/Volumes/TimeMachine Backup/RESULTS.txt", "a"); int start = 2005; int end = 2014; for(int index=start; index<end; index++) { fprintf(file, "%d, %d\n", index, years[index]); } fclose(file); return 0; } 




рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛

рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; const int MAX = 24; const int MIN = 0; int mins[MAX] = {0}; int minsCount[MAX] = {0}; FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; // int hour = (int)[[datetime[0] componentsSeparatedByString:@":"][0] integerValue]; // int min = (int)[[datetime[0] componentsSeparatedByString:@":"][1] integerValue]; // int day = (int)[datetime[1] integerValue]; // int month = (int)[datetime[2] integerValue]; // int year = (int)[datetime[3] integerValue]; // if(year != 2013) continue; if([components[2] isEqualToString:@"(null)"]) continue; int viewsCount = (int)[components[2] integerValue]; // int favsCount = (int)[components[3] integerValue]; int comments = (int)[components[4] integerValue]; // mins[hour]+=comments; // minsCount[hour]++; fprintf(output, "%d,%d\n", viewsCount, comments); } } // FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); // for(int i=MIN; i<MAX; i++) { // fprintf(output, "%d,%f\n", i, 1.0f * mins[i] / minsCount[i]); // } fclose(output); return 0; } 




рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрдзрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛

рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд░реЛрдд рдХреЛрдб
 // // main.m // HabrahabrParser // // Created by AndrewShmig on 9/27/13. // Copyright (c) 2013 AndrewShmig. All rights reserved. // #import <Foundation/Foundation.h> NSString* parseDate(NSString *); NSString* parseFav(NSString *); int main(int argc, const char * argv[]) { NSString *path = [NSString stringWithFormat:@"/Volumes/TimeMachine Backup/HabrahabrDataParsedData.txt"]; NSString *fileContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; NSArray *lines = [fileContent componentsSeparatedByString:@"\n"]; const int MAX = 24; const int MIN = 0; int mins[MAX] = {0}; int minsCount[MAX] = {0}; FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); for(NSString *line in lines) { @autoreleasepool { NSMutableArray *components = [[line componentsSeparatedByString:@","] mutableCopy]; NSArray *datetime = [components[1] componentsSeparatedByString:@"."]; // int hour = (int)[[datetime[0] componentsSeparatedByString:@":"][0] integerValue]; // int min = (int)[[datetime[0] componentsSeparatedByString:@":"][1] integerValue]; // int day = (int)[datetime[1] integerValue]; // int month = (int)[datetime[2] integerValue]; // int year = (int)[datetime[3] integerValue]; // if(year != 2013) continue; // if([components[2] isEqualToString:@"(null)"]) continue; // int viewsCount = (int)[components[2] integerValue]; int favsCount = (int)[components[3] integerValue]; int comments = (int)[components[4] integerValue]; // mins[hour]+=comments; // minsCount[hour]++; fprintf(output, "%d,%d\n", favsCount, comments); } } // FILE *output = fopen("/Volumes/TimeMachine Backup/RESULT.txt", "a"); // for(int i=MIN; i<MAX; i++) { // fprintf(output, "%d,%f\n", i, 1.0f * mins[i] / minsCount[i]); // } fclose(output); return 0; } 



MATLAB рд╕реНрд░реЛрдд рдХреЛрдб
 fid = fopen('/Volumes/TimeMachine Backup/RESULT.txt', 'r'); while ~feof(fid) arr = fscanf(fid,'%d,%d',2); favs = arr(1); comments = arr(2); hold on; plot(comments, favs, '*b') end fclose(fid); 


рдореИрдВ рдЗрд╕ рдЪрд╛рд░реНрдЯ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ, рд▓рд┐рдмреНрд░реЗ рдСрдлрд┐рд╕ рдиреЗ рдЗрддрдиреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреБрдк рд╣реВрдВред

рдПрдХреНрд╕ рдЕрдХреНрд╖ рдкрд░ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдФрд░ рд╡рд╛рдИ рдЕрдХреНрд╖ рдкрд░ - рдкрд╕рдВрджреАрджрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛

рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХрд╛ рдЦреЗрд▓

рдЗрди рдЧреНрд░рд╛рдлреЛрдВ рдореЗрдВ рдХреМрди рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдкрддрд╛ рдХреМрди рд▓рдЧрд╛рдПрдЧрд╛?




рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдмрдбрд╝реА рдЕрдзреАрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╣рдо рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ iOS рдФрд░ Android рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕рд╛ рдХрд░рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреА ...

Source: https://habr.com/ru/post/In195552/


All Articles