Vasiliy
25.02.2018
10:24:28
потому что там классы закрытые, а DI даёт гибкость при тестировании
Anton
25.02.2018
10:24:32
Это и в js есть
Да и вообще где угодно
Google
Vasiliy
25.02.2018
10:26:16
и я в пыхе смотрел на это и думал - ну нахуя же так усложнять лол)
эт потом я увидел несколько проектов на рельсе и понял что говнокод от ЯП не зависит, так что хейтерство пыхи несколько приувеличено
Anton
25.02.2018
10:31:07
Vasiliy
25.02.2018
10:35:38
и ещё(понесло) взять ту же симфони к примеру, там для БД тот же Repository используется, форм обжекты есть
Anton
25.02.2018
10:38:01
И контейнеры для зависимостей
Dmitry
25.02.2018
10:39:37
Nikita
25.02.2018
10:57:10
а его без шахты не бывает?)
Dmitry
25.02.2018
10:59:42
Мне скорее интересно стало, мешает ли рубокоп Антону. Если шахта мешает.
Сегодня конечно сложно будет вопросы задавать тут.
Прочитал чат и не ослеп
мне тут на собеседовании вопрос задали. есть 10 миллионов юзеров, 10 млн постов и 100 млн лайков, как я бы выводил на странице последние 50 постов, для current_user с пролайкавшими эти посты друзьями.
No
25.02.2018
11:03:05
Dmitry
25.02.2018
11:03:23
Я встал и ушел)
Google
No
25.02.2018
11:03:45
Надо было правильный ответ спросить
Ибо вопрос слишком абстрактный
И вариантов великое множество исходя из ситуации
Decadent
25.02.2018
11:05:08
Dmitry
25.02.2018
11:05:40
для текущего пользователя
Vasiliy
25.02.2018
11:08:39
а чего ты встал и ушёл то?
зассал?
Dmitry
25.02.2018
11:09:07
Типо того
Nikita
25.02.2018
11:09:14
current_user.posts.joins(:likes).where(«likes.user_id IN (#{current_user.friends.ids.join(‘,’)})»).order(‘posts.created_at DESC’).limit(50)
как-то так? но я не уверен, нужно модели видеть
Dmitry
25.02.2018
11:09:28
Nikita
25.02.2018
11:09:36
а, понятно
No
25.02.2018
11:09:45
Nikita
25.02.2018
11:09:48
тогда правильно сделал что встал и ушел
rekero
25.02.2018
11:10:33
Почему?
прикинь сколько по времени у тебя этот запрос будет выполняться
для "10 миллионов юзеров, 10 млн постов и 100 млн лайков"
No
25.02.2018
11:11:00
Звучит интересно
Надо протестить
Dmitry
25.02.2018
11:11:29
Я вот тоже сижу базу заполняю тестовую.
Google
Decadent
25.02.2018
11:12:08
про индексы не забудьте
No
25.02.2018
11:12:27
Есть подозрение, что 10 млн юзеров не все активны
Dmitry
25.02.2018
11:12:51
Суть в том что код я уже написал который теоретически это сделает до конца существования галлактики.
No
25.02.2018
11:13:03
И 9 млн отфильтруются если в базе сделать индекс по isActive полю
Dmitry
25.02.2018
11:13:26
Только проверить как если ты никогда с такими объемами не работал?
Nikita
25.02.2018
11:13:42
Dmitry
25.02.2018
11:13:57
Даже гем по автозаполению базы после 100 000 записей начинает вести себя не адекватно.
No
25.02.2018
11:14:11
Индекс эластика тоже не выход кстати
Ибо память треснет
По идее
Nikita
25.02.2018
11:14:49
но все равно жестко как-то
Vasiliy
25.02.2018
11:14:53
No
25.02.2018
11:15:13
Да, согласен
Но я слабо представляю решение этой задачи в вакууме
Vasiliy
25.02.2018
11:15:46
с джоинами я думаю оно охуеет
No
25.02.2018
11:15:48
Это не тривиальный вопрос про проки и лямбды
Dmitry
25.02.2018
11:15:58
No
25.02.2018
11:16:09
Nikita
25.02.2018
11:17:05
та ну да, я что-то так подраскинул, джойнить лайки это жестко
No
25.02.2018
11:17:42
На руби писать такое нельзя. А на php рекомендуется
Google
No
25.02.2018
11:17:56
В чем недостаток руби перед пхп?
Vasiliy
25.02.2018
11:18:16
так то я думаю если в несколько запросов ебошить и всякие плаки юзать то руби вполне осилит
чувак наверное думает что все сущности в память пойдут
вообще я конечно в лужу могу пёрнуть, но counter_cache в рельсе под это можно заюзать
No
25.02.2018
11:20:19
Не, никак не поможет
Vasiliy
25.02.2018
11:20:36
а, там же блять условие что френды должны пролайкать
No
25.02.2018
11:20:36
Нам надо найти посты, которые лайкнули френды
Dmitry
25.02.2018
11:21:14
No
25.02.2018
11:21:57
Кстати в теории NoSql тут помогает
Vasiliy
25.02.2018
11:22:24
я про утечки памяти чёт не просёк
No
25.02.2018
11:22:43
На монге находишь посты юзера, в посте эмбедед лайки
Все быстро
Все бодро
Dmitry
25.02.2018
11:24:07
я про утечки памяти чёт не просёк
Ну я так понимаю что раз у нас 10 миллионов пользователей то какая то их часть одновременно захочет это вывести для себя. Тут я уже себе слабо представляю какой это ад может быть.
Vasiliy
25.02.2018
11:24:39
это уже другой вопрос
Dmitry
25.02.2018
11:25:04
Просто мне кажеться он на него попробовал ответить.
Vasiliy
25.02.2018
11:25:05
так то похую что там пых го или руби если затык в БД
ну он уже более глобально пошёл
No
25.02.2018
11:25:37
Так, стоп
Задача решается просто
Google
No
25.02.2018
11:26:07
current_user у нас уже есть
Если лайки хранить массивом в посте
То остается выбрать посты юзера
И фильтрануть
Nikita
25.02.2018
11:26:54
а если лайки по связи?
Vasiliy
25.02.2018
11:26:55
я про такое подумал - взять фрейдов и приджоинить их лайки к своим записям
No
25.02.2018
11:27:01
С корректными индексами - ноль проблем
Dmitry
25.02.2018
11:27:22
Нужно не лайки вывести а юзеров которые твои друзья и пролайкали твой пост.
No
25.02.2018
11:27:52
Лайк == user_id в массиве likes
Изи
Nikita
25.02.2018
11:28:19
а как ты поймешь, что лайк от друга?
Vasiliy
25.02.2018
11:28:42
взять френдов
дернуть посты где лайк от юзера френд к куррент юзер ид
фильтрануть друганов
Nikita
25.02.2018
11:28:56
No
25.02.2018
11:29:07
Dmitry
25.02.2018
11:29:31
блин сейчас найду, бумажку
Vasiliy
25.02.2018
11:29:39
но я не настоящий сварщик
No
25.02.2018
11:29:56
Если нам не надо джойнить 100 лямов лайков
То с корректными индексами
Проблемы нет
Vasiliy
25.02.2018
11:30:15
тут походу подъебка как раз в том что ты в лоб пойдёшь сразу лайки лопатить которые тебе наставили