Разработка социальной сети и что с этого получилось. Часть 1
Здравствуйте! Несколько месяцев назад, решил попробовать разработать небольшую, тестовую социальную сеть . Так как раньше участвовал в разработке порталов и имеется опыт в разработке многих функций, приступил к реализации первой части социальной сети (только мобильная версия).
Суть проекта заключается в том, чтобы рыбаки могли обмениваться сообщениями, делиться историями с рыбалки и комментировать эти истории, а также добавить пользователя в друзья.
В первой части проекта были реализованные следующие функции: 1. Регистрация, авторизация. 2 Редактировать профиль. 3. Поиск пользователя. 4. Список друзей (добавить или удалить). 3. Истории с рыбалки 4. Обмен сообщениями 5. Настройки.
Для разработки социальной сети использовался язык программирования php, jquery, jquery mobile, javascript. Динамические функции были реализованы с помощью javascript, jquery. Дизайн использовался от jquery mobile.
Сложность проекта состоит в алгоритмах. Например, для обмена сообщениями между пользователями используется одна таблица базы данных. В эту таблицу добавляются два сообщения (для получателя и отправителя). Когда пользователь удаляет сообщение, он удаляет только сообщение принадлежащие ему. Поэтому при добавлении сообщений создается дополнительная идентификация : для отправителя 0, для получателя 1. Такой способ позволяет избежать создания таблиц для каждого пользователя.
Кому интересно, ссылка на проект: oleksandrustymenko.net.ua/fish
20 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВасиль Гнатович. Щас всі випиваєм по другій і расказуєм охотничі і рибальські історії! ©
Есть функция видения издалека?
еще вариант по оптимизации хранения чет-месседжей:
2 таблицы:
1. Чаты [id aka chat_id, ID обоих юзеров и что-то служебное можно тут хранить]
2. Сообщения [id aka message_id, chat_id внешний ключ, sender_id — кто именно отправил сообщение, sender_flag, recepient_flag, all_flag — если это чат рум, а не 2 чувака] — тут посл. 3 параметры — булеаны, и по ним решаем кому показываем сообщение, одному, второму, и всем в чате с таким ID
И еще по желанию можно запилить табличку UnreadMessages, куда например триггером на create в таблицу сообщения класть месседж_ид и юзер_ид и флаг_прочитано. И потом по юзеркому входу в соотв чат-рум/прокрутку на дно/итд помечать флаг_прочитано.
Как минимум уйдете от дублирования сообщений.
.
Будь-які недоліки — система тестова.
Чому тільки мобільні — система тестова.
Для чого це і чим відрізняється від групи в фейсбуку — ну це тестова система.
Ок, ясно. Просто реклама пет проекту
Господи исусе!
Наскільки я розумію, це колонка IsDeleted, де значення 1 означає «видалено». Якщо вірно розумію, що означає «додаткова ідентифікація». Згідний з коментом нижче, що в одній таблиці зберігати всю переписку користувачів — це ок тільки для погратися.
Ну почему же? Весьма годно. Особенно когда появятся групповые чаты (а они появятся). Тогда просто в эту табличку надо будет добавить полей (ой, а сколько именно?) по количеству участвующих в чатике персонажей — и сразу наступит Щастье.
Зачем спойлер выложил? Люди ж хотят знать кто убийца
Лучше ID отправителя, ID получателя, сообщение. Не благодарите.
первый вопрос, который возникает: «кому это надо? и зачем?»
может лучше иметь отдельную таблицу связывающую людей и сообщения? Зачем дублировать сообщения?
почему именно мобильная версия?
Нет подтверждения по имейлу. Можно написать скрипт который 100500 мильенов акаунтов вам в базу добавит.
Зачем Вы это на ДОУ опубликовали?
Чувак просто уже написал все порталы, делать нечего.
Это тестовая система, а не коммерческий продукт. Для обмена сообщения можно использовать различные варианты. Здесь это не имеет смысла. Регистрация создана максимально просто, чтобы люди могли посмотреть функции сети.
не луснет? Если это прям таки социальная сеть то там не шардированный RDBMS это заведомо дохлый выбор. Вон таже rocksDB на 2 тб таблице подтормаживает на SSD. Это вам в bigTable/Datatstore/PubSub/Cassandra и т.д. и совершенно другая архитектура.
да, луснет. это тестовая система. где отображены различные функции. Нет смысла делать оптимизацию базы данных.
Какие ещё 2 ТБ, какая ещё Кассандра? Чувак может просто записывать в json-файл всё своё хозяйство, и этого будет вполне достаточно до конца существования проекта.
Для существования достаточно одного HTML файла
тогда мокапов достаточно
>>соцсеть.<< - этого достаточно )