ashein.comпортфолио

 

Mine / быв. Everthing I Have

08.01.2014 в 19:56 • ред. 08.01.2014 в 20:04, вер. 1 • без комментариев
Ресурс доступен по адресу mine.is
тэги - ownership, site, social, things
Скриншот проекта
Скриншот проекта
Скриншот проекта
Скриншот проекта
Скриншот проекта
Скриншот проекта

Идея

В конце 2009 года П. Грин натолкнулся на картину Саймона Эванса Everything I Have, которая дала основу для будущей идеи. Как и следует из названия, на картине изображено большое количество различных аккуратно расположенных вещей. Было бы неплохо, если бы всякий мог собрать свой собственный список и при помощи интуитивного инструмента отобразить свои вещи в интерактивном режиме.

Несколькими месяцами позже, в начале 2010 года, Петр закончил составление электронного документа, в котором он описывает видение нового сайта. В основе его лежит большой древовидный список вещей, который отображается ветвящейся структурой в виде картинок вокруг ростового изображения пользователя. Так родилась идея "дерева вещей".

Изначально файл-презентация, созданная Петром, была нацелена на привлечение внимания возможного инвестора. Позже, однако, Петр посвятил своего друга В. Шумского в свою идею, и тот нашел ее привлекательной. Владимир обладал навыком создания Flash-приложений и предложил сделать рабочий прототип дерева вещей в этом формате. А поскольку ваш покорный слуга мог заняться техническими аспектами проекта, то было решено не дожидаться инвестора для запуска начального этапа, а реализовывать идею своими силами.

Первая публичная версия проекта называлась так же, как и картина, послужившая идейной базой. До февраля 2012 года сайт работал под именем Everything I Have, после чего сменил название на более короткое Mine и переселился с компактного домена eih.me на чуть менее компактный mine.is.

Возможности

Первая версия сайта была посвящена разработке основного функционала, на котором строится данный проект. Последующие изменения в большей степени затрагивали интерфейс сайта и были направлены на удержание пользователя на данном ресурсе посредством предоставления более интересной для того или иного человека информации.

В контексте вещей

  • Поскольку идея проекта строится вокруг обладания вещами, то сайт имеет большую базу данных абстрактных вещей. Эти вещи никому не принадлежат, на их основе пользователи добавляют вещи в свой "инвентарь". Если человек не может найти интересующую вещь на сайте, то он добавляет вещь вручную, и она одновременно появляется как в общей базе, так и в инвентаре данного пользователя.
  • "Инвентарь" пользователя – список вещей, которые есть у этого пользователя. У каждой вещи есть своя вещь-"родитель" в главной базе сайта, но вещи пользователя можно легко персонализировать: сменить картинку, переименовать, дать собственное описание, проставить теги, добавить связанное с ней обновление и т.д. Добавить в свой список новую вещь можно разными способами:
    • В результате поиска по базе данных сайта при помощи удобного поискового инструмента;
    • Наткнувшись на интересную вещь в процессе просмотра той или иной новостной ленты;
    • Добавив вещь с нуля вручную.
  • Все вещи пользователя показываются в виде большого ветвящегося дерева вещей. Это дерево можно свободно редактировать, перемещая вещи в отдельные ветви, что позволяет группировать вещи по необходимым критериям. Вещи можно также вращать и масштабировать для придания желаемого акцента и важности, или просто забавы ради.
  • Когда пользователь добавляет вещь в свой список, он также автоматически присоединяется к клубу владельцев данной вещи и получает обновления по нему в своих новостных лентах.
  • У вещей есть показатель популярности, от которой зависит положение той или иной вещи в списках. Для общей, абстрактной вещи популярность высчитывается сообразно количеству таких вещей, которые были добавлены пользователями в свои списки. Для вещи пользователя популярность зависит от количества эмоций "мне нравится" и "завидую", которые были выражены в ее отношении.

