Написал базу данных, лол

Написал базу данных, лол

https://github.com/recoilme/slowpoke

Простая как три рубля база - нужна была мне для дальнейшего развития проектов. Основная цель - заменить bolt db. Это НЕ векторно объектно ориентированная графовая база данных на рафт протоколе. Spowpoke это не про это. Движок не гонится за победой в бенчмарках, он ориентирован на удобный blob сторадж с быстрыми индексами. На данный момент в него ложатся все используемые мной паттерны, от сайта до бота. Есть супер быстрые индексы для работы, минималистичное и удобное апи для работы и довольно медленное хранилище для данных, которые нужны время от времени.

К базе данных прилагается простой сервер на http протоколе и rest api. Сегодня закончил тесты - запустил в продакшен. По результатам эксплуатации очевидно появятся доработки. Стэй тюнед.

GitHub
recoilme/slowpoke
Package slowpoke implements a low-level key/value store in pure Go. Keys stored in memory (with persistence), values stored on disk.

Волшебный пендель

Волшебный пендель
Через десять дней на канал налилась какая то доля просмотров, от всех просмотров до судного дня и одновременно прилетел опросник - ну как вам Дзен? Совпадение? Не думаю. Всё таки волшебный пендель - "алгоритм удержать автора" - кажется есть.
Итого - барин может ливануть трафла от души.

Цифры
Я смотрел стату по нескольким каналам. Мой вышел примерно на 20 тысяч показов поста в ленте примерно через неделю. Обычно - все хуже на порядок. Далее рост замедлился. Спустя три недели - просмотров в ленте на пост 50-100 тысяч. Подписчиков - всего под сотню - это явно не определяющий фактор. Наибольший вес имеют лайки/дизлайки, насколько я вижу. Дочитываемость, время прочтения поста - достаточно держать просто на адекватном, среднем уровне. В канале нет постов с проходным контентом. Каждый дизлайк будет тянуть канал на дно. Не пишите всякий треш - типа смотрите какой милый котик и всё будет неплохо. Не гонитесь за колличеством постов. Лайков у поста - на единицу времени. Лайки канала - на количество подписчиков. Помните, что цифры всегда нормализуются, а вам надо быть всегда чуть выше среднего.

Хороший пост, это - на каждую 1000 показов в ленте:
110 просмотров
100 дочитываний
5 лайков
>40 секунд время прочтения

Пост с такими показателями - отгружается на 100000 показов в ленте, при примерно 100 подписчиках.
Итого - гонитесь за качеством постов (лайками), а не за колличеством

Риски
В любой момент канал могут запессимизировать/забанить. В этой ситуации думаю самое правильное - завести новый канал и начать с нуля.
Итого - высокорискованная история.

Алгоритмы
item to item - для каждого поста. Это медленный алгоритм. Он не юзается для отбора постов в ленту пользователя. Иногда, при клике по посту - вываливает блок - читайте также - это он. Вываливает редко, не набирается статзначимое количество перекрестных прочтений, либо тупо не успевают обсчитать.

популярное - для каждого поста. Под постами есть блок смотрите также, это отсортированные по лайкабельности посты с канала помноженные на затухание по дате публикации

item to item - по интересам. Интересов конечное количество. Их мало. По ним можно подбирать ленту в рилл-тайм. Пришел юзер, который любит новости. Ищем каналы с тегом новости, сортируем посты по рейтингу, перемешиваем. Таким образом в ленту будут попадать новые каналы

item to item - по каналам - построить легко. Но не думаю, что это нужно. Хотя, лента бесконечная, можно и подсчитывать, торетически. А можно подсчитывать периодически и сохранять в профиль юзера - наряду с интересами и каналы, контент с которых может быть также интересен

На этом всЁ. Подписывайтесь на мой канал в телеграм: @recoilmeblog
Начало: http://recoilmeblog.tggram.com/post/103
Ставьте лайк) 👍

Recoilmeblog.Tggram.Com
recoilmeblog: Реверсинженирим Яндекс Дзен
Реверсинженирим Яндекс Дзен Всем привет. Как разработчик рекомендательной платформы relap.io - не мог пройти мимо Дзена. Мне эта платформа интересна с технической стороны и я попытался ..

Реверсинженирим Яндекс Дзен

Реверсинженирим Яндекс Дзен

