The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"Домашнее задание на Python"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Python)
Изначальное сообщение [ Отслеживать ]

"Домашнее задание на Python"  –1 +/
Сообщение от Dimon2016 (ok) on 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

Помогите кто чем может, хотя бы с разработкой алгоритма на псевдокоде, буду очень признателен любой помощи!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Домашнее задание на Python"  +2 +/
Сообщение от Pahanivo (ok) on 27-Апр-16, 09:14 
> написать программу на Python по парсингу лога
> и вообще очень слаб в программировании, но не смотря на это
> мне все равно поставили задачу.

ты не пробовал искать работу в которой "понимаешь"? или ты решил что кто-то будет делать за тебя работу и тратить время, а ты будешь получать деньги?
нагло и тупо

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Домашнее задание на Python"  –2 +/
Сообщение от Dimon2016 (ok) on 27-Апр-16, 09:58 
>> написать программу на Python по парсингу лога
>> и вообще очень слаб в программировании, но не смотря на это
>> мне все равно поставили задачу.
> ты не пробовал искать работу в которой "понимаешь"? или ты решил что
> кто-то будет делать за тебя работу и тратить время, а ты
> будешь получать деньги?
> нагло и тупо

Понимаете, это третий этап собеседования из 4-х, первые 2 этапа я прошел довольно легко, а эту задачу они специально усложнили, видимо хотят проверить как я выкручусь из этой ситуации, разумеется я не сижу "сложа руки", изучаю Python и понимаю, что сейчас везде требуются навыки в программировании, но у меня нет знакомых, которые хорошо разбираются в программировании, поэтому прошу здесь Вас помочь, кто чем может, хотя бы объяснить логику в написании псевдокода.


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Домашнее задание на Python"  +1 +/
Сообщение от Pahanivo (ok) on 27-Апр-16, 10:28 
> а эту задачу они специально усложнили

мда, парсинг текста очень сложный


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Домашнее задание на Python"  –1 +/
Сообщение от Dimon2016 (ok) on 27-Апр-16, 10:35 
>> а эту задачу они специально усложнили
> мда, парсинг текста очень сложный

:( Понятное дело, что даже если я и попрошу кого то сделать для меня это задание (разумеется не безвозмездно), а им скажу, что это сделал я сам самостоятельно, они разумеется мне не поверят и 100% будет отказ, вот мне надо хоть как то показать им ход моих мыслей в этой непростой даже для профессионалов задаче.


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Домашнее задание на Python"  +2 +/
Сообщение от Pahanivo (ok) on 27-Апр-16, 11:51 
> вот мне надо хоть как то показать им
> ход моих мыслей в этой непростой даже для профессионалов задаче.

слово "сложный" было употреблено с нескрываемым сарказмом, вы даже этого не понимаете.
а если чего то нет, например некоторого хода мыслей вокруг некоторой темы, то как вы собираетесь это кому-то показать? как можно кому-то что-то объяснять ничего в этом не понимая? у вас не с программированием проблемы, у вас вообще логика и мировоззрения хромают на обе ноги ... весьма гнилая философия жизни.
вы даже принять свою некомпетентность не можете спокойно, а ходите по форумам и ноете. тьфу.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "Домашнее задание на Python"  +1 +/
Сообщение от Andrey Mitrofanov on 27-Апр-16, 12:01 
>>> а эту задачу они специально усложнили
> это сделал я сам самостоятельно, они разумеется мне не поверят и
> 100% будет отказ, вот мне надо хоть как то показать им
> ход моих мыслей в этой непростой даже для профессионалов задаче.

Ты им эту тему покажи -- пройдёшь под аплодисменты.  По пункту "* Уверенное владение Интернетом.".  А то ж вдруг они поисками не так уверенно владеют, как ты форумингами, -- и не найдут?!

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Домашнее задание на Python"  –1 +/
Сообщение от Dimon2016 (ok) on 27-Апр-16, 12:33 
>>>> а эту задачу они специально усложнили
>> это сделал я сам самостоятельно, они разумеется мне не поверят и
>> 100% будет отказ, вот мне надо хоть как то показать им
>> ход моих мыслей в этой непростой даже для профессионалов задаче.
> Ты им эту тему покажи -- пройдёшь под аплодисменты.  По пункту
> "* Уверенное владение Интернетом.".  А то ж вдруг они поисками
> не так уверенно владеют, как ты форумингами, -- и не найдут?!

Всем спасибо за ответы, тему закрываю.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Домашнее задание на Python"  +/
Сообщение от Pahanivo (ok) on 27-Апр-16, 13:27 
http://www.cyberforum.ru/python/thread1722035.html
надо еще на паре десятком форумов запостить - и велком в яндекс ))
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

