Домашнее задание на Python, Dimon2016, 27-Апр-16, 08:54 [смотреть все]Устраиваюсь на работу в одну компанию, так вот мне дали задание (сроки выполнения неделя) написать программу на Python по парсингу лога, будущий работодатель в курсе из моего резюме, что я не знаю Python да и вообще очень слаб в программировании, но не смотря на это мне все равно поставили задачу.Имя входного файла: input .txt Имя выходного файла: output. txt Сервис состоит из фронтенда и бекендов. Бекенды бывают нескольких типов. Для увеличения отказоустойчивости бекенды одного типа реплицированы и составляют группу реплик (далее ГР). Бекенды из одной ГР одинаковы, и для формирования выдачи фронтенду достаточно получить от¬вет хотя бы с одного бекенда из каждой ГР. Фронтенд может сделать несколько попыток обращения к бекендам ГР, пока не получит результат. У фронтенда есть три фазы обработки запроса: 1) Опрос бекендов 2) Мерджинг результатов, полученных с бэкендов 3) Отправка результатов пользователю В случае, когда фаза опроса бекендов занимает слишком много времени, фронтенд может при¬нудительно завершить опрос и перейти к фазе мерджинга результатов с неполным набором данных. В процессе работы фронтенд пишет в лог файл события, возникающие при обработке запроса. Вам нужно по данному логу событий посчитать: 1. 95-й перцентиль времени обработки запросов фронтендом 2. Найдите 10 запросов, в которых фаза отправки результатов пользователю была максимальной. В качестве ответа выдайте 10 идентификаторов запросов. 3. Для каждого бекенда, отметившегося в логе, посчитайте количество обращений к нему, коли¬чество и типы ошибок, возникших при работе с ним. 4. Посчитайте количество запросов к фронтенду на которые фронтенд не смог собрать данные со всех ГР. Формат входных данных Входной файл состоит из строчек в формате: <время события> <идентификатор запроса на фронтенд> <тип события> [<дополнительные параметры>] Разделителем полей выступает символ табуляции. Строки отсортированы по времени события — UNIX timestamp в микросекундах. Идентификатор запроса это уникальное целое число. Отфильтровав лог по записям с выбран¬ным идентификатором запроса можно узнать всё об обработке соответствующего пользовательского запроса. Типы событий: StartRequest Начало обработки запроса BackendConnect Установка tcp соединения с бекендом. Дополнительные параметры: <номер ГР> <URL запроса на бекенд> BackendRequest Отправка запроса на бекенд. Дополнительные параметры: <номер ГР> BackendOk Отметка успешного получения ответа с бекенда. Работа с ГР завершается. Дополнительные параметры: <номер ГР> BackendError Ошибка работы с бекендом. Следует после BackendConnect или BackendRequest. Дополнительные параметры: <номер ГР> <строка с текстом возникшей ошибки> StartMerge Означает конец фазы опроса бекендов и начало фазы мерджа результатов. Start SendResult Означает конец фазы мерджа и начало отправки результата пользователю. Finis hRequest Конец обработки запроса. Формат выходных данных Выведите в свободной фоме ответ на поставленные вопросы. Время обработки пользовательского запроса вычисляется как время между событиями StartRequest и FinishRequest. Подсмотреть, что такое 95-й перцентиль можно тут: ru.wikipedia.org/wiki/Квантиль Время ответа пользователю можно вычислить как разницу времени между событиями Start SendResult и FinishRequest. Бекенды, с которыми производилась работа можно узнать разобрав URL в событии BackendConnect. В качестве типа ошибки можно использовать строковое представление ошиб¬ки в событии BackendError. Запросы, на которые ответили не все ГР не имеют событий BackendOK хотя бы для одной из своих ГР. Система оценки Мы ожидаем, что решение будет оформленно на Python 2.7. Модно пользоваться любыми библиотеками с pypi, но не забудьте описать зависимости в pip-requirements.txt Также, мы будем признательны, если, при прочих равных, вы выберете pure python библиотеки себе в зависимости — нам это сильно упрощает проверку. Вобщем случае событийный лог может быть большим, программа не должна зачитывать весь лог в память. Постарайтесь оптимизировать свою программу по памяти и процессору. И приложены несколько файлов с логами, вот примерные строчки одного из них: 1390137366792361 3 BackendConnect 9 http://backend9-011.yandex.ru:1612/search? 1390137366792367 3 BackendConnect 19 http://backend19-004.yandex.ru:1247/search? 1390137366792392 2 BackendConnect 5 http://backend5-008.yandex.ru:1611/search? 1390137366792407 3 BackendConnect 16 http://backend16-014.yandex.ru:1120/search? 1390137366792410 3 BackendConnect 1 http://backend1-006.yandex.ru:1924/search? 1390137366792421 2 BackendConnect 15 http://backend15-013.yandex.ru:1334/search? 1390137366792467 3 BackendConnect 17 http://backend17-011.yandex.ru:1197/search? 1390137366792469 3 BackendConnect 6 http://backend6-004.yandex.ru:1347/search? 1390137366792480 3 BackendConnect 11 http://backend11-013.yandex.ru:1457/search? 1390137366792481 3 BackendConnect 0 http://backend0-007.yandex.ru:1080/search? 1390137366792516 3 BackendConnect 3 http://backend3-007.yandex.ru:1203/search? 1390137366792517 4 StartRequest 1390137366792524 3 BackendConnect 8 http://backend8-006.yandex.ru:1373/search? 1390137366792622 3 BackendConnect 12 http://backend12-006.yandex.ru:1028/search? 1390137366792627 3 BackendConnect 4 http://backend4-009.yandex.ru:1959/search? 1390137366792662 3 BackendConnect 10 http://backend10-013.yandex.ru:1888/search? 1390137366792731 3 BackendConnect 5 http://backend5-001.yandex.ru:1268/search? 1390137366792745 3 BackendConnect 18 http://backend18-004.yandex.ru:1605/search? 1390137366792896 3 BackendConnect 14 http://backend14-006.yandex.ru:1730/search? 1390137366794324 4 BackendConnect 13 http://backend13-006.yandex.ru:1103/search? 1390137366794346 4 BackendConnect 18 http://backend18-003.yandex.ru:1852/search? 1390137366794361 4 BackendConnect 12 http://backend12-012.yandex.ru:1910/search? 1390137366794364 4 BackendConnect 17 http://backend17-010.yandex.ru:1518/search? 1390137366794374 4 BackendConnect 19 http://backend19-011.yandex.ru:1276/search? 1390137366794379 4 BackendConnect 11 http://backend11-013.yandex.ru:1457/search? 1390137366794409 4 BackendConnect 6 http://backend6-001.yandex.ru:1590/search? 1390137366794438 4 BackendConnect 2 http://backend2-008.yandex.ru:1199/search? 1390137366794448 4 BackendConnect 7 http://backend7-005.yandex.ru:1103/search? 1390137366794461 4 BackendConnect 8 http://backend8-010.yandex.ru:1171/search? 1390137366794565 4 BackendConnect 9 http://backend9-008.yandex.ru:1060/search? 1390137366794597 4 BackendConnect 5 http://backend5-004.yandex.ru:1121/search? 1390137366794602 4 BackendConnect 4 http://backend4-007.yandex.ru:1172/search? 1390137366794628 4 BackendConnect 0 http://backend0-007.yandex.ru:1080/search? 1390137366794657 4 BackendConnect 15 http://backend15-012.yandex.ru:1776/search? 1390137366794659 4 BackendConnect 14 http://backend14-009.yandex.ru:1036/search? 1390137366794662 4 BackendConnect 16 http://backend16-008.yandex.ru:1349/search? 1390137366794694 4 BackendConnect 3 http://backend3-008.yandex.ru:1008/search? 1390137366794727 4 BackendConnect 10 http://backend10-005.yandex.ru:1086/search? 1390137366794829 4 BackendConnect 1 http://backend1-010.yandex.ru:1746/search? 1390137366797781 5 StartRequest Помогите кто чем может, хотя бы с разработкой алгоритма на псевдокоде, буду очень признателен любой помощи!
|
- Домашнее задание на Python, Pahanivo, 09:14 , 27-Апр-16 (1) +2
> написать программу на Python по парсингу лога > и вообще очень слаб в программировании, но не смотря на это > мне все равно поставили задачу.ты не пробовал искать работу в которой "понимаешь"? или ты решил что кто-то будет делать за тебя работу и тратить время, а ты будешь получать деньги? нагло и тупо
- Домашнее задание на Python, Dimon2016, 09:58 , 27-Апр-16 (2) –2
>> написать программу на Python по парсингу лога >> и вообще очень слаб в программировании, но не смотря на это >> мне все равно поставили задачу. > ты не пробовал искать работу в которой "понимаешь"? или ты решил что > кто-то будет делать за тебя работу и тратить время, а ты > будешь получать деньги? > нагло и тупоПонимаете, это третий этап собеседования из 4-х, первые 2 этапа я прошел довольно легко, а эту задачу они специально усложнили, видимо хотят проверить как я выкручусь из этой ситуации, разумеется я не сижу "сложа руки", изучаю Python и понимаю, что сейчас везде требуются навыки в программировании, но у меня нет знакомых, которые хорошо разбираются в программировании, поэтому прошу здесь Вас помочь, кто чем может, хотя бы объяснить логику в написании псевдокода.
- Домашнее задание на Python, Pahanivo, 10:28 , 27-Апр-16 (3) +1
> а эту задачу они специально усложнилимда, парсинг текста очень сложный
- Домашнее задание на Python, Dimon2016, 10:35 , 27-Апр-16 (4) –1
>> а эту задачу они специально усложнили > мда, парсинг текста очень сложный :( Понятное дело, что даже если я и попрошу кого то сделать для меня это задание (разумеется не безвозмездно), а им скажу, что это сделал я сам самостоятельно, они разумеется мне не поверят и 100% будет отказ, вот мне надо хоть как то показать им ход моих мыслей в этой непростой даже для профессионалов задаче.
- Домашнее задание на Python, Pahanivo, 11:51 , 27-Апр-16 (7) +2
> вот мне надо хоть как то показать им > ход моих мыслей в этой непростой даже для профессионалов задаче.слово "сложный" было употреблено с нескрываемым сарказмом, вы даже этого не понимаете. а если чего то нет, например некоторого хода мыслей вокруг некоторой темы, то как вы собираетесь это кому-то показать? как можно кому-то что-то объяснять ничего в этом не понимая? у вас не с программированием проблемы, у вас вообще логика и мировоззрения хромают на обе ноги ... весьма гнилая философия жизни. вы даже принять свою некомпетентность не можете спокойно, а ходите по форумам и ноете. тьфу. - Домашнее задание на Python, Andrey Mitrofanov, 12:01 , 27-Апр-16 (8) +1
>>> а эту задачу они специально усложнили > это сделал я сам самостоятельно, они разумеется мне не поверят и > 100% будет отказ, вот мне надо хоть как то показать им > ход моих мыслей в этой непростой даже для профессионалов задаче.Ты им эту тему покажи -- пройдёшь под аплодисменты. По пункту "* Уверенное владение Интернетом.". А то ж вдруг они поисками не так уверенно владеют, как ты форумингами, -- и не найдут?!
- Домашнее задание на Python, Dimon2016, 12:33 , 27-Апр-16 (9) –1
>>>> а эту задачу они специально усложнили >> это сделал я сам самостоятельно, они разумеется мне не поверят и >> 100% будет отказ, вот мне надо хоть как то показать им >> ход моих мыслей в этой непростой даже для профессионалов задаче. > Ты им эту тему покажи -- пройдёшь под аплодисменты. По пункту > "* Уверенное владение Интернетом.". А то ж вдруг они поисками > не так уверенно владеют, как ты форумингами, -- и не найдут?! Всем спасибо за ответы, тему закрываю. - Домашнее задание на Python, Pahanivo, 13:27 , 27-Апр-16 (10)
- Домашнее задание на Python, Andrey Mitrofanov, 13:32 , 27-Апр-16 (11)
>А то ж вдруг они поисками не так уверенно владеют, какКак я погорел, не пролистав постановку -- с backend0007.yandex.ru. Бежать из города -- вдруг, яндекс на меня обидится.
- Домашнее задание на Python, Gluk, 10:53 , 27-Апр-16 (5)
>[оверквотинг удален] >> кто-то будет делать за тебя работу и тратить время, а ты >> будешь получать деньги? >> нагло и тупо > Понимаете, это третий этап собеседования из 4-х, первые 2 этапа я прошел > довольно легко, а эту задачу они специально усложнили, видимо хотят проверить > как я выкручусь из этой ситуации, разумеется я не сижу "сложа > руки", изучаю Python и понимаю, что сейчас везде требуются навыки в > программировании, но у меня нет знакомых, которые хорошо разбираются в программировании, > поэтому прошу здесь Вас помочь, кто чем может, хотя бы объяснить > логику в написании псевдокода.сейчас тебе помогут, очень может быть попросят денег, ты устроишься на эту работу, начальство будет считать, что ты питон знаешь (у тебя есть знакомые, кот. его знают). Вообщем нач-ву будет пох каким образом ты сможешь выполнять его задания. Будешь ли ты кляньчить код в инете или платить за него своё бабло. Оч. может быть на тебя начнут наваливать именно эту работу. А оно тебе надо? ...зарабатывать деньги а потом отдавать их за код? Странная получится работа. Если у тебя с программированием плохо, то быстро ты вряд ли его освоишь. Просто честно скажи - "Это могу, а это не могу, если не устраивает пойду искать др. места работы" Иначе есть варианты: а) мизерные доходы, т.к. придётся оплачивать свою некомпетентность б) боооольшой головняк - будешь ночи напролёт зубрить питон, вместо того, чтоб миловать свою деваху, и здоровье надорвёшь... А оно тебе надо???????????!!!!!!
- Домашнее задание на Python, Dimon2016, 11:00 , 27-Апр-16 (6) –1
>[оверквотинг удален] > Странная получится работа. > Если у тебя с программированием плохо, > то быстро ты вряд ли его освоишь. > Просто честно скажи - "Это могу, а это не могу, > если не устраивает пойду искать др. места работы" > Иначе есть варианты: > а) мизерные доходы, т.к. придётся оплачивать свою некомпетентность > б) боооольшой головняк - будешь ночи напролёт зубрить питон, > вместо того, чтоб миловать свою деваху, и здоровье надорвёшь... > А оно тебе надо???????????!!!!!!Вероятно Вы Gluk правы.
- Домашнее задание на Python, Nicknnn, 14:38 , 01-Май-16 (13)
О! тестовое в яндекс. Не считай перцентиль через math, им не понравится.
|