В контексте пользователей

  • Легкая и быстрая регистрация через Facebook (через другие соцсети – позже), либо классическая регистрация с использованием электронной почты.
  • Пользователи могут подписаться на того или иного человека, что формирует социальный граф. Подписка позволяет следить за обновлениями у пользователей через ряд новостных лент. Существует несколько способов найти человека для подписки:
    • Можно воспользоваться поиском друзей из других социальных сетей;
    • Сайт может предложить интересных пользователей с совпадающими предпочтениями в вещах;
    • На любого встреченного пользователя, который показался интересным, естественно, можно подписаться. Если нужно найти кого-то конкретного, то можно воспользоваться поисковым инструментом.
  • У каждого пользователя есть свой рейтинг, который, в свою очередь, определяет уровень пользователя. Чем выше рейтинг, тем выше в списках этот пользователь выводится, а более высокие уровни открывают дополнительные функции на сайте. Рейтинг пользователя высчитывается на основе:
    • Количества вещей, которыми пользователь владеет;
    • Количества добавленных в общую базу вещей, которых там раньше не было;
    • Числа людей, которые подписались на обновления пользователя;
    • Числа эмоций "мне нравится" и "завидую", которые были выражены в отношении вещей, которыми пользователь владеет.
  • Основные пользовательские действия также можно публиковать в Facebook, например: появление новых вещей в инвентаре, простановку эмоций касательно других вещей.

Просмотр обновлений

На сайте происходит ряд разных событий, и пользователям нужны соответствующие инструменты, чтобы оставаться в курсе происходящего с ними, с их вещами и теми, на кого они подписаны.

  • Система почтовых уведомлений используется для оповещения пользователей о более важных событиях, например: появление новых подписчиков, новых владельцев редкой вещи, которой пользователь обладает.
  • Новостная лента общего назначения – REC – используется для оповещения об общих событиях и трендах на сайте: какие вещи более популярны сейчас, кто является самым активным пользователем, какие бренды чаще встречаются на сайте и т.д.
  • Дайджест-лента служит отправной точкой для просмотра обновлений, связанных с вещами пользователя, и показывает комментарии, эмоции и прочие действия, которые кто-то совершил в отношении вещей пользователя; кто добавил редкие вещи, которые есть у пользователя; кто решил подписаться на данного пользователя и т.д.
  • Новостная лента показывает события, которые обычно не имеют прямого отношения к пользователю, а относятся к тем, на кого пользователь подписан. Здесь можно увидеть новые вещи, которые добавляют эти пользователи, новые записи о вещах этих пользователей, их эмоции относительно других вещей и проч.

Следует заметить, что некоторые функции сайта на момент написания данного текста работают в тестовом режиме и еще не были включены в релиз.

Обязанности

  • Структура базы данных, внутренняя структура сайта;
  • Запуск, наладка и поддержка серверов, включая администрирование ряда системных служб. Проект, однако, не достиг того уровня, на котором начинаются проблемы с масштабированием и необходимо несколько серверов.
  • Интеграция со сторонними службами – в основном касается социальных сетей (Facebook, Open Graph API).
  • Переход на использование Git для упрощения работ по разработке и обновлению проекта. Обучение работе с этой системой.
  • Весь серверный код;
  • Создание API для сайта;
  • Подавляющая часть клиентского кода сайта с использованием упомянутого выше интерфейса;
  • Создание внутренних инструментов сбора статистики для принятия решений;
  • Командная работа и принятие стратегических решений в прошлом.

В целом спектр обязанностей покрывает все части разработки, кроме концептуального дизайна, верстки с нуля и Flash.

Техническая информация

  • API, созданный для этого проекта, представляет собой смесь старых методов собственного формата и более современных конечных точек по RESTful модели. Старые методы также планируется обновить до современного формата с JSON-энкапсуляцией. На данный момент проект насчитывает более 50 методов и конечных точек в этом интерфейсе.
  • Сайт использует кеширующую службу Memcache для уменьшения нагрузки. В основном кешируются общие новостные ленты, а также ряд более тяжелых API-методов. Кеширование также используется на более низком уровне в системных элементах сайта.
  • Полнотекстовый поиск по базе вещей производится с помощью полнотекстовой поисковой машины Sphinx.
  • Для сайта в рамках системы рейтингов была также разработана и система достижений, однако она практически не используется. Три пользовательских уровня по сути своей и являются этими достижениями.
  • Проект подвергался так называемому "хаброэффекту": после размещения на сайте habrahabr.ru записи о проекте трафик сайта увеличился где-то на два порядка. В большинстве случаев проекты, которые попадают под этот эффект, выходят из строя как при DoS-атаке. Однако, сервер сайта справился с наплывом несмотря на то, что сервер был всего-лишь виртуальным выделенным с 256Mb RAM от немецкой компании Hetzner.