11. "Домашнее задание на Python"  +/
Сообщение от Andrey Mitrofanov on 27-Апр-16, 13:32 
>А то ж вдруг они поисками не так уверенно владеют, как

Как я погорел, не пролистав постановку -- с backend0007.yandex.ru.
   Бежать из города -- вдруг, яндекс на меня обидится.


Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

5. "Домашнее задание на Python"  +/
Сообщение от Gluk (??) on 27-Апр-16, 10:53 
>[оверквотинг удален]
>> кто-то будет делать за тебя работу и тратить время, а ты
>> будешь получать деньги?
>> нагло и тупо
> Понимаете, это третий этап собеседования из 4-х, первые 2 этапа я прошел
> довольно легко, а эту задачу они специально усложнили, видимо хотят проверить
> как я выкручусь из этой ситуации, разумеется я не сижу "сложа
> руки", изучаю Python и понимаю, что сейчас везде требуются навыки в
> программировании, но у меня нет знакомых, которые хорошо разбираются в программировании,
> поэтому прошу здесь Вас помочь, кто чем может, хотя бы объяснить
> логику в написании псевдокода.

сейчас тебе помогут, очень может быть попросят денег,
ты устроишься на эту работу, начальство будет считать, что ты
питон знаешь (у тебя есть знакомые, кот. его знают). Вообщем нач-ву
будет пох каким образом ты сможешь выполнять его задания.
Будешь ли ты кляньчить код в инете или платить за него своё бабло.
Оч. может быть на тебя начнут наваливать именно эту работу.
А оно тебе надо?
...зарабатывать деньги а потом отдавать их за код?
Странная получится работа.
Если у тебя с программированием плохо,
то быстро ты вряд ли его освоишь.
Просто честно скажи - "Это могу, а это не могу,
если не устраивает пойду искать др. места работы"
Иначе есть варианты:
а) мизерные доходы, т.к. придётся оплачивать свою некомпетентность
б) боооольшой головняк - будешь ночи напролёт зубрить питон,
вместо того, чтоб миловать свою деваху, и здоровье надорвёшь...
А оно тебе надо???????????!!!!!!

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Домашнее задание на Python"  –1 +/
Сообщение от Dimon2016 (ok) on 27-Апр-16, 11:00 
>[оверквотинг удален]
> Странная получится работа.
> Если у тебя с программированием плохо,
> то быстро ты вряд ли его освоишь.
> Просто честно скажи - "Это могу, а это не могу,
> если не устраивает пойду искать др. места работы"
> Иначе есть варианты:
> а) мизерные доходы, т.к. придётся оплачивать свою некомпетентность
> б) боооольшой головняк - будешь ночи напролёт зубрить питон,
> вместо того, чтоб миловать свою деваху, и здоровье надорвёшь...
> А оно тебе надо???????????!!!!!!

Вероятно Вы Gluk правы.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

13. "Домашнее задание на Python"  +/
Сообщение от Nicknnn (ok) on 01-Май-16, 14:38 
О! тестовое в яндекс. Не считай перцентиль через math, им не понравится.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Домашнее задание на Python"  +/
Сообщение от Pahanivo (ok) on 01-Май-16, 16:20 
Да ТС походу обратно пошел - "свободная касса" кричать.
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру