Учитель zapp

Парсер логов (7)

  • 22
  • Недоступна
Теперь добавим поддержку дополнительного параметра запроса в наш QL. Дополнительный параметр будет отвечать за диапазон дат, которые нас интересуют. Пример запроса: get ip for user = "Eduard Petrovich Morozko" and date between "11.12.2013 0:00:00" and "03.01.2014 23:59:59". Ожидаемый результат: Set<
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (45)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Владимир41 уровень
12 августа, 22:39
Да-да, всё те же 3,4,11
рустам38 уровень
3 мая, 04:16
Отличная задача для отработки стримов и лямбда выражений! Сделал сначала без них, а потом с ними, разница очевидна!
Алексей41 уровень, Москва
29 апреля, 12:40
С горем пополам, с помощью комментариев, с 9-ой попытки осилил. Спасибо Вам за такие полезные комменты, ребята!
Василий41 уровень, Киев
16 апреля, 09:36
13 строк метод на парсинг входного параметра 76 строк метод execute 918 строк весь листинг LogParser
8 апреля, 04:13
об этом уже говорили но between это строго между ... мне потеря пары потыток одна из-за невнимательности
Леонид Шевченко41 уровень, Санкт-Петербург
25 апреля, 09:59
Рука/лицо!
30 апреля, 00:06
хорошо хоть не задница/ежик
Дмитрий37 уровень
1 июля, 12:11
Да, перефразирую: не включительно. Тоже пару попыток потерял на этом.
Gor Ivanov41 уровень, Москва
17 января, 19:06
Кто переведет на нормальный русский: Вызов метода execute с параметром "get ip for date = "[any_date]" and date between "[after]" and "[before]"" должен возвращать множество уникальных IP адресов, события с которых произведены в указанное время [any_date] в период между датами [after] и [before]. ??? Либо я запрашиваю между [after] и [before], либо по дате [any_date]. Но КАК может быть события с которых произведены в указанное время [any_date] в период между датами [after] и [before].
NodeOne41 уровень
3 марта, 05:30
Между первым января и тридцать первым декабря еще примерно 363 разных даты. И так каждый год. Такой запрос может быть полезен если вы, как например я, делаете подготовку листа между датами с помощью отдельного метода. Что бы не лопатить миллионы строк каждый раз, готовим список а потом парсим его по всякому.
Алексей41 уровень
3 июня, 17:40
А пример запроса можно?
NodeOne41 уровень
4 июня, 04:16
Я не сразу проигнорировал ваш вопрос. Я прочитал, вник, вспомнил и только потом, оценив ваш вопрос как троллинг, его проигнорировал.
Алексей41 уровень
4 июня, 14:41
А по сути? Если мы задаем конкретную дату, то зачем нам еще две даты "до" и "после"? Или если мы ищем любые даты между "после" и "до", то зачем еще и конкретная дата?
NodeOne41 уровень
4 июня, 15:42
К примеру, наша система - процессинг крупного банка - миллионы транзакций в сутки - в базе 50 лет работы. Делая запрос транзакции по какой то дате явно, неявно пользователь создает кэш в периоде +- год от даты его запроса и в дальнейшем если запросы находятся в интервале кэша он берет ответы из кэша а не из базы.
Алексей41 уровень
4 июня, 15:57
Это мне понятно. Но что хотели создатели этой задачи для запросов типа "get ip for date = "[any_date]" and date between "[after]" and "[before]"? Какой в этом смысл? Ведь any_date - это временная метка для события. Если я ищу что-то что произошло ровно в 7:40 вчера для чего мне еще и интервал указывать? Тут должно быть "[any_date]" OR date between... Если не нашли конкретное событие, то найти хотя бы что было в промежутке +-N минут. Логика с И мне не понятна. Сами себя перепроверяем в каком месте опечатались?
NodeOne41 уровень
5 июня, 06:07
Создатели задачи хотели, что бы мы научились реализовывать разные запросы.
Павел Х.41 уровень, Санкт-Петербург
20 декабря 2018, 03:36
Добавил опциональный кусок к регулярному выражению из прошлого шага:
String pattern = "get (?<field1>\\w+) for (?<field2>\\w+) = \"(?<value1>.*?)\"";
pattern += "( and date between \"(?<after>.*?)\" and \"(?<before>.*?)\")?";
Ну и пришлось дополнительно отфильтровать список от дат, совпадающих с after и before. Спасибо комментаторам ниже за подсказку.
Nikita Krutov41 уровень, Москва
4 декабря 2018, 08:05
613ый 3 попытки из-за дат. При этом валидатор отмечает только 3 неверных пункта.
Dmitry M.41 уровень
10 октября 2018, 07:08
Данная задача предполагает, что даты в лог пишутся крайне коряво. Зачем так делать? Если у нас единый формат записи в лог, то почему ты и даты туда одинаково не писать? Это же логично. Более-менее стандартные регулярки не дают результата (хотя работают), зато вот такая кривота валидатор устроила.
Pattern pattern = Pattern.compile("\"\\d[^\"]*\\d\"");
Александр40 уровень, Санкт-Петербург
9 октября 2018, 18:26
РАВНЫЕ ДАТЫ - ай, яй, яй.......