Всем привет. Как разработчик рекомендательной платформы relap.io - не мог пройти мимо Дзена. Мне эта платформа интересна с технической стороны и я попытался отреверсинженирить ее, основываясь на своем опыте и небольшом тестовом канале.

Итак, вы завели канал. Чего ожидать от этой платформы и как не наступить на многочисленные грабли. Показать всё что скрыто, шокирующая правда об алгоритмах Яндекс Дзен :)

Сайт или канал?
Яндекс хочет денег (стратегически). Выгоднее строить медиа платформу - замкнутую на себя и свою систему монетизации (Директ). Тактически необходимо дать трафик и внешним сайтам (монетизируемым не через яндекс) на первом этапе. Поэтому пока есть эта смешная опция - подключить сайт. Но канал выгоднее яндексу в перспективе.
Итого - Канал.

О чем писать
О том, что интересно пользователям. Лол. Конечно же нет. Зен - это просто алгоритм. Робот приоритизирует контент, который нравится юзерам. Это не одно и то же. Инструмент выражения "нравится" - это лайк. Упал самолет. Это интересный контент. Но ему не поставят лайк. Смотрите какой красивый закат на Бали - лайк. Смотрите - трусики Волочковой - или пан или пропал. Аудитория яндекса - взрослая> 30 лет, много женщин. Дальше думайте сами -> половина не вдупляет что лайк - это хочу больше такого же контента - для них лайк = лайку в соцсетях => лайки будут ставить контенту а не редактору. Я думаю сталингулаг, со своим нытьем не был бы так успешен в дзен, но кто знает, это был бы интересный эксперимент.
Итого - позитивный контент

Пост
Пост смотрит модератор. Это видно по ip адресам и задержке. У него есть кнопки - бан, удалить, супердизлайк.
Он может пессимизировать канал - за неуникальный контент, кликбейт и тп. Кнопку суперлайк - я бы не давал. Чревато злоупотреблениями. Для того чтобы понять насколько интересен пост - он показывается небольшой выборке. Размер выборки зависит от рейтинга канала. Рейтинг формируется как совокупность лайков/дизлайков канала нормализованных по количеству подписчиков. При нулевом рейтинге пост будет отгружен какому то дефолтному размеру, например тысяче. Думаю раскрученный канал может отгрузиться на десять тысяч и в первой иттерации. Затем пересчитываются показатели поста и размер следующей выборки.

Холодный старт
Основная проблема рекомендательных алгоритмов - холодный старт. Кому показывать контент, любителям котиков или трусов? Возможно, tf/idf -> ключевые слова -> тематика канала животные. Алгоритмы не могут эффективно работать с большими массивами данных, данные укрупняют. Посты - объединены в каналы, каналы - в "интересы/темы". Те каждый юзер представлен как совокупность векторов:
- интересы
- каналы
- посты (под вопросом)
с различными весами. Если вы пишите про всё подряд, то про трусы, то про котов - ваш пост будет показан более разношерстной аудитории, вы получите меньшее пересечение по интересам, меньшее количество лайков, меньший рейтинг канала, меньший размер выборки, меньше трафика - дальше продолжать?

Если понять о чем ваш пост/канал - не удается - отгружается ужасному рандому. Я вижу это по косвенным факторам, первые посты набирают на порядки меньше лайков, так как уходят не ЦА, а некой куче. С улучшением тагетирования канала по интересам - улучшается и качество целевой аудитории. И ctr и лайки.
Итого - пишите для одной и той же аудитории, на одну и ту же тему

Затухание
Трафик сначала растет иттерациями, затем начинает затухать. Это отвратительно, но есть закон жизни. Если бы тараканы не умирали, они заполонили бы всю планету. Как то я иносказательно. Если бы посты не "умирали" - у новых постов не было бы места в ленте пользователя, поэтому трафик с каждого поста не вечен, но отгружается по остаточному принципу. Если нет более лучших новых постов по этой теме - отгрузят ваш пост. Обычно период активного роста - несколько дней. Чем удачней пост - тем дольше он жив. Затем старение и смерть.
Итого - писать в канал придется вечно
далее http://recoilmeblog.tggram.com/post/104

Relap.Io
Relap
Relap — helps publishers increase audiences engagement and delivers higher revenues with native advertisement

Зима близко.

Зима близко. Авторизация через телеграмм - еще ближе.

Поиграться с виджетом авторизации телеграм можно тут: http://tggram.com/tg/login

