ááá±á·ááœáẠData Science áááºáááºážáá±á«ááºáž 100500 ááŸáááŒá®áž Data Science ááœáẠáá±áá¬áááá¹áá¶áááºáááºážáá»á¬ážá០ááœá±á¡áá»á¬ážáá¯á¶ážáááá¯ááºááẠ(ááẠáá±á«ááºáá°ážáá±á¬ááºážááá±á¬á¡áá« á¡áááºááŒá±á¬áá·áºáá°ážáááááºáž)á á€áááºáááºážáá»á¬ážá á¡áááá¡á¬ážáááºážáá»ááºááŸá¬ á
á
áºááŸááºáá±á¬á¡áá¯ááºááŸáá·áº áá¬ááŸáááá¯ááºáá±á¬ááŒá±á¬áá·áºááŒá
áºáááºá ááá¯á¡ááºáá±á¬áá¯á¶á
á¶ááŒáá·áº ááá·áºááŸááºážááŒá®áž á
á®áá¶áá¬ážáá±á¬áá±áá¬ááᯠáááºáá°áá»áŸáá±ážáááºááá¯ááºáá«á áááºáááºážááŸááœááºááŒá®áž áááá·áºááŒá¿áá¬ááᯠá
áááºááŒá±ááŸááºážááá¯ááºáá±á¬á¡áá«ááœáẠááœá²ááŒá¬ážáá»ááºáá»á¬ážáá»á¬ážá
áœá¬ ááœááºáá±á«áºáá¬áááºá
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºá áá»áœááºá¯ááºá áá²áá±á¬áºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬áž ááŒá áºáá»ááºáá²á·ááá·áº ááŒá áºáááºááŸááºáá»á¬ážááᯠá¡ááŒá±áá¶á "Data Science ááŸáá·áº ááŸá¬ážááœá¬ážááá¯ááºáááº" áá°áá±á¬ ááŸááºá á¯áá»á¬áž áááºááá¯áẠá áááºáá±áá«áááºá á¡á á áºá¡ááŸááºá¥ááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá¯á¶ááŸááºáá±áá¬áááá¹áá¶á¡áá¯ááºáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬áá«áááº- áááºážááẠá¡ááŸááºááááºááŒá áºáá»ááºáá¯á¶á áá±áá¬á á¯áá±á¬ááºážááŒááºážáá¯ááºáááºážááŒáá·áº ááá±á·á áááºááŒáá«á áá¯á·á
á á áºááŸááºáá±á¬áá±áá¬ááŒáá·áº á áááºáá¯ááºáá±á¬ááºáá±á¬á¡áá«ááœáẠáá°ááá¯á· ááŸá¬ážáááá±á¬ ááááá¯á¶ážá¡áá»ááºááŸá¬ áá»áœááºá¯ááºááá¯á·ááŸáá·áº á¡ááá¯ááºáá®áá¯á¶ážááŒá áºáá±á¬ á€áá±áá¬ááᯠá¡ááŸááºááááºá á¯áá±á¬ááºážááŒááºážááŒá áºáááºá á€áá±á¬ááºážáá«ážá á¡áááááááºážá áá¬áž
áá»áœááºá¯ááºááá¯á·ááẠáá±áá¬á á¯áá±á¬ááºážáááºá ááá·áºááŸááºážáá±ážááŸáá·áº ááŒááºáááºááẠááá¯á¡ááºáá±á¬ á¡áá»áááºá á¡áááºážá¡ááŒá áºáá»á¬ážááŸáá·áº á¡á¬ážáá¯ááºááŸá¯ááᯠá áá áºááá» áá»áŸá±á¬á·ááœááºáá«áááºá
á¡áá±ážááŒá®ážáá¯á¶ážááá±á¬á· áá«ááᯠáá¬ážáá®ážááá¯á· áá¬ááœá±áá¯ááºáááá²ááá¯áᬠááœá±ážááœá±ážááœá¬ážááŸá¬áá«á
á¡áá»áá¯ážáá»áá¯ážáá±á¬ ááá·áºááŸááºážáá»ááºáá»á¬ážá¡áá ááá·áºááŸááºážáá±ážá á¡ááœááºááŒá±á¬ááºážááŸá¯á áá±áá¬áá¯ááºáá±á¬ááºááŸá¯á á áœááºážáá±á¬ááºááá¯ááºááŸá¯ á¡ááºáá»ááºáá®áᬠá¡á ááŸááááºááá¯á· ááẠá¡áá»áááºá 80-90% ááŸáá·áº ááœá²ááŒááºážá áááºááŒá¬ááŸá¯ 10-20% ááᯠáá°ááŒááŒá®áž ááá¬áá±ážááá¯ááºáᬠáá á¹á ááºážá¡á¬ážáá¯á¶ážáá®ážáá«ážááẠááœá²ááŒááºážá áááºááŒá¬ááŸá¯á¡áá±á«áº áá®ážááá·áºá¡á¬áá¯á¶á áá¯ááºááŒáááºá
áá¯á¶ááŸááºá¥ááá¬á¡ááŒá Ạáá¬ážááŸááºážáá¯á¶ážáá»áá¯ážááŒáá·áº ááá¯ážááŸááºážáá±á¬ ááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááŒá¿áá¬ááᯠááŒáá·áºááŸá¯ááŒá®áž âááá¯ážááœá¬ážáá±á¬á¡ááŒá±á¡áá±áá»á¬ážâ áá°áááºááᯠááŒáá·áºááŒáá«á áá¯á·á
á¥ááá¬á¡áá±ááŒáá·áºá áá áºáááºá áá»áœááºá¯ááºááá¯á·ááẠáá±áá¬á á¯áá±á¬ááºážááŒááºážááŸáá·áº á¡ááá¯ááºážá¡ááá¯ááºážáá»á¬ážááᯠááŸáá¯ááºážááŸááºááŒááºážááá¯ááºáᬠáá¯ááºáááºážáá¬áááºá á¡áá¬ážáá°ááœá²ááŒá¬ážááŸá¯áá»á¬ážááᯠáá¯á¶ážáááºáá«áááº-
- Reddit subreddit ááŸá áºáá¯
- Habr á á¡ááá¯ááºážááŸá áºááá¯ááºáž
- Odnoklassniki á¡á¯ááºá á¯ááŸá áºá á¯
áá®á¡áá¯áá®á¡á á¡ááŒá±á¡áá±á¡á áá»ááºážáááºááŸá¯
áááºááá¯ááºááá¯ááœáá·áºááŒá®áž ááá°áá¬áá»á¬ážááá¯áááºáá«á ááŸááºážáá«áá áááºááẠáá¬áá®á¡áááºážáááºá ááá°áá¬áá»á¬ážááŸáá·áº á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºá¡ááœáẠáá¬áá®á¡áááºážááẠáááºáá¬ážáá«á á á¯áá±á¬ááºážááŸá¯á¡ááœáẠáá¬áá®á¡áááºážáááºááá·áºáá«á á¡áá¶ááœáẠáá¬áá®á¡áááºážáááºá¡ááœááºáž ááá·áºáá« (ááŸá áºáá»ááºááŒáŸá±á¬ááºááŒá®áž N áá¬áá®ááá·áºáá«)á
á¡áááá¡áá»ááº- á¡áá»áááºááá·áºááŸááºážáá»ááºááẠáááºáá»áŸááŒá¬áááºááᯠááá·áºááŸááºážáá»ááºáá»á¬ážááŸáá·áº ááá·áºááŸááºážáá»ááºáá»á¬ážááᯠá¡ááŒá±áá¶áá¬ážáááºá
á¡áááºáá±á¬áºááŒáá« á¡ááŒá±á¡áá±ááá¯ááºáᬠááŒá¿áá¬á¡ááœáẠá¡á±á¬ááºáá« parameters áá»á¬ážááᯠááá·áºááŸááºážááŒááºážááŒáá·áº á¡áá»áááºááá¯ááºážááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááᯠá áááºááẠááá¯á¡ááºáááº-
- áá±áá¬á¡ááœááºá¡á á¬áž áááºáá±á¬ááºááŸáááá²á á á¯áá±á¬ááºážááá¯á· áááºáá±á¬ááºááá¯á¡ááºááá² (*á¡á±á¬ááºááœááºááŒáá·áºáá«*)á
- ááŸááºáááºážáá áºáá¯á¡ááœáẠá á¯áá±á¬ááºážáá»áááºá áááºáá±á¬ááºáá²á áá¯ááááá áºáá¯ááᯠáá á¯áá±á¬ááºážááẠáááºáá±á¬ááºá á±á¬áá·áºáááá²á
- á¡ááŒá±á¡áá±á¡á¬ážáá¯á¶ážááᯠáááºáááºááŒá®áž (ááá¯ááºáá«á) á¡á¬ážáá¯á¶ážáá»ááºááœá¬ážáá±á¬á¡áá« ááŒááºáááºá áááºááá·áº áá¯ááºááá¯áá±ážááẠá ááºážá á¬ážáá«á
- áá»áœááºá¯ááºááá¯á·ááẠááœáá·áºááŒá¯áá»ááºááá¯á¡ááºááŒá®áž API ááŸáá áºááá·áº áááºáá±á¬ááºááá°áááºá¡ááœáẠá¡áá»áááºáááºááŸááºáá¬ážááŒááºážááŸááááŸáááᯠááœááºáá»ááºáá«á
- áá±áá¬ááŸá¯ááºááœá±ážááŸá¯á áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á¡ááŒá Ạá¡ááŸá¬ážá¡ááœááºážá¡áá±á¡ááœááºááᯠáááºááŸááºáá« - áááá»áá±á¬áá¯ááºáááºážáá¬áááºá¡ááœáẠá¡áá²ááŒááºáá«- ááœá²á·á ááºážáá¯á¶á á¡ááœááºááŒá±á¬ááºážááŸá¯ áááºáá»áŸááŸááááºá áááºááá·áºá¡áá¬ááŸáá·áº áá¯ááºáá°áááºážá
- á á¶ááá¯ááºáá±á¬ ááá±á¬áá»ááºá¡ááŒá¯á¡áá°ááŒáá·áº ááœááºáááºá¡ááŸá¬ážáá»á¬ážááŸáá·áº ááŒá¿áá¬áá»á¬ážááᯠááŒááºáááºáá«á
- ááá¯á¡ááºáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠá á¬ááœááºá á¬áááºážáá»á¬ážááœáẠááŸáá áááŸá á¡áá²ááŒááºáááºá ááŒá±áááºááŸá¯áá áºáá¯á¡ááœáẠáááºáá»áŸááŸáá·áº áááºáá»áŸááá¯á¡ááºáááºááᯠá¡áá²ááŒááºáá«á
á¡áá±ážááŒá®ážáá¯á¶ážá¡áá»ááºááŸá¬ á¡áá»áááºááᯠááá·áºááŸááºážááá¯ááºááẠ- "á¡ááºá¡á¬ážááŒáá·áº áá±á¬ááºááŸááºážááŒááºáž" ááœáẠá¡áá»áááºááŸáá·áº á¡á¬ážá áá¯ááºáá¯ááºááẠááá¯á¡ááºááẠ- ááá¯á·ááŸáᬠáááºá á¡á á®á¡á ááºááẠáá¯á¶áá±á¬ááºáááºááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áº áááºááẠ"áá±áá¬á á¯áá±á¬ááºážááẠá¡áá»áááºáááºáá»áŸááŒá¬áááº" áá¯ááŒá±á¬ááẠááœááºážá¡á¬ážáá±ážáá¶ááááºááŒá áºá á± - ááá¬áááœá²ááŒááºážá áááºááŒá¬ááŸá¯áá áºáá¯á¡ááœáẠááá·áºááá¯ááºááẠá¡áá»áááºáá áºáá¯áááºááŒá®áž ááŒá¿áá¬á á¡á á áºá¡ááŸááºáá±á¬ááºáá»á¬ážáá±á«áº áá°áááºá á¡áá»áááºáááºáá»áŸááœá¬ááŒá¬ážáááºááᯠááŒááºážáá¯á¶áá«á
ááᯠáá»áœááºá¯ááºááá¯á·ááẠááá¯áá²á·ááá¯á·áá±á¬ ááá·áºáááºáá»ááºáá»á¬áž ááŒá±á¬ááºážáá²ááá·áº áááá»áá±á¬ á¥ááá¬áá»á¬ážááᯠááá¯ááºááŒáá«áááºá
á¡áááá¡áá»ááº- ááá·áºááŸááºážáá»ááºááẠá¡áá¯ááºá áááºáááºááŸáá·áº ááŸá¯ááºááœá±ážááŸá¯á¡áá±á«áº áááºáá±á¬ááºááŸá¯ááŸááá±á¬ á¡áááá¡ááŒá±á¬ááºážáááºážáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŸá¯á¡áá±á«áº á¡ááŒá±áá¶áá¬ážáááºá
ááŸááºážá-á¡ááŒá±áᶠááá·áºááŸááºážáá»ááºááẠáá¯ááºáá±á¬ááºáá»ááºááá¯ááºáᬠááŒááºá ááºáá»á¬áž áá¯á¶áá¯á¶áá±á¬ááºáá±á¬áẠáá±ážáááºááŒá®áž ááŒá¿áá¬á áá®ááá¯ááºážááᯠáááááá¬áᬠááœáŸááºážááá¯ážááá¯ááºááá·áº á¡ááŒá±á¬ááºážáááºážáá»á¬ážá áœá¬ áááŸáááá·áºá¡áá« áá±á¬ááºážááœááºáá±á¬ áá»ááºážáááºááŸá¯áá áºáᯠááŒá áºáááºá ááá¯á·áá±á¬áº Data Science ááŒá¿áá¬áá»á¬ážá áœá¬ááœááºá ááá¯ááá¯á·áá±á¬á¡áá»ááºáá»á¬ážááẠá¡ááœááºáá»á¬ážááŒá¬ážáá¬ááŒá®áž ááá¯ááá¯á·áá±á¬áá»ááºážáááºááŸá¯ááŸá¬ ááá¯á¶áá±á¬ááºáá±á¬á·áá«á
Reddit á¡ááá¯ááºážá¡ááá¯ááºážáá»á¬ážááᯠááŸáá¯ááºážááŸááºááŒááºážá
á¡ááá¯ážááŸááºážáá¯á¶ážááá á¹á áá²á· á ááŒáá·áºáá¡á±á¬áẠ(áá±á¬ááºááá¯ááºážááŸá¬ ááœááºáá¬áá²á·á¡ááá¯ááºáž)á áá±áá¯áá»á¡á¬ážááŒáá·áºá áá¯á¶ážáááá¯ážáá¬ážá á±áááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááœáẠá á¶ááŒáá®ážáá«ážááá á¹á áá áºáá¯ááŸááááºá áá»áœááºá¯ááºááá¯á·áááŸá¯ááºááœá±ážááŸá¯á á¬áááºážááᯠá á áºáá±ážááŒáá·áºááŒáá«á áá¯á·á
- áááºáááºáá±á¬á ááŸááºážáááºážááŒá®áž ááŸááºáááºážáááºáá¬ážáá±á¬ API áá áºáá¯ááŸááááºá
- áááºážááẠá¡ááœááºááá¯ážááŸááºážááŒá®áž á¡áá±ážá¡ááŒá®ážáá¯á¶ážááŸá¬á ááá¯áááºáá áºáá¯ááᯠá¡ááá¯á¡áá»á±á¬ááºáááŸááááºááŒá áºáááºá
- ááŸááá«áááº
python wrapper - á¥ááá¬áá»á¬ážá áœá¬ááŒáá·áºá - reddit ááœáẠáá±áá¬ááœá²ááŒááºážá
áááºááŒá¬ááŒá®áž á
á¯áá±á¬ááºážááá·áº á¡ááá¯ááºážá¡ááá¯ááºáž (python wrapper á¡áá¯á¶ážááŒá¯áá¯á¶ááᯠááŸááºážááŒáá¬ážááá·áº YouTube áá®áá®ááá¯áá»á¬ážááœááºáááº)
á¥ááá¬á¡á¬ážááŒááºá· . - áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±á¬áááºážáááºážáá»á¬ážááẠAPI ááœáẠááŒá áºááá¯ááºááŒá±á¡ááŸááá¯á¶ážááŒá áºáááºá ááá¯á·á¡ááŒááºá áá¯ááºááẠáá»á áºáá»á áºáá»á áºáá»á áºááŸáááŒá®áž ááá·áºááŸááºážáá¯á¶áá±á«áºáááºá á¡á±á¬ááºááœáẠááá¯á·á áºáá áºáá¯áá±á«áºááŸá ááŸááºáá»ááºáá»á¬ážááᯠá á¯áá±á¬ááºážááá·áº áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á á¥ááá¬áá áºáá¯ááŒá áºáááºá
def get_comments(submission_id):
reddit = Reddit(check_for_updates=False, user_agent=AGENT)
submission = reddit.submission(id=submission_id)
more_comments = submission.comments.replace_more()
if more_comments:
skipped_comments = sum(x.count for x in more_comments)
logger.debug('Skipped %d MoreComments (%d comments)',
len(more_comments), skipped_comments)
return submission.comments.list()
ááŸáá°ážáá°áááºá
á€á¡áá¬ááẠá¡áá±á¬ááºážáá¯á¶ážá¡ááŒá±á¡áá±ááŒá áºáá±á¬áºááŒá¬ážá áááºááœá±á·ááá០á¡áá±ážááŒá®ážáá±á¬á¡áá»ááºáá»á¬ážá áœá¬ááᯠááá·áºááœááºážá ááºážá á¬ážááẠááá¯ááºáááºáá«áá±ážáááºá
- API ááá·áºáááºáá»ááºáá»á¬áž - áá»áœááºá¯ááºááá¯á·ááẠáá±áá¬á¡ááœá²áá»á¬áž (áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŒá¬ážááœáẠá¡áááºá ááºááŒááºáž)á
- á á¯áá±á¬ááºážáá»ááẠ- ááŒá®ážááŒáá·áºá á¯á¶áá±á¬ááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááŸáá·áºááŸáá¯ááºážááŸááºááŸá¯á¡ááœááºá áááºááẠááá·áºáá°á subreddit ááá¯ááŒááºáááºážááœá¬ážáá¬áááºá¡ááœáẠáááá¬áááºááŸá¬ážáá±á¬á¡áá»áááºááᯠáááºáá¬ážááááºááŒá áºáááºá
- áá±á¬á·ááºááẠáá¬áá¬áá±á«áºááœáẠá¡áá¯ááºáá¯ááºááá«áááº- áááºááẠáááºážááᯠááá·áºáááºááºáá±á¬á·áá±á«áºááœááºáᬠáááºáááºááá¯ááºááŒá®ážá ááá·áºáá»á±á¬ááá¯ážá¡áááºáá²ááœáẠááá·áºáᬠááá·áºáá¯ááºáááºážááᯠáá¯ááºáá±á¬ááºááẠáááŒá áºááá¯ááºáá«á ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááẠVPS ááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºáá²á·áááºá áááá¯ááá¯ážááŸááºážáá¯áẠhabrahabr10 ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áááºááẠáá¯ááºáá»á ááááºá áá±á¬ááºááẠ10% ááᯠáááºáá¬á á±ááá¯ááºáááºá
- á¡áá»áá¯á·áá±á¬áá±áá¬áá»á¬ážá áá¯ááºááá¯ááºážááá¯ááºáá¬áááºááŸááºážááá®ááá¯ááºááŸá¯ (áááºážááá¯á·ááᯠá á®áá¶ááá·áºááœá²áá°áá»á¬ážááŸááŒááºááá¯ááºááẠááá¯á·ááá¯áẠá á¯áá±á¬ááºážáááºá¡ááœááºáááºáá²áááº) - á€á¡áá»ááºááᯠááá·áºááœááºážá ááºážá á¬ážááááºááŒá áºááŒá®áž áá°á¡áá áá±áá¬á¡á¬ážáá¯á¶ážááᯠáá¯á¶áá±á¬ááºáá±á¬á¡áá»áááºá¡ááœááºáž á á¯áá±á¬ááºážááááá¯ááºáá«á
- ááœááºáááºá¡ááŸá¬ážá¡ááœááºážáá»á¬áž- ááœááºáááºáá»áááºáááºááŒááºážááẠáá¬áá»ááºááŸá¯áá áºáá¯ááŒá áºáááºá
- áááºážááẠááŸááºáááºáá±á¬ á¡áá»ááºá¡áááºááŒá áºááẠ- áááºážááẠáááºááá·áºá¡áá«á០áááá·áºááŸááºážáá«á
áá¯ááºáá«áááº, ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœááºá€ nuances áá»á¬ážááá·áºááœááºážáááºááá¯á¡ááºáá«áááºá áááá»áá±á¬áá¬áá®/áááºáá»á¬ážááẠá¡áá¬ážáá°á¡áá¯ááºáá»á¬ážááœááºáá¯ááºáá±á¬ááºááá·áº ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœá±á·á¡ááŒá¯á¶ ááá¯á·ááá¯áẠá¡ááœá±á·á¡ááŒá¯á¶áá±á«áºáá°áááºáá±á¬áºáááºážá á€áá±áá¬ááœáẠá¡áá¯ááºááẠá¡ááºáá»ááºáá®áá¬áááºáááºááŒá áºááŒá®áž ááŒá±ááŸááºážááẠá¡ááá¯ááá¹áá¬ááá¯ááºááŸá¯ááºááŸá¬ážááŸá¯áá»á¬ážáááá¯á¡ááºááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á·ááŒááºáááẠ- á¡áá¬á¡á¬ážáá¯á¶ážááẠá¡ááœááºáá±á¬ááºážááœááºá áœá¬ á¡áá²ááŒááºááá¯ááºááŒá®áž á á®á ááºáá¬ážááŒá®áž ááŒá®ážááŒá±á¬ááºááá¯ááºáá«áááºá
Habr ááá¹ááá»á¬ážááᯠááŸáá¯ááºážááŸááºááŒááºážá
Habr á á á¬ááœá²áá»á¬ážááŸáá·áº/ááá¯á·ááá¯áẠá¡ááá¯ááºážáá»á¬ážááᯠááŸáá¯ááºážááŸááºááŒááºážá ááá¯á áááºáááºá á¬ážá áá¬áá±á¬ááºážááŒá®áž á¡áá±ážá¡ááœá²ááá¯ááºáá±á¬ ááá á¹á áá áºáá¯ááá¯á· áááºááœá¬ážááŒáá«á áá¯á·á
áá»áœááºá¯ááºááá¯á·á ááŸá¯ááºááœá±ážááŸá¯á á¬áááºážááᯠá á áºáá±ážááŒáá·áºááŒáá«á áá¯á· - á€áá±áá¬ááœáẠá¡áá»ááºáá áºáá¯á á®ááᯠáá¬ážáááºáááºá¡ááœáẠáááºááẠá¡áá¯ááºáá áºáá¯ááᯠá¡áááºážáááºáá°ážááœááŒá®áž á ááºážáááºááŸá¯ááŒá¯áá¯ááºááá«áááºá
- ááááá±á¬á· API áá áºáá¯ááŸááááºáááºáá±ááá·áº áááŸááá«áá°ážá áá¯ááºáá²á·á áá¯ááºáá²á·á Habr ááœáẠAPI áá áºáá¯áá«ááŸááááºá ááá¯á·áá±á¬áº áááºážááᯠá¡áá¯á¶ážááŒá¯áá°áá»á¬ážáá¶ááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºááá¯ááºáá« (ááá¯á·ááá¯áẠáá¯á¶ážáá¡áá¯ááºááá¯ááºáá«)á
- ááá¯á·áá±á¬ááºááœáẠáááºááẠhtml ááᯠááœá²ááŒááºážá áááºááŒá¬ááẠá áááºááá¯ááºááẠ- "ááœááºážáá¯ááºáá±á¬ááºážááá¯ááŸá¯áá»á¬áž"á á¡áááºá¡áᬠááŸá¬ážááœá¬ážááá¯ááºááááºážá
- áááºááá¯á· ááœá²ááŒááºážá
áááºááŒá¬ááááºáááºážá á¡ááá¯ážááŸááºážáá¯á¶ážááŸáá·áº á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážáááºážáááºážááŸá¬ ID áá»á¬ážáá±á«áºááœáẠáááºáá±á¬ááºážáááºááŒá
áºááŒá®áž áááºážááẠá¡áááá±á¬ááºáá¯á¶ážááá¯ááºááŒá±á¬ááºážááŸáá·áº ááá°áá®áá±á¬ááá
á¹á
áá»á¬ážááᯠááá¯ááºááœááºááááºááŒá
áºááŒá±á¬ááºáž áááááŒá¯áá« - á€áá±áá¬ááœáẠááŸáááŒá®ážáá¬ážá¡á¬ážáá¯á¶ážááŸá ID á¡á
á
áºá¡ááŸááºáá»á¬ážá ááááºáááºážáá á¥ááá¬áá
áºáá¯ááŒá
áºáááºá
ááŸáá°ážáá°áááºáဠáá±á¬ááºážáá«ážá - áááºáááááºááœáẠHTML ááŒáá·áº áá¯ááºáá¬ážáá±á¬ áá±áá¬á¡ááŒááºážááẠáá¬áá»ááºááŸá¯áá
áºáá¯ááŒá
áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáá±á¬ááºážáá«ážáá
áºáá¯á á¡ááá·áºáááºááŸááºáá»ááºááᯠá
á¯áá±á¬ááºážááááºážáááºážááá¯áááºá áááºááẠhtml á០áááŸááºááᯠáá¯ááºááŒá²áᬠáááºážááᯠáááºáááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠáá¶áá«ááºáá
áºáá¯á¡ááŒá
ẠááááºážáááºážááẠáá¯á¶ážááŒááºáá²á·áááº-
1) int(score) ááẠá¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááᯠáá»ááá¯ááºáááº- Habre ááœáẠá¥ááá¬á á¥ááá¬á áá»ááºáž ââ5â ááœáẠá¡áá¯ááºáá áºáá¯ááŸááá±áá±á¬ááŒá±á¬áá·áºá áááºážááẠen dash ááŒá áºááŒá®ážá á¡áá¯ááºááá¹ááá¬ááá¯ááºáá² (ááá»áŸá±á¬áºááá·áºáá²á ááŸááºáá«ááá¬ážá) á¡áá»áá¯á·áá±á¬á¡áá»ááºááᯠáá»áœááºá¯ááºááẠá€áá²á·ááá¯á·ááá¯ážááœá¬ážáá±á¬ááŒááºáááºááŸá¯ááŒáá·áº parser ááᯠá¡áááºááŒááºááœááºážáá²á·ááá«áááºá
try: score_txt = post.find(class_="score").text.replace(u"â","-").replace(u"+","+") score = int(score_txt) if check_date(date): post_score += score
áááºá áœá²á á¡áá±á«ááºážááŸáá·áº á¡áá¯ááºááá¹ááá¬áá»á¬áž áá¯á¶ážááááŸáááá¯áẠ( check_date áá¯ááºáá±á¬ááºáá»ááºááœáẠá¡áááºááœááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºážá áááºážááẠááŒá áºáá»ááºáá²á·áááº)á
2) Unescaped á¡áá°ážáá¬ááºáá±á¬áẠ- áá°ááá¯á·áá¬áááá·áºáááºá áááºááŒááºáááºáá¬ážáááºááá¯áááºá
3) ááá¯á·á áºá¡áá»áá¯ážá¡á á¬ážáá±á«áº áá°áááºá ááœá²á·á ááºážáá¯á¶ ááŒá±á¬ááºážáá²áá«áááºá
4) ááá¯á·á áºá¡áá±á¬ááºážáá»á¬ážááœáẠ**áá°ážáááºážáá±á¬ááœá²á·á ááºážáá¯á¶** ááŸáááá¯ááºáá«áááºá
- á¡ááŒá±áá¶á¡á¬ážááŒáá·áºá á¡ááŸá¬ážá¡ááœááºážááŸáá·áº ááŒá áºáá±á«áºáá¬ááá¯ááºááẠááá¯á·ááá¯áẠáááŒá áºáá¬ááá¯ááºáááºáá»á¬ážááᯠááá¯ááºááœááºááŒá±ááŸááºážááááºááŒá áºááŒá®áž áááºááá·áºá¡áá¬áá»á¬áž ááŸá¬ážááœááºážááœá¬ážáááºá á¡ááŒá¬ážááœá²á·á ááºážáá¯á¶ áááºááá¯á·ááŒá áºááá¯ááºáááºááŸáá·áº áááºááá·áºáá±áá¬ááœáẠááŒá¯ááºáá»áááºááᯠáá±áá»á¬á áœá¬ ááá·áºááŸááºážááá¯ááºáááºááá¯ááºáá±á parser ááŸáá áºáá±á¬á¡ááŸá¬ážáá»á¬ážá
- ááá¯á·áá±á¬áẠá
á¬ááœá²áá»á¬ážá
áœá¬ááŒáá·áº ááœá²ááŒááºážá
áááºááŒá¬ááẠááá¯á¡ááºááŒá±á¬ááºáž áááºááá±á¬áá±á«ááºáááºá ááá¯ááºáá«á áá
áºáá¯ááœáẠááœá²ááŒááºážá
áááºááŒá¬áá«á áá¬áá® 30+ ááŒá¬ááẠ(áááºážááẠá¡áá¯ááºáá¯ááºááŒá®ážáá¬áž single-threaded parser á áá¯ááºáá±á¬ááºáá»áááºáá»áŸáá¬ááŒá
áºááŒá®ážá áááºááá·áºáá¬ážááŒá
áºáá»ááºá¡á±á¬ááºááœááºá០ááá»áá±á¬ááºáá«)á IN
ဠáá±á¬ááºážáá«ážá á€á¡áá»ááºááẠáá áºáá»áááºáá»áááºááœáẠá¡áá¬ážáá°á¡á á®á¡á á¥áºáá áºáá¯ááá¯á· áŠážáááºááœá¬ážáááº-
ááŸá¯ááºááœá±ážááŸá¯á¡ááá¯áẠá
á¯á
á¯áá±á«ááºáž á
á
áºáá±ážáááºá
á¬áááºáž-
- ááœááºáááºááŸáá·áº á¡áá¯ááºáá¯ááºááŒá®áž html ááœáẠáááºáá¬áááºáá¬ááŸáá·áº ID ááŒáá·áº ááŸá¬ááœá±ááŸá¯á
- ááœá²ááŒá¬ážáá±á¬ááœá²á·á ááºážáá¯á¶áá á¬ááœááºá á¬áááºážáá»á¬ážá
- áá¯áẠá¡ááœááºááá° ááŒá¯ááºáá»ááá¯ááºáá±á¬ áá±áá¬áá»á¬ážá áœá¬ ááŸááá«áááºá
- áá±ážááẠááá¯á¡ááºáááºá|| áá¯ááºá
- ááá¯á¡ááºáá±á¬á á¬ááœááºá á¬áááºážáá»á¬ážá áá¯ááºááá°áá¬áá»á¬ážááŸáá·áº/ááá¯á·ááá¯áẠá¡ááá¯ááºážá¡ááá¯ááºážáá»á¬áž áá»á±á¬ááºáá¯á¶ážáá±áá«áááºá
á€áá¯ááºáááºážá¡ááœáẠááá·áºááŸááºážááŒá±á¡áá»áááºááẠReddit á០áá±áá¬á á¯áá±á¬ááºážááŒááºážááẠá-á á ááá¯áá»á¬ážáááºááŒá áºáááºá
Odnoklassniki á¡á¯ááºá á¯áá»á¬ážááᯠááŸáá¯ááºážááŸááºááŒááºážá
áá±á¬áºááŒáá¬ážáá±á¬ áááºážááá¬á¡á á áááºáááºá á¬ážá áá¬á¡áá±á¬ááºážáá¯á¶ážááá á¹á ááá¯á· áááºááœá¬ážááŒáá«á áá¯á·á áá»áœááºáá±á¬á·áºá¡ááœááºááá±á¬á·á ááááá áºáá»ááºááŸá¬á á¡áá±ážá¡ááœá²áá¯á¶áááºážááá¹áá¬ááºá á¡áá±á¬áºáá±ážááᯠá¡áá±ážá¡ááœá²ááá¯á·áááºááá±ááá·áº áá¯ááºáá áºáá»á±á¬ááºážáá²á·ááá¯ážááá¯ááºáá¬áá²á· á¡á²áá®á¡ááá¯ááºážááŒá áºááá¬áá°ážááá¯áá±á¬á· á áááºáááºá á¬ážá áá¬áá«áá²á
áá»áœááºá¯ááºááá¯á·áá¡áááºá¡áá²á á áºáá±ážááŸá¯á á¬áááºážááŒáá·áº á áááºááŒá®áž áááºážááá¯á·á¡áá»á¬ážá á¯ááẠáááááŒáá·áºáááºááẠááá¯ááá¯áááºáá²áá¬áááºááᯠáááááŒá¯ááŒáá«á áá¯á·á
- API áá áºáá¯ááŸááá±á¬áºáááºáž ááá¯á¡ááºáá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž áá¯á¶ážááá®ážáá«ážáááŸááá±á
- á¡áá»áá¯á·áá±á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠáááºááẠmail ááŒáá·áºáááºáá±á¬ááºááœáá·áºáá±á¬ááºážááẠááá¯á¡ááºáááºá ááá¯ááá¯áááºááŸá¬á áááºáá±á¬ááºááœáá·áºáá±ážááŒááºážááẠáá»ááºááŒááºážááá¯ááºáá«á
- áááºážááẠá¡ááœááºá¡áááºážááŸááºáááºážáááºáá¬ážááŒááºážááŒá
áºááẠ(á¡á
ááá¯ááºážááœááºá áá¯ááŸá¬ážááŸáá·áº á¡ááºá¹áááááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááẠáá±áá¬ááá¯ááºážááœáẠáá±á¬ááœá±ážáá±ááŒá®áž áá¯á¶ážáááœá²ááœá²áá±ááẠ- áá
áºáá«áá
áºáá¶ááœáẠáááºáá
áºáá±áá¬áá¬áá¶á០áááºážááá¯á·ááá¯áá»ááºáá±á¬á¡áá¬ááᯠááá·áºááŸááºážáááºáá¬ááá¯áááº) ááá¯á·á¡ááŒááºá á¥ááá¬á áá®ááá¯ááºážááẠáá±áá¬ááá°áááºá¡ááœáẠáááá·áºáá»á±á¬áºáá«á á
áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±á¬áá¯ááºáá±á¬ááºáá»áẠ. - á á¬ááœááºá á¬áááºážááœáẠá ááºááŸááºáá áºáᯠááá¯á¡ááºáá±á¬áºáááºáž áááºážááᯠáááºááœá±á·ááœáẠááá¯á¶ážáá« - API áá¯ááºáá»á¬ážá ááŸá¯ááºááœá±ážááœá±áá®áá±á¬ ááŸá¯ááºááœá±ážááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŸáá·áºáááºááŒáá·áºáᬠáá áºáá¯áá¯ááŒá áºáááºáᯠáá»áŸá±á¬áºááá·áºááŒááºážááŸááœá²á á¡ááŒá¬áž API áá¯ááºáá»á¬ážá ááŸá¯ááºááœá±ážááŸá¯áá»á¬ážááᯠáá¬ážáááºááẠáááºážáááºážáááŸááá«á
- áá¬áááááŸááááᯠá¡ááá¯ááºážá¡ááá¯ááºážáááºážáááŸáá á¡áá»ááºá¡áááºá
á¯áá±á¬ááºážáá¬ááŸá¬ á¡áá±á¬ááºá¡áá°ááŒá
áºá
á±áá²á· áá
áºáá¯áááºážáá±á¬á¡áá»ááºá áá±ážáááºáá«áááºá
wrapper Python ááœáẠ(á¡áá¯á¶ážááŒá¯áá¯á¶ááá°áá¬áá»á¬ážá áœá¬ááá«áá²)á - ááá¯á¡ááºáá±á¬ áá±áá¬áá»á¬ážá
áœá¬ááᯠáá±á¬á·ááºáá»áá¬ážáá±á¬ááŒá±á¬áá·áº á¡áá¯ááºááŒá
áºááá¯ááºáá¯á¶áž ááœá±ážáá»ááºááŸá¯ááŸá¬ áá®áá®áá®áááºááŒá
áºáááºá
1) ááá¯ááá¯áááºááŸá¬á ááœáá·áºááŒá¯áá»ááºááẠá¡áá¯á¡áá±á¬ááºá¡áá¯á¶ážááŒá¯áá° (áááºááŒáá·áº ááŸááºáá¯á¶áááºááŒááºáž) ááŸáááá·áº ááŒá¯áá¯ááºáááºá2) ááá¯á·áá±á¬áºá Selenium ááŒáá·áº ááŸááºáááºááŒá®áž áááºááá²áá² á¡áá¯ááºá¡ááœáẠá¡á¬ááá¶áá»áẠáááŸááá« (á¡áááºážáá¯á¶áž ok.ru ááœáẠáá±áá»á¬áááº)á
3) Ok.ru áááºááá¯ááºááœáẠJavaScript á¡ááŸá¬ážáá»á¬ážáá«ááŸáááŒá®áž áá áºáá«áá áºáá¶ááœáẠáá°ážáá°ážááŒá¬ážááŒá¬ážááŸáá·áº ááœá²ááœá²á áœá¬ ááŒá¯áá°áááºáá«áááºá
4) áááºááẠpaginationá ááŒááºá ááºáá»á¬ážáááºááŒááºážá áááºááá¯á·ááá¯ááŒá¯áá¯ááºáááºááá¯á¡ááºáááºá
5) wrapper ááŸáá±ážáá±á¬ API á¡ááŸá¬ážáá»á¬ážááᯠá¥ááá¬á¡á¬ážááŒáá·áº á€áá²á·ááá¯á·áá±á¬ (á ááºážáááºáá¯ááºá¡ááá¯ááºážá¡á ) áá²á·ááá¯á· á¡áááºáááŒá±á áœá¬ ááá¯ááºááœááºááááºááŒá áºáá«áááºá
def get_comments(args, context, discussions): pause = 1 if args.extract_comments: all_comments = set() #makes sense to keep track of already processed discussions for discussion in tqdm(discussions): try: comments = get_comments_from_discussion_via_api(context, discussion) except odnoklassniki.api.OdnoklassnikiError as e: if "NOT_FOUND" in str(e): comments = set() else: print(e) bp() pass all_comments |= comments time.sleep(pause) return all_comments
á¡ááŒáá¯ááºáá¯á¶ážá¡ááŸá¬ážááŸá¬-
OdnoklassnikiError("Error(code: 'None', description: 'HTTP error', method: 'discussions.getComments', params: âŠ)â)
6) á¡áá¯á¶ážá áœááºá¡á¬ážááŒáá·áºá Selenium + API ááẠáááºááŒááºáá¯á¶ááá¬ážá¡ááŸááá¯á¶ážááœá±ážáá»ááºááŸá¯ááŸáá·áºáá°áááºá
- á¡ááŒá±á¡áá±ááᯠááááºážáááºážááŒá®áž á áá áºááᯠááŒááºáááºá áááºáááºá ááá¯ááºá áááááºáááºáž á¡ááŒá¯á¡áá°áá»á¬áž á¡áá«á¡ááẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážá áœá¬ááᯠááá¯ááºááœááºááŒá±ááŸááºážááẠááá¯á¡ááºááŒá®áž á¡ááá¯áá« á¡ááŸá¬ážáá»á¬ážááẠá áááºáá°ážáááºá¡áá±á¬áºáá±áž áááºáá²ááẠ(ááẠparser áá»á¬ážááᯠáá»áœááºážáá»ááºá áœá¬ ááá±ážáá«áá áá¯ááºáá«áááº)á
á€áá¯ááºáááºážá¡ááœáẠá¡ááŒá±á¡áá±á¡áá»áááºá¡áá« ááá·áºááŸááºážáá»ááºááẠHabr á០áá±áá¬á á¯áá±á¬ááºážááŒááºážááẠá-á á ááá¯áá»á¬ážáááºááŒá áºáááºá Habr ááá á¹á ááœáẠáá»áœááºá¯ááºááá¯á·ááẠHTML ááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááŒáá·áº ááŸá±á·áááºážáá»ááºážáááºáááºážááᯠá¡áá¯á¶ážááŒá¯áá±áá±á¬áºáááºáž OK áá¡ááŒá±á¡áá±ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá¡áá±ážááŒá®ážáá±á¬áá±áá¬áá»á¬ážááœáẠAPI ááŸáá·áº áá¯ááºáá±á¬ááºááá¯ááºáá«áááºá
ááœá±á·ááŸááá»ááºáá»á¬áž
áá»á¬ážááŒá¬ážááŸáá±á¬ áá±áá¬ááᯠá á®áá¶áá±á¬ááºááœááºáá±ážááá·áº ááá¯ááºááá¯ááºáž module áá áºáá¯á áá±á¬ááºáá¯á¶ážááẠ"áá±áá¬" ááᯠááá·áºááŸááºážááẠáááºááẠáááºáá»áŸááẠááá¯á¡ááºáá±áá«á á±á áá¯ááºáááºážáá±á¬ááºáᬠááá·áºáááºáá»ááºáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒááºážáááŒá¯áá² á¡áááºá¡ááœá±ážá¡áááẠááá·áºááŸááºážááẠáááŒá áºááá¯ááºáá±á
á¡áááºážáááºááá¯á áá¿áááá¯ááºáá¬ááŸááºá á¯áá áºáá¯ááœááºá áá»ááºááŒááºáá±á¬ááá·áºááŸááºážáááºážáá»á°áá¬áá»á¬ážááẠá¡ááºáá»ááºáá®áá¬áá¯ááºáááºážáá¬áááºáá»á¬ážá¡ááœáẠáá±á¬ááºážá áœá¬á¡áá¯ááºáá¯ááºáá±á¬áºáááºáž ááá¯ááá¯á ááºážáááºááŒá®áž áá áºáááºážá¡á¬ážááŒáá·áº "áááºáá®ážááŸá¯" ááŸáá·áº á á°ážá ááºážáá±á·áá¬ááŒááºážááŒá áºááá·áº á¥ááá¬á¡á¬ážááŒáá·áº ááá·áºááŸááºážááá¯ááºááŸá¯áááºážáá±á¬á á¡áá¬ážáá°á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážáááá°áá¬áá»á¬ážááœááºáá²á·ááá¯á· á¡áááºá¡áá²áá»á¬ážááŸááááºá á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á· ááœá±ážááœá±ážáá²á·ááŒáá«áááºá
áá¯ááºáá«áááºá áá±áá¬á á¯áá±á¬ááºážááŒááºážááẠá¡áááá¥ááá¬áá áºáá¯áá¬ááŒá áºááẠ- áááºážááẠá¡áá»á¬ážá¡á¬ážááŒáá·áº ááá¯á¶ááá¯ááºáá±á¬ááºá¡á±á¬áẠááá¯ážááŸááºážááŒá®áž áááºážááá¬á¡á ááŸá¯ááºááœá±ážáá±á¬á¡áá¯ááºááŒá áºááŒá®áž áá¬ááºáááºááẠáááŒá¬ááá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááœáẠááŸááá±áá«áááºá ááá¯á·á¡ááŒáẠááŸá¬ážááœááºážááœá¬ážááá¯ááºáááºááŸáá·áº á¡áá¯ááºáááºáá»áŸááŒá¬ááá¯ááºáááºááᯠá¡ááá¡áá»áá±á¬áºááŒááá¯ááºááá·áº ááŒá áºááá¯ááºááŒá±ááŸááá±á¬ ááœá±ážáá»ááºá áá¬á¡ááœá¬á¡áá±ážáá áºáá¯áá¯á¶ážááᯠáá»áœááºá¯ááºááá¯á·ááŒáááá¯ááºáááºááŸá¬ á€áá¯ááºáááºážáá¬áááºá¡áá±á«áº á¡ááá¡áá»ááŒá áºáááºá
áá±á¬ááºáááºá ááºážáááºááŸá¯áá»á¬ážááá«áá² á¡áá¯ááºááááá±áááá¹ááá¬áá»á¬ážááᯠááŒáá·áºááá¯ááºáá«áá Reddit ááŸáá·áº OK ááẠáááºáá°áááº- API áá áºáá¯á python wrapper ááŸááááºá ááá¯á·áá±á¬áº á¡ááŸá áºáá¬áá¡á¬ážááŒáá·áº ááœá¬ááŒá¬ážáá»ááºááŸá¬ ááŒá®ážáá¬ážáá«áááºá á€ááá·áºáááºáá»ááºáá»á¬ážááŒáá·áºá¡áá²ááŒááºáá¬ááœáẠHabr á pars áá»á¬ážááẠOK áááºááá¯ááá¯ááŸá¯ááºááœá±ážáá¯á¶áá±á«áºááẠ- ááá¯á·áá±á¬áº áááºááœá±á·ááœáẠáááºážááẠááá·áºáá»ááºáááºááŒá áºááŒá®ážá ááŒá¿áá¬áá¡ááá¯ááºážá¡áá¬áá»á¬ážááá¯ááœá²ááŒááºážá áááºááŒá¬ááẠááá¯ážááŸááºážáá±á¬á ááºážáááºááŸá¯áá»á¬ážááŒá¯áá¯ááºááŒááºážááŒáá·áº á€á¡áá¬ááẠá¡ááá¡áá»ááœá±á·ááŸáááá¯ááºáááºá
áá»áœááºá¯ááºáá¡ááœá±á·á¡ááŒá¯á¶á¡áá á¡áááá±á¬ááºáá¯á¶ážáááºážáááºážááŸá¬ ááá¬áááœá²ááŒááºážá áááºááŒá¬ááŒááºážá¡ááœáẠááá¯á¡ááºááá·áºá¡áá»áááºááᯠá¡ááŒááºážáá»ááºážááá·áºááŸááºážáááºááŸáá·áº ááá¯ážááŸááºážáá±á¬ ááááá¯á¶ážá ááºážáááºááŸá¯áá»á¬ážá á á¬ááœááºá á¬áááºážáá»á¬ážááᯠáááºááŸá¯ááŒááºážááŒá áºááẠ- áááºážááá¯á·ááẠá¡áá¯ááºáá áºáá¯áá¯á¶ážá¡ááœáẠáááá»áá±á¬ááá·áºááŸááºážáá»ááºááᯠáá±ážááá¯ááºáááºááŒá áºáááºá áá°ááŒáá¯ááºáá»á¬ážáá±á¬ áá»ááºááŒááºáá±á¬ áááºážá áá áºá¡áá "sprint" ááœáẠááŒá®ážááŒá±á¬ááºááá¯ááºáááºááᯠá¡áá²ááŒááºááá¯ááºááŒá®áž áá áºáá¯á á®á¡ááœáẠááá¯ááá¯áááá»áá±á¬ ááá·áºááŸááºážáá»ááºáá áºáᯠáá±ážááá¯ááºáááºá¡ááœáẠ"á¡áá¯ááºááá·áºáááºáá»ááºáá»á¬áž ááá·áºááŸááºážááŒááºáž" á¡ááœáẠáááºááŸááºáá áºá á±á¬áẠáááºáá®ážááẠááá·áºá¡á¬áž áá±á¬ááºážááá¯áá«áááºá áá¬áááºá
ááá¯á·ááŒá±á¬áá·áºá á¡áááá±á¬ááºáá¯á¶ážá¡ááŒááºážá¡áá¯á¶ááŸá¬ âáááºážááá¬ááá¯ááºáá±á¬â áá»áœááºážáá»ááºáá°á¡á¬áž á¡áá²ááŒááºáááºáááá±ážááá·áº ááá·áºáááºáá»ááºáá»á¬ážáá±á«áºáá°áááºá á¡áá»áááºááŸáá·áº á¡áááºážá¡ááŒá áºáá»á¬áž áááºáá»áŸááœá¬ááŒá¬ážáááºááᯠááŒáááá·áºáá áºáá¯ááŒá áºáááºá
source: www.habr.com