Отвечай
Есть что спросить или ответить?
Или, может, Вы ищете новых друзей?
Или просто хотите пообщаться?
Заходите!
Посты
Список блогов
Популярные
Новые
Мои подписки
Наконец то руки дошли до написания новости.
Версию "Мини" не трогал пока. Работал только с "большой" версией сайта. Собственно работа с большой версией "больше" похожа на разработку (воплощение задуманного в жизнь), работа же с "мини" это скорей портирование - идеи уже воплощены в "большой" версии, их нужно только аккуратно перенести из одной системы в другую.

Что было сделано с момента записи видео:
- Появилась возможность добавлять посты (вопросы, ответы, комменты)
- Переработал систему уведомлений - вот тут хочется сильно поразглагольствовать - постараюсь поменьше :)
Система уведомлений меня давно уже раздражала. На мой взгляд она была изначально криво спроектирована... Вот представьте себе таблицу. Каждое уведомление это отдельная строчка в такой таблице. У неё есть столбцы: от кого, кому, вопрос, ответ, коммент, пост в блоге, комент в блоге, тип уведомления, прочитано (да/нет), удалено(да/нет - для прочих уведомлений), дата. Уведомление о новом вопросе будет выглядеть как-то так: От кого - Вася, Кому - Пете, Ответ - ссылка на ответ Васи, поля вопрос, коммент, пост/коммент в блоге будут пустые (ведь речь не про них, а про ответ), прочитано - нет, удалено - нет, дата.
Сразу видна кривости - половина записей в таблице пустые (ведь речь идёт о чем-то одном - или об ответе или о комменте и тд).
Кроме того, в эту таблицу постоянно идёт запись. Уведомления создаются часто и помногу. Например когда Вы отвечаете на вопрос, создаются уведомления для автора вопроса, подписчиков на вопрос (если такие есть) и для всех Ваших подписчиков (Ваш ответ появляется у них в ответах друзей).
Я не очень хорошо разбираюсь в базах данных, но когда пытался понять причину "тормозов" сайта - пришёл к выводу, что уведомления создают большую нагрузку на базу.
Раньше получение новых уведомлений (пользователем) также создавало нагрузку (так как проводилась выборка по нескольким таблицам). А получение уведомлений присходит при каждой загрузки страницы, а также каждые 10 секунд, если Вы страницу не перезагружаете (и так для каждого пользователя и для каждого его окна). Эта проблема в своё время была решена введением кэшей - Ваши уведомления достаются из базы и кладутся к более быстрое место. В дальнейшем, когда Вы уведомления запрашиваете, они берутся не из базы, а из кэша. Когда для Вас создаётся новое уведомление, кэш удаляется и при последующем запросе генерируется снова.
Таким быстрым местом является Redis - своеобразная оперативная база данных. Работает в оперативной памяти, при этом периодически сохраняется на диск (чтоб не потерять данные). Быстрая (заявлено несколько сотен тысяч операций в секунду, тогда как обычная бд и 1 тысячи не сделает). Она не является SQL - делать по ней выборки затруднительно, так что использовать её как основную БД не получится. В ней хорошо хранить кэши и какие ни будь оперативные, временные данные.
Использовать я Redis начал где-то пол года назад, для кэшей и очереди (например задача по отправки писем довольно долгая, она просто ставится в очередь и Вам не нужно ждать её завершения, чтобы загрузить следующую страницу). И уже тогда я задался вопросом, а можно ли его использовать ещё для чего-то? Например для уведомлений. В общем придумал я способ это сделать... 2 недели на это ушло. В данный момент нет уведомлений о личных сообщений и новостей проекта (они генерятся по особому) - их сделаю когда будут готовы личка и блоги. Ну и тестирования всякие ещё требуются, но в данный момент я доволен. Теперь можно отказаться от кэшей для уведомлений (а кэш это дополнительная задержка)
- Информация об активности пользователя также переехала в Redis - каждую Вашу активность в базу записывается время этой самой активности (по нему потом определяется, онлайн Вы или нет). Теперь это также переехало в Redis, где ему самое место.
Также в Redis хотелось бы перенести информацию о количестве просмотров, лайков и ответов - это хоть и не временная информация, но её можно восстановить в случае потери. Но эта информация нужна для подбора случайного вопроса и ТОП 10 вопросов (пока не придумал, как это с Redis подружить).
Из минусов - в данный момент у нового приложения нет совместимости с текущей базой. И если я хочу её восстановить - придётся внедрять новые системы в текущий сайт. Это сделать придётся - я хочу, чтоб старая (текущая) и новая версия сайта могли работать с одной базой, то есть существовать параллельно какое-то время. Это позволило бы выявлять проблемы новой версии и исправлять их, а пользователь при желании мог бы переключиться на старую (текущую) версию.
- Сделал страницу прочих уведомлений (колокольчик) - они также берутся из Redis:
Картинка загружается...

- Сделал страницу друзей/подписчиков:
Сверху находится фильтр - все или только онлайн. Фильтр работает быстро, так как не делает запросы к серверу.
Картинка загружается...

- Частично реализовал чёрный список - Вы не можете ответить на вопрос, если его автор у Вас в чс (или Вы у него), Вы не можете прокомментировать ответ, если его автор или автор вопрос у Вас в ЧС (или Вы у него)
- Немного поигрался со шрифтами и цветом. Что получилось - ниже (скажите, какой вариант Вам кажется наиболее удачным, я пока на первом остановился). Это просто эксперимент, думаю к моменту релиза это ещё изменится :) В идеале бы сделать сменные темы (чтоб пользователь мог сам их менять), но пока я не разобрался с этим (возможно потом разберусь).
Изначальный вариант:
Картинка загружается...

Картинка загружается...

Вариант 1:
Картинка загружается...

Картинка загружается...

Вариант 2:
Картинка загружается...

Картинка загружается...

Вариант 3:
Картинка загружается...

Картинка загружается...


Подбирал цвета на https://coolors.co/

Чего дальше?
Думаю надо разобраться с постраничным выводом - автопогрузка при прокрутке или при нажатии на кнопку "загрузить ещё".
Личка (в данный момент кажется чем-то сложным)
Блоги
Редактирование профиля - тоже задача, которую считаю сложной. Хотелось бы сделать возможность редактирования аватарки перед загрузкой - осилю или нет - пока не знаю...
Много чего ещё на самом деле... Буду стараться оставаться на связи :)
Warning Присоединяйтесь!
Weird и другие наши пользователи
ждут Ваших ответов, вопросов и комментариев!
Зарегистрируйтесь на сайте в 1 касание - просто выберите почту или социальную сеть ниже.
Yandexндекс
MailRumail
Googleoogle
Odnoklassniki
VK
Заходя на сайт Вы подтверждаете своё согласие с
правилами и политикой конфиденциальности
Уже настолько привыкла к оформлению, что даже и не вспомню, что раздражало, когда только зашла сюда)
Like 0
Изменения часто раздражают...
ответ для: Natali
Like 0
Это точно. Но мне нравится, например, когда есть окно, в котором появляются новые вопросы, такая своеобразная лента. Здесь же начинают крутиться вопросы тех, кто зашел. Иногда из-за этого пропускаешь интересные вопросы, потому что автор уже ушел
Like 0
ничего не понял... крутятся вопросы тех, кто онлайн (в первую очередь)
ответ для: Natali
Like 0
Так и я о том же. Но, например, автор задал вопрос и ушел. Вопрос тоже уходит, а в ленте он бы остался.
Like 0
По оформлению - мне лично нравятся 1 и 3 варианты.
Like 0
А я вообще не заметил особой разницы в оформлении..
Like 0
А что делать с версией , в которую я захожу через оперу?
Like 0
какую Оперу? Есть обычный сайт и его вариация для мобильных устройств. "Мини" это вариант приложения, запускаемого внутри VK (сервисы Вконтакте или VK mini apps). Думаю "версией , в которую я захожу через оперу" это обычный сайт :)
Like 0
Я пробовал через vk.ru, но там требует код вводить чтоб войти
ответ для: Weird
Like 0
Ещё комментарии
Читайте также:
Warning Присоединяйтесь!
Зарегистрировавшись Вы сможете просматривать
размещенные на сайте картинки и видео, слушать музыку,
Просматривать и оставлять комментарии
Задавать вопросы и отвечать на них.
Зарегистрируйтесь на сайте в 1 касание - просто выберите почту или социальную сеть ниже.
Yandexндекс
MailRumail
Googleoogle
Odnoklassniki
VK
Заходя на сайт Вы подтверждаете своё согласие с
правилами и политикой конфиденциальности
close