8の1つ目:どのように注目を集めたか

こんばんは、はらちたててり!



8+ in 1:iOSおよびAndroidの新しいメッセンジャーがリリースされる前に、プレスリリースを公開する場所を調査するためにいくつかの作業を行う必要がありました。 そのような場所の1つはHabrでした。



次の質問をしました。





画像







エントリー


最初から、私はどこかで似たような記事を見たような気がしました。 見つけることができなかった、おそらく私は見た目が悪かったのでここここここ )、調査自体を実施し、可能であれば興味深い点を見つけることにしました。



「ベスト」とは、閲覧(読み取り)、ブックマークへの追加、または投稿へのコメントを行うユーザーの最大数を集めることを意味します。



すべては記事の解析から始まりました。 幸いなことに、Habrには、安全に歩いて情報を収集できる投稿識別子があります。



habrahabr.ru/post[id]/









急いで、グラバーはObjective-Cで書かれました。

グラバーのソースコード
 // // 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までのすべてのページの重量があります(2013年9月28日、20:03):

 AndrewShmigs-MacBook-Pro:TimeMachine Backup new$ du -sh HabrahabrPages/ 18G HabrahabrPages/
      
      







フィルタリング


今、あなたはすべての余分なファイルを取り除く必要があります-これらは隠された投稿があるページまたはまだ作成されていないページです。

並行して、各ページを処理し、必要なデータを「切り取り」、別のファイル(共有)に書き込むことができます。



各ブログエントリから、次の情報を受け取ります。



Objective-Cパーサーのソースコード
 // // 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 GBです)。 PMに書き込みます。



次に行うことは、出版日を単一の形式にすることです: TT:TT.DD.MM.YYYY





現在のデータでは、次の種類の発行日を満たす場合があります。

13 2006 18:23





15 05:27







簡単にするために、書式から日付を除外しました(文字通り、日付が2つあり、損失は許容できます)。

18:23





17:44







次のパーサーは2つの問題を解決します。





Objective-Cで日付を目的の形式に変換するパーサー
 // // 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年から2013年9月28日までのレコードが含まれます。



質問:ほとんどの投稿は1日のうち何時に表示されますか?

Objective-Cソースコード
 // // 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; }
      
      











質問:投稿の最大数は何分に公開されますか?

Objective-Cソースコード
 // // 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; }
      
      











質問:ほとんどの投稿は何時間と何分公開されますか?

Objective-Cソースコード
//

// main.m

// HabrahabrParser

//

// AndrewShmigが9/27/13に作成。

// Copyright©2013 AndrewShmig。 すべての権利を留保します。

//



#import <Foundation / Foundation.h>



int main(int argc、const char * argv [])

{



NSString * path = [NSString stringWithFormat:@ "/ Volumes / TimeMachine Backup / HabrahabrDataParsedDate.txt"];

NSString * fileContent = [NSString stringWithContentsOfFile:パス

エンコード:NSUTF8StringEncoding

エラー:nil];



NSArray * lines = [fileContent componentsSeparatedByString:@ "\ n"];

int time [1440] = {0};



for(NSString * line in lines){

NSArray * components = [line componentsSeparatedByString:@ "、"];

NSString * timeStr = [components [1] componentsSeparatedByString:@ "。"] [0];



int min =(int)[[timeStr componentsSeparatedByString:@ ":"] [1] integerValue];

int hour =(int)[[timeStr componentsSeparatedByString:@ ":"] [0] integerValue];



時間[時間* 60 +分] ++;

}





FILE * file = fopen( "/ Volumes / TimeMachine Backup / RESULTS.txt"、 "a");

for(int index = 0; index <1440; index ++){

fprintf(ファイル、「%d、%d \ n」、インデックス、時間[インデックス]);

}

fclose(ファイル);



0を返します。

}







質問:投稿の最大数は月の何日ですか?

Objective-Cソースコード
 // // 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; }
      
      











質問:投稿の最大数はどの月に公開されますか?

Objective-Cソースコード
 // // 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; }
      
      











質問:最も多くの投稿が発行されたのはどの年ですか?

Objective-Cソースコード
 // // 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件の記事が書かれていたことに注目する価値があります。



質問:投稿を公開することで、最大表示回数を取得できるのは何分ですか?

Objective-Cソースコード
 // // 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; }
      
      











平均値:

Objective-Cソースコード
 // // 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; }
      
      











質問:ビューの最大数に達するのは何時ですか?

Objective-Cソースコード
 // // 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; }
      
      











平均値:

Objective-Cソースコード
 // // 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; }
      
      











質問:ビューの最大数に達するのは月の何日ですか?

Objective-Cソースコード
 // // 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; }
      
      











平均値:

Objective-Cソースコード
 // // 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; }
      
      











お気に入り


質問:公開された投稿は、いつオーナーのお気に入りになりますか?

Objective-Cソースコード
 // // 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; }
      
      











平均値:

Objective-Cソースコード
 // // 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; }
      
      











質問:投稿の公開により、著者はお気に入りに追加されますか?

Objective-Cソースコード
 // // 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; }
      
      











平均値:

Objective-Cソースコード
 // // 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; }
      
      











質問:投稿の公開により、著者はお気に入りの最大数の追加を月の何日目にしますか?

Objective-Cソースコード
 // // 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; }
      
      











平均値:

Objective-Cソースコード
 // // 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年のみ:





質問:投稿者がお気に入りに追加できる最大数をもたらすのはどの月の出版ですか?

Objective-Cソースコード
 // // 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; }
      
      







ハブルでは、12月は幸福と親切さのまっすぐな月です:)





コメント


質問:投稿が最も多くのコメントを著者に投稿されるのはいつですか?

Objective-Cソースコード
 // // 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; }
      
      











質問:投稿の公開は、いつ著者がコメントの最大数をもたらすでしょうか?

Objective-Cソースコード
 // // 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年のみ:





質問:投稿の公開は、その月のどの日に著者に最大数のコメントをもたらしますか?

Objective-Cソースコード
 // // 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; }
      
      











質問:どの月に出版されると、著者に最も多くのコメントが寄せられますか?

Objective-Cソースコード
 // // 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; }
      
      











質問:著者に最も多くのコメントが寄せられるのはどの年の出版ですか?

Objective-Cソースコード
 // // 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; }
      
      











コメントの数がビューの数に依存する


Objective-c
 // // 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; }
      
      











お気に入りへの追加数のコメント数への依存


Objective-Cソースコード
 // // 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);
      
      







LibreOfficeはこのような量のデータの処理を拒否していますが、Numbersについては黙っています。



X軸-コメントの数、およびY軸-お気に入りへの追加の数



推測ゲーム


これらのグラフに何が描かれているかは誰が理解しますか?









結論として


ご清聴ありがとうございました!



私たちはiOSとAndroidで作業したことを既にお見せしたいと思いますが、残念ながら、これを行うには早すぎます...



All Articles