
Dmitry
12.08.2018
23:02:15

Artem
13.08.2018
05:35:41
Всем доброго дня. Есть n количество api к которым обращается приложение, как распаралелить эти запросы и получать данные от каждого потока сразу как только он выполнился, а не после завершения всех потоков?

Nikita
13.08.2018
05:36:08
Sidekiq

Fedor
13.08.2018
06:01:59
Или succerpunch

Google

No
13.08.2018
08:13:00
Пацаны. Такой вопрос. Никто не реализовывал юзер активити лог, который можно отдавать в апишке? В стиле: юзер добавил статью, юзер попытался проапдейтить коммент, но он не валиден, юзер удалил видео и.т.д. Вообщем нужно сохранять все экшены юзера из разряда create, update, delete и их результаты. И отдавать в апи по айдишке юзера. Первая мысль - хранить это все в базе в специальной табличке, но юзеров довольно много, поэтому не уверен, что это хорошая идея. Возможно есть какие-то другие варианты?

Артур
13.08.2018
08:14:27
Для чего эта фича нужна? Сколько времени лог должен храниться по юзеру?
Так-то можно и в редис насовывать просто.

No
13.08.2018
08:15:34
Фича нужна для менеджеров, которые хотят отслеживать всё, что делал юзер в приложении. Пока оговоренное время хранения - месяц, но из разговоров кастомеров я склоняюсь к мысли, что они попросят более длительный срок хранения
О редисе думал, но он же всё в памяти хранит

rekero
13.08.2018
08:15:44

Stanislav
13.08.2018
08:16:02
https://github.com/chaps-io/public_activity

No
13.08.2018
08:16:20

Артур
13.08.2018
08:16:30
А че делать если менеджеры попросят такой отчет, данные для которых уже были агрегированы ?

No
13.08.2018
08:19:16

Артур
13.08.2018
08:21:01
Пробовал просто загонять все в базу ? =)

No
13.08.2018
08:22:16
Нет, не пробовал ещё, пока инвестигейчу варианты ) Вариант с базой сейчас основной, но немного пугает. Активных юзеров в день около 10-15к. Допустим каждый из них сделает по 10 экшенов. Таблица будет расти сумасшедшими темпами )

Google

Смерть
13.08.2018
08:23:02
А что в этом страшного?

Артур
13.08.2018
08:23:41
Это не такой уж и большой объем, зря паришься

No
13.08.2018
08:24:03
Если аргументировано - ничего, кроме того факта, что придётся расширить объем базы в облаке. Но интуитивно кажется, что есть вариант лучше
Возможно интуиция меня в данной ситуации подводит

Артур
13.08.2018
08:24:36
Можно фичу просто не делать
И расширять ниче не придется

Смерть
13.08.2018
08:24:40
Можешь редис держать на фс в том числе

No
13.08.2018
08:25:59
Всем спасибо за помощь, если ещё идеи будут - пишите

Артур
13.08.2018
08:26:19
Ты собрал уже инфу, пора переходить к мвп

No
13.08.2018
08:26:25
Пока тогда буду думать о SQL )

Артур
13.08.2018
08:26:33
Да какие еще идеи, нужно херачить =)


Anton
13.08.2018
08:38:06
Пацаны. Такой вопрос. Никто не реализовывал юзер активити лог, который можно отдавать в апишке? В стиле: юзер добавил статью, юзер попытался проапдейтить коммент, но он не валиден, юзер удалил видео и.т.д. Вообщем нужно сохранять все экшены юзера из разряда create, update, delete и их результаты. И отдавать в апи по айдишке юзера. Первая мысль - хранить это все в базе в специальной табличке, но юзеров довольно много, поэтому не уверен, что это хорошая идея. Возможно есть какие-то другие варианты?
Делал такое, в моем случае это было просто, потому что я могу логгировать любой вызов бизнес логики в приложении. Пихал это как эвент лог в постгрес и в целом пофиг было, если будет не справляться, то стоит посмотреть на что-то что хорошо на запись, можно в кликхаус пихать, она почти для этого и годиться
Да какие еще идеи, нужно херачить =)
Ну как минимум, я бы прикинул сколько пользователей будет писать в базу и не положит ли это ее. + стоит подумать как эволюцию данных эвента поддерживать


No
13.08.2018
08:43:44

Nursultan
13.08.2018
08:43:47
всем привет. SystemStackError: stack level too deep - у меня на рабочем проекте вышла такая ошибка. рельса 4.2.5 руби 2.4.1 - на sof написали что надо либо даунгрейдить руби либо апгрейдить рельсу. по другому никак нельзя кто нибудь в курсе? чтобы делать апгрейд рельсы надо прописать все тесты?

Roman
13.08.2018
08:47:13
в каком случае выбрасывается ошибка?

Nursultan
13.08.2018
09:02:59
Сначала хотел прогнать сиды. Затем хотел войти в консоль

Смерть
13.08.2018
09:04:12
У тебя рекурсии нигде не появилось случайно?

Артур
13.08.2018
09:04:30
Появилось конечно, ты чего =)

Google

Nursultan
13.08.2018
09:20:34

Stanislav
13.08.2018
09:27:00
попробуй до 4.2.8 обновить рельсы, вроде с них поддерживает руби 2.4

Gregory Tereshko
13.08.2018
09:41:06
Всем привет. Может кто-то подскажет. Заранее благодарен
"some text <% @sdf sdf @serwe sdfw ewrwe @df %> another text" - вот есть такая строка с элементами вставок ERB.
Мне нужно получить из неё вcе instance variables, учитывая то, что они заключены в <%...%>
Пробовал что-то вроде такого:
<%\s*(@\w*)*\s*%>
Не очень работает

