Size: a a a

Clojure — русскоговорящее сообщество

2020 February 26

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Tim Plotnikov
Реляционная алгебра здесь не при чем)
Мне нужна функция вида
getUsersToNotify(now: Date, allUsers: [User]) -> [User]
какая логика должны быть в этой функции?
например, всех ли юзеров надо брать за раз - а вдруг их много?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
пока нотифаишь - список устаревает и надо все пересчитывать.
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Maxim Penzin
какая логика должны быть в этой функции?
например, всех ли юзеров надо брать за раз - а вдруг их много?
Да, я посмотрю как это будет лучше оформить)
У меня просто в голове была достаточно простая ментальная модель:
1. Взять текущее время
2. Отфильтровать всех юзеров на основе текущего времени и их настроек и выбрать только подходящих. (Если пользователей много, то можно запустить н потоков, типа ты бери с 1-100, ты бери 101-20 итд)
3. Запустить джобы на отправку нотификаций. По сути, отправка это вызов апи и запись результата в базу
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Tim Plotnikov
Да, я посмотрю как это будет лучше оформить)
У меня просто в голове была достаточно простая ментальная модель:
1. Взять текущее время
2. Отфильтровать всех юзеров на основе текущего времени и их настроек и выбрать только подходящих. (Если пользователей много, то можно запустить н потоков, типа ты бери с 1-100, ты бери 101-20 итд)
3. Запустить джобы на отправку нотификаций. По сути, отправка это вызов апи и запись результата в базу
насчет отфильтровать тут есть такой момент - запускаешься ведь ты не ровно тик в тик с обозначенным временем, есть какой-то временной гап судя по всему, то есть при отборе будет некий промежуток, а если запустишься два раза в этот промежуток, то начнешь спамить клиента.
Тут надо понять - это нормально или нет?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Если нормально, или это можно проконтролировать, что "уже отправил", то можно вообще не париться - запускаться почаще.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Тупо один лукап по юник индексу в базе все это обеспечивает.
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Да, временной гэп меня не сильно беспокоит. Я правда не решил что делать с ошибками отправки)
Пока у меня минимальный интервал отправки задуман 30 минут (меньший интервал по доменным правилам не имеет смысла). То есть, если отправка не получилась, я могу тут же попробовать ещё раз например через минуту, а потом перестать. По идее, ситуации а-ля «Вот я минуту назад делал переотправку из-за ошибки, а ещё через минуту уже пора отправлять normal» не должно быть)
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
еще надо решить, что делать, если нотифаилка долго не работала по какой-то причине, а потом завелась и думает что делать с прошедшими шедулями.
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Всем привет! Напоминаю, завтра состоится Clojure митап.
Последний шанс зарегистрироваться - https://www.meetup.com/Moscow-Clojure-Script-Meetup/events/268650053/
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
по скайпу туда можно зайти? :)
источник

ST

Sergey Tkachenko in Clojure — русскоговорящее сообщество
Maxim Penzin
по скайпу туда можно зайти? :)
хотелось бы, но нет)
источник
2020 February 27

ДН

Денис Нибаев in Clojure — русскоговорящее сообщество
всем привет.
задачка, подскажите
есть вектор [{"text": "123", "type": "postal"} {"text": "789" "type": "physical"}]
как оптимально достать только элемент с type="postal"
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
filter (comp #{"postal"} :type)
источник

ДН

Денис Нибаев in Clojure — русскоговорящее сообщество
Andrey Ivanov
filter (comp #{"postal"} :type)
благодарю)
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
но ключи из жсона лучше сразу в кейворды преобразовать, должен быть параметр парсера
источник

ДН

Денис Нибаев in Clojure — русскоговорящее сообщество
Andrey Ivanov
но ключи из жсона лучше сразу в кейворды преобразовать, должен быть параметр парсера
да, я пример с json взял, а так объект с кейвордами
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Andrey Ivanov
но ключи из жсона лучше сразу в кейворды преобразовать, должен быть параметр парсера
вот это, кстати, интересный момент - а всегда-ли?
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
нет конечно. но в приведенном примере скорее всего да
источник

AK

Azamat Kalimoulline in Clojure — русскоговорящее сообщество
Maxim Penzin
вот это, кстати, интересный момент - а всегда-ли?
Ну если по ним фильтровать нужно, то надо. По кейвордам оно идёт гораздо быстрее, чем по строкам.
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Интересно, можно ли убить сервер на clojure, если посылать очень много json'ок с рандомными ключами? Или clojure подчищает неиспользуемые keyword'ы?
источник