Сниппет проверки хеша авторизации на Golang:
https://gist.github.com/recoilme/a1b9059b5d5f12c18a63bae58b3bc659


Осталось нарисовать, отладить, и можно браться за комментарии.

Tggram.Com
Telegram Login Widget
Hello, anonymous!

Какой функционал Вы хотите видеть в tggram.

Какой функционал Вы хотите видеть в tggram.com?

- редактирование и создание постов на сайте – 6
👍👍👍👍👍👍👍 22%

- сервис комментирования постов – 6
👍👍👍👍👍👍👍 22%

- сервис сбора статистики о подписчиках канала – 6
👍👍👍👍👍👍👍 22%

- сервис экспорта постов в социальные сети – 6
👍👍👍👍👍👍👍 22%

- сервис управления постами (отложенный посинг, прикрепление картинки и тп) – 3
👍👍👍👍 11%

👥 27 people voted so far.

Как спланировать архитектуру проекта

Как спланировать архитектуру проекта

Самая распространненая ошибка при выборе архитектуры - ориентирование на бенчмарки.

Однако, если вы проектируете высоконагруженный проект ориентироваться надо на ССС:
Совокупная Стоимость Владения

Совершенно все равно за 10 милисекунд ответит БД под типовой нагрузкой, или за 20 миллисекунд.
Если вы потратите минимум 200 милисекунд на парсинг ответа и еще столько же на его отдачу.
По бенчмаркам - разница в два раза. Но мало кто считает цену.

ПО написанное на языке низкого уровня - сожрет Х памяти и Х процессорного времени
ПО написанное на JVM - сожрет 100X памяти и 100X процессорного времени
ПО на языке высокого уровня - сожрет 100000X памяти и упрется в своп. Или нет.

Просто загрузите на инстанс в амазоне все три варианта и дайте типичную нагрузку.

Амазон Вам выставит счет на X, 100X и 100000X долларов. Это прямые затраты.

Есть еще косвенные. Тут обратная ситуация:
Зарплата программиста на языке высокого уровня: $X/мес
Программист на JVM стоит - 5X/мес
На языке низкого уровня стоит те же 5X - но разработка аналогичного функционала займет у него 2X (те цена получается 10X)

И это тоже ещё не всё. Дальше начинают ролять архитектурные особенности ПО.

Допустим все ваши данные поместятся в 256 Гигов памяти с лихвой. Казалось бы - редис.
Но редис - однопоточный. Вы не купите сервак с 256 гигами оперативки и одним ядром. Вы заплатите за 24 или 48 ядер. А вот сможете ли эффективно утилизировать оставшиеся ядра - второй вопрос.
Или - например RocksDb - внутри оптимизация под SSD. SSD и HDD стоят совсем разных денег. Учитывать надо все.

И считать надо не столько и не только - сколько наносекунд уходит на операцию, а во сколько долларов обойдется эта операция.

Итак:
- Есть ли требуемый функционал
- Обеспечивает ли приемлемую скорость
- Надежность и масштабируемость
- Совокупная Стоимость Владения

Первые три пункта - это просто чеклист. Да или Нет. А последний - это ваши деньги.

Лонгриды в ВК

Лонгриды в ВК

Звучит как фантастика, но Вконтакте выпустил прекрасный редактор и сбацал новый формат - лонгриды:
https://vk.com/blog/longreads

"Статьи — это аккуратная чистая вёрстка, яркие медиавложения и полезная статистика."

Редактор лучше чем

в Дзене
- поддерживает видео
- ссылки на картинки преобразуются в картинки по Enter

в телеграф
- в телеграф на редкость глючный редактор

Возможно это лучший инлайновый редактор из тех, с которыми я сталкивался. Неожиданно.
Прямо захотелось добавить аналогичный в tggram

#вконтакте

M.Vk.Com


Говорят, медиум тоже не торт

Говорят, медиум тоже не торт

Пруф: https://t.me/mediaborscht/74

Собственно если почитаете этот канал (медиаборщ), то половина постов за этот год о том, что фейсбук скоро станет не торт также. Что-то назревает.

Telegram
Медиаборщ!
Medium уже не тот Когда говорят про то, где делать корпоративный блог, то часто называют Медиум, у которого репутация такого себе англоязычного ЖЖ для айтишников и digital-спецов. Когда я год назад начал делать там свой небольшой блог про медиа, охваты меня устраивали - 1.5k-3k просмотров для ..