Антон
13.08.2018
09:59:25
А что за задача такая, если не секрет?

Gregory Tereshko
13.08.2018
10:01:56
Админ хотел динамический контент - не рендерить куски html при невыполнении условий. Условия я заключил в @vars. Вот нужно отдать ошибку, если переменную несуществующую вызвал.
ERB парсер этого не делает для инстанс варс

Igor
13.08.2018
10:04:23

Антон
13.08.2018
10:05:58
ну какбы парсить erb регекспом... ну такое

Gregory Tereshko
13.08.2018
10:07:29
Ну у меня уже не особо есть время переделывать, это такая мелкая правка пришла.
Вот и подумал, что проще регекспом

Антон
13.08.2018
10:13:21
не умею регексп
сделай два скана
.scan(/<%[\s*|(@\w*)|\s*]*%>/).first.scan(/@\w*/)

Gregory Tereshko
13.08.2018
10:13:59
Сейчас попробую

Антон
13.08.2018
10:14:15
.scan(/<%[\s*|(@\w*)|\s*]*%>/).map{|i| i.scan(/@\w*/)}.flatten
если много блоков с ерб
но я бы такое не пустил бы в мастер ?
я бы сходил в исходники ерб поискал бы код там

Gregory Tereshko
13.08.2018
10:16:41

Oleg
13.08.2018
10:53:16
Как заставить carrierwave загружать изображения и кропать их с сохранением одним именем файла с префиксом? без использования AR model
Всегда генерируется rand_filename.jpg thumb_other_rand_filename.jpg

Google

Gregory Tereshko
13.08.2018
10:55:11
Нашел у себя. Есть какой-то такой метод:
# Override the filename of the uploaded files:
# Avoid using model.id or version_name here, see uploader/store.rb for details.
# def filename
# "something.jpg" if original_filename
# end
Его прям в аплоадере писать

Oleg
13.08.2018
10:55:59
Это просто оверрайдит название файла
А мне над чтобы было имя примерно как SecureRandom.uuid

Admin
ERROR: S client not available

Oleg
13.08.2018
10:56:51
На каждую версию, я так понимаю вызывается filename и снова генерируется новое имя
Так как не храню никакие данные в базе после загрузки изображения, хотелось бы знать имена всех версий изображений по названию оригинала
типа original: 123, thumb: thumb_123
Уже и через attr_accessor пробовал при вызове Uploader.new тоже не помогает
Вопрос решился

No
13.08.2018
13:39:34
Сегодня день вопросов. Ребята, а как бы вы тестили grape middleware? На примере конкретного эндпоинта? Или замокали бы всё, что можно замокать и протестили бы изолировано?

Anton
13.08.2018
14:23:28
написал бы 1 полный тест на хороший результат, 1 тест на плохой и все остальное покрыл бы изолированно и замокано

Artem
13.08.2018
15:01:58
Как в sidekiq настроить очередь в которой не может выполняться больше n количества задач одновременно, чтобы оставить возможность другим очередям исполнятся
Например 25 потоков, 10 на одну очередь, остальное на другие

Adamtsov
13.08.2018
15:03:53
Sidekiq limit fetch нем

Aleksey
13.08.2018
15:03:57
запустить несколько процессов sidekiq

Adamtsov
13.08.2018
15:04:01
Гем *

Aleksey
13.08.2018
15:04:14
каждый на свою очередь и со своим конфигом

Сергей
13.08.2018
18:57:44
Доброй ночи. Есть метод, который возвращает из таблицы table1 через Sequel количество записей по полю name.
def count_name
DB[:table1].select(Sequel.lit('COUNT(*)').as(:count), :name).group(:name).order(Sequel.desc(1))
end
В этой же бд есть table2 с полем name. Как сделать, чтобы метод count_name возвращал количество name с 2 таблиц? Сделать через UNION?

mr.Serj
14.08.2018
06:14:43

Google

No
14.08.2018
06:30:01

mr.Serj
14.08.2018
06:34:18

No
14.08.2018
06:35:38
Да тут больше вопрос не в коде, а в подходе ) Но если не составит труда - расшарь, авось пригодится

Alexey
14.08.2018
10:33:02
чят, вопрос. Кто-нибудь использует active storage? у меня начал путать загруженные файлы и выдавать ошибку типа Can't resolve image into URL: undefined method `signed_id' for nil:NilClass
Появилось желание плюнуть на всё и вернуться к carrierwave

Иван
14.08.2018
12:20:49

Zamira
14.08.2018
12:44:33
Коллеги, как получать тело запроса в чистом виде? Парсингом что-то не то, params не формируется с ошибкой. Хотела бы увидеть что именно не так в теле запроса

Кøе-ктø Геннадьевич
14.08.2018
12:46:21
request?

Zamira
14.08.2018
12:48:48
И?

Иван
14.08.2018
12:50:23

Кøе-ктø Геннадьевич
14.08.2018
12:50:29
вставляешь pry куда нужно и далее метод request показывает что в твоем запросе

Zamira
14.08.2018
12:51:14

Ilya
14.08.2018
12:51:41
в жизни не разберешь)

Zamira
14.08.2018
13:40:14
У меня опять вопрос.
Посмотрела я тело запроса. Там что-то в виде
--------------------------43cf190a15dc3a45
Content-Disposition: form-data; name="data"
некоторый json
--------------------------43cf190a15dc3a45--
params не формируется из-за того, что не может это распарсить. Может ли быть дело в том, что есть лишние 2 тире после boundary?