Добро пожаловать, Гость!
:: + Добавить ссылку через биллинг
:: + Добавить ссылку анонимно
DOXNET — анонимность, общение и цифровая безопасность
DOXNET — анонимность, общение и цифровая безопасность
DOXNET — анонимность, общение и цифровая безопасность
DOXNET — анонимность, общение и цифровая безопасность
Social Engine - GitHub
Предложения и пожелания | Social Engine - GitHub
MarkPrior : Social Engine - GitHub
31 Июля 2026Вернулся спустя долгое вынужденное отсутствие. В 22-ом брался за рерайтинг движка, но на данный момент смысла в этом не вижу.
Вместо этого начал с ноля писать новый движок для социальной сети, в которой постепенно можно было бы реализовать всё, что когда-то было в DCMS-Social, или сделать даже лучше.
----
За эталон на данный момент служит Twitter. Для проекта используются React, PHP 8.0 и PostgreSQL. На данный момент сайта с примером нет, так как толком ещё ничего не реализовано, зарегистрирую позже. В комментариях буду постепенно писать об обновлениях, прикреплять скриншоты (со временем будет и сам сайт для примера).
----
Репозиторий на GitHub открыт. Если желающие будут - сможете следить за процессом там, ознакамливаться с кодом.
Ссылка на репозиторий. Частые обновления не обещаю, но они будут.
----
Подмечу, что Твиттер является лишь эталоном, но копироваться он не будет. Сейчас реализуется костяк проекта, дальше пойдут изменения: добавить, убрать, заменить.
----
Комментарии:
MarkPrior 19:35:22Автор темы
20.08 update - RU Changelog - Видео демонстрация
На небольшой видео демонстрации показано, как работает прикрепление файлов к постам:
- При загрузке в одной вкладке файл отобразится и в другой, но текстовое содержимое нет, т.к. оно идёт в localStorage браузера: обновление страницы не сбросит последний введённый текст. На видео не показано, но, как ранее писалось, не получится прикрепить более 4-ёх файлов к посту, даже если начать загрузку сразу в нескольких файлах посредством скрипта.
Добавлена настройка защиты постов:
- Пользователь может запретить не подписанным юзерам смотреть свои посты.
- Если защита включена, то подписки на пользователя сперва будут идти в запросы, где он может отклонить или принять запрос. Информация о запросах появляется в боковой панели, а также на странице просмотра Подписчиков и Подписок появляется вкладка Запросы.
---
Все подробности расписаны в changelog по ссылке.
Это начало подготовки к реализации мессенджера: введение пользовательских настроек приватности.
MarkPrior 11 Авг 2026Автор темы
11.08 update - RU Changelog
Подробно расписывать не буду, всё детально описано в Changelog версий.
===========
* 1.8.1:
- Добавлена страница с настройками пользователя и новые поля в users (страна, ip регистрации, гендер).
- Крупный рефакторинг структуры страниц: единый Layout для всех приватных страниц.
(детально всё в файле версии)
===========
* 1.8.2:
- Крупный рефакторинг всей структуры проекта: убран дублированный код, реструктуризация фронтенд-компонентов по фичам, устранены некоторые критические уязвимости.
(детально всё в файле версии)
===========
Обновления могут публиковаться чуть реже, т.к. занялся ещё одним проектом на Java, но обнов будет много.
MarkPrior 8 Авг 2026Автор темы
08.08 ч2 - большое обновление перед перерывом - RU Changelog
- Информация о просмотре хранится 3 часа, далее очищается и если пользователь снова посмотрит пост, который уже видел ранее, то будет ещё +1 просмотр - это не баг, так работает практически у всех крупных соц. сетей, просто рамки времени везде свои.
- Запрос на просмотр для конкретного поста отправляется не более одного раза за SPA-сессию. Повторное появление того же поста в ленте (после скролла вверх/вниз) не создаёт лишних сетевых запросов. НО если пользователь обновит страницу или зайдёт с другой вкладки - это другая сессия, запрос пойдёт снова, но Redis всё равно вернёт достоверную информацию (пост просмотрен). Сами запросы нагрузки не создают, но такая оптимизация лишней не будет.
---
Насчёт корректной работы просмотров в ленте постов есть сомнения, будет дополнительно тестироваться.
MarkPrior 8 Авг 2026Автор темы
08.08 ч1 - большое обновление перед перерывом - RU Changelog
Масштабно актуализирован README: особенно расширена инструкция по установке.
Структура Changelog'ов немного изменена: в основном файле будут лишь указаны версии с ссылками на изменения в них, иначе сам Changelog получался уже огромным.
Актуализированы все данные в папке /docs/ (архитектура постов, API endpoints) и добавлены три новых в соответствии с нововведениями.
---
- В любом месте сайта при наведении на имя пользователя будет всплывать карточка с краткой информацией о пользователе.
- Реализована система подписок: подписка/отписка, отображение количества подписчиков/подписок на личной странице юзера/в карточке юзера, страница просмотра подписчиков/подписок.
---
- У проекта новая зависимость - Redis (установка описана в readme) - будет использоваться для эфемерных данных. Сейчас через него реализована дедупликация просмотров, в будущем - presence/typing-индикаторы для переписок.
- Просмотр на пост засчитывается:
>> в ленте постов, если пост виден минимум на 50% и пользователь остановился на нём минимум на 3 секунды (да, просмотр может приплюсоваться сразу к нескольким постам, если те по параметру видимости подходят - это не баг, такова логика).
>> на странице самого поста.
- Просмотр от одного пользователя в любом месте сайта - это один просмотр, а не два (и более) разных.
MarkPrior 7 Авг 2026Автор темы
07.08 update - RU Changelog
Начата реализация динамического обновления содержимого страницы.
- У постов (в абсолютно любом месте сайта) время создания обновляется каждую минуту. Функция будет упразднена: обновление будет работать лишь для постов возрастом до суток, т.к. дальше формат времени создания не в стиле "5 минут назад", а просто дата в стиле "8 авг".
- Динамического обновления количества лайков, комментов и просмотров у постов в ленте не будет, от этого отказался и Твиттер, слишком геморно. Но нашёл компромисс: обновляться эти данные будут при детальном просмотре конкретного поста или просмотра медиа, прикреплённого к посту, где тоже выводятся эти данные. То есть можно открыть какой-то пост и в лайв-режиме наблюдать изменение показателей.
- Под постами реализована сортировка комментариев (выбор сортировки будет отображаться, лишь если есть комменты): relevant, recent, likes. Обновление в зависимости от выбранной сортировки моментальное. Для relevant формула пока что самая простая.
- Ранее под постами новые комментарии не появлялись. Теперь, если они есть, будет показываться баннер "Показать <N> новых ответов": после клика - подгружаются новые комменты. Функция аналогична с постами на главной странице.
- Реализована пагинация постов на главной странице: изначально загружается 25 постов, далее при скорллинге будут подгружаться ещё по 15.
- Реализована пагинация комментариев под постами (и при детальном просмотре поста, и в лайтбоксе при просмотре медиа): изначально загружается 15 комментов, далее при скроллинге - ещё по 10.
---
Подробно все изменения расписаны в Changelog
MarkPrior 6 Авг 2026Автор темы
06.08 update - Видео демонстрация - RU Changelog
Реализовано всё, что планировалось постом ранее с некоторыми правками.
- Отказались от localStorage для инфы о прикреплённых файлах в пользу лишь серверного варианта temp_uploads по user_id: препятствует махинациям со стороны клиента.
- Теперь нельзя прикреплять разные файлы в разных вкладках: что прикрепится в одной - отобразится в другой. Прогресс загрузки видео показываться будет лишь в той вкладке, где оно загружается, но по завершению конвертации тоже отобразится во всех. Открепление файла в одной вкладке - открепит его во всех.
- Если файлов уже 3 и в одной вкладке поставить на загрузку четвёртый, затем в другой вкладке попытаться прикрепить ещё один - выдаст ошибку, т.к. лимит в 4 файла уже занят.
(?) Для безопасности предусмотрены все варианты, какие смог придумать, для обхода ограничений, включая скрипты для одновременной отправки постов с нескольких вкладок (для дубляжа постов) или скрипты одновременной загрузки более 4-ёх файлов, и несколько других "обходов". Всё будет блокироваться. Вариант с редактированием сбилденного js не поможет, на сервере присутствуют все проверки. Мы следуем правилу: "Never trust the client. Always validate on the server.".
---
Касаемо медиа - реализовано всё, что требуется, и обновления пока что не требуются.
Дальше:
* Сосредоточиться на реализации динамического обновления контента.
MarkPrior 6 Авг 2026Автор темы
06.08 - upcoming update
Так как прикрепление медиа к постам вышло уже за пределы возможностей самого Twitter, который брался за эталон, сегодня будут лишь фиксы некоторых проблем. В Твиттере, если ты прикрепляешь медиа, но обновляешь страницу, оно открепляется и с сервера удаляется. У нас же даже после обновления страницы юзер будет видеть прикреплённые ранее файлы: реализовано на случай сбоя браузера, чтобы юзер не терял время на повторную загрузку (а в случае с видео - не тратил и мощности сервера на повторную конвертацию). Но есть явные дыры для злоупотребления:
* Можно загружать бесконечно много файлов на сервер, просто очищая данные браузера (сбрасывая localStorage).
* Юзер банально может открыть другую вкладку и загрузить ещё 4 файла (базовый лимит - 4 медиа на пост) и так хоть в 100 вкладках, даже без очистки данных браузера.
* Данные о прикреплённых файлах сохранялись и под чужими постами, чего не требуется: здесь мы пойдём по пути Твиттера - если юзер ушёл со страницы поста, то файлы удаляются сразу.
---
Откажемся от localStorage для медиа браузера в пользу сохранения user_id в temp_uploads - так мы перекроем путь к злоупотреблению и засорению диска и сможем легко контролировать лимит в 4 медиа, даже если юзер уйдёт в другую вкладку. В localStorage будет сохраняться только текстовое содержимое не опубликованного поста.
Также уменьшим время очистки файлов из бд и диска у незавершённых постов с 48 часов до 6 через cleanup_temp_uploads.php, сэкономит пространство на диске.
---
Также требуется реализовать, чтобы в случае загрузки видео, если пользователь открывает новую вкладку, в ней тоже отображался прогресс загрузки.

