
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
тут походу подъебка как раз в том что ты в лоб пойдёшь сразу лайки лопатить которые тебе наставили