Size: a a a

2020 September 02

A

Artur in ctodailychat
ну то есть сама формулировка не исключает, что Руби был похоронен во всех этих стартапах еще до того, как начала писаться статья
источник

MS

Max Syabro in ctodailychat
focusshifter 🤔
(пушо им по 8-10 лет)
угу
источник

A

Artur in ctodailychat
ключевые слова в статье https://poolp.org/images/2019-08-30-tweet_2.png
источник

GL

Gleb Lesnikov in ctodailychat
Max Syabro
выборка из 100 стартапов хз
дак они еще все из долины
источник

A

Andrey in ctodailychat
Max Syabro
выборка из 100 стартапов хз
не 100, а 35
источник

GL

Gleb Lesnikov in ctodailychat
php 0.8B valuation
источник

GL

Gleb Lesnikov in ctodailychat
bruh
источник

AR

Anton Revyako in ctodailychat
Artur
ну то есть сама формулировка не исключает, что Руби был похоронен во всех этих стартапах еще до того, как начала писаться статья
не. stripe же на руби и монге )
источник

A

Andrey in ctodailychat
ну тогда можно подключать
источник

A

Artur in ctodailychat
Anton Revyako
не. stripe же на руби и монге )
что “не”? исключает?:)
источник

AR

Anton Revyako in ctodailychat
Artur
что “не”? исключает?:)
я точно знчю что они сейчас на этом
источник

A

Artur in ctodailychat
да это понятно
источник

СА

Сергей Аксёнов... in ctodailychat
Alexander Panko
Если есть возможность выстроить content id в хронологическом порядке, то это дает возможность хранить данные без индексов (экономия места) и при запросе на фильтрацию отсекать все что ранее самого старого content id и соотвественно делать это существенно быстрее. Индекс все равно будет но разреженный, грубо говоря есть очередной блок данных ты знаешь с какого таймстампа он начинается и каким заканчивается, сам блок представляет кусок анных за день/час/ и тд
Но таймстамп создания контента и просмотра пользователем - никак не коррелируют. И пара user_id+content_id всё равно должна быть первичным ключом, чтобы игнорировать дубликаты.
источник

AP

Alexander Panko in ctodailychat
Сергей Аксёнов
Но таймстамп создания контента и просмотра пользователем - никак не коррелируют. И пара user_id+content_id всё равно должна быть первичным ключом, чтобы игнорировать дубликаты.
Давай обстрагируемся немного, представь что у тебя только 1 юзер, и он смотрит контент, смотреть он его может конечно и не в хронологическом порядке наприммер посмотрел c9, потом с5, c6, c4, c7, c8. Теперь если ты можешь хранить просмотренный контент в хронологическом порядке его создания с1 … cN, тебе приходит запрос на фильтрацию нового контента к примеру c5 - c35, ты сразу понимаешь что последний просмотренный контент c9, отбрасываешь все что новее как точно не просмотренное и только c5 - c9 нужно проверить есть ли в нашем наборе данных, так как набор данных упорядочен, ты можешь делать это очень эффективно не перебирая всю историю. Утрированно например двоичный поиск с5 и далее от него и до конца истории проходишь по куску данных.
источник

AP

Alexander Panko in ctodailychat
Решив это для одного юзера, несложно раскатать на многих, Возникает вопрос как показать юзеру его историю просмотров в хронологическом порядке смотрения, думаю это лучше отдельно хранить и с меньше глубиной (врядли она кому нужна за месяц) так чтоб отдавать вообще без какой-то обработки, плюс эта операция менее критична для бизнеса чем первая, поэтому вторична
источник

СА

Сергей Аксёнов... in ctodailychat
Alexander Panko
Давай обстрагируемся немного, представь что у тебя только 1 юзер, и он смотрит контент, смотреть он его может конечно и не в хронологическом порядке наприммер посмотрел c9, потом с5, c6, c4, c7, c8. Теперь если ты можешь хранить просмотренный контент в хронологическом порядке его создания с1 … cN, тебе приходит запрос на фильтрацию нового контента к примеру c5 - c35, ты сразу понимаешь что последний просмотренный контент c9, отбрасываешь все что новее как точно не просмотренное и только c5 - c9 нужно проверить есть ли в нашем наборе данных, так как набор данных упорядочен, ты можешь делать это очень эффективно не перебирая всю историю. Утрированно например двоичный поиск с5 и далее от него и до конца истории проходишь по куску данных.
Да, но контент от рекоммендера поступает не в том порядке, в каком он был опубликован. На то он и рекоммендер. Он вообще может взять и рекомендовать что-то двухнедельной давности на основании смайла, который ты поставил 5 минут назад.
источник

СА

Сергей Аксёнов... in ctodailychat
Ну то есть можно использовать для первичной фильтрации, наверное.
источник

AP

Alexander Panko in ctodailychat
Сергей Аксёнов
Да, но контент от рекоммендера поступает не в том порядке, в каком он был опубликован. На то он и рекоммендер. Он вообще может взять и рекомендовать что-то двухнедельной давности на основании смайла, который ты поставил 5 минут назад.
а это не важно, можно отсортировать перед проверкой там небольшие размеры данных
источник

AP

Alexander Panko in ctodailychat
Далее, 10 байт content id символьно цифровых можно упаковать в 60 бит прицепить к ним таймстамп 32 бита = 12 байт, если начать хранить данные в бакетах по юзеру то оне надо будет хранить user id и тут экономия получится неплохая
источник

СА

Сергей Аксёнов... in ctodailychat
Alexander Panko
а это не важно, можно отсортировать перед проверкой там небольшие размеры данных
Звучит как хорошая оптимизация: держать где-то в Редисе для всех юзеров первый и последний прочитанные content_id, и фильтровать список перед чтением. Спасибо!
источник