ermouth: (Default)
ermouth ([personal profile] ermouth) wrote2011-04-14 07:20 am
Entry tags:

Как устроен bizwood.ru, часть 1

Бизвуд ещё вовсю делается, но об основных моментах уже вполне можно писать. Извольте.

Идея Бизвуда мне пришла в голову чуть меньше двух лет назад, весной. Тогда к нам в офис с небольшим промежутком времени пришли два предпринимателя – один строил дома из лиственницы и жаловался, что возит её из Сибири, а второй – что не знает, куда эту лиственницу продать. Между ними при этом было километров двести – и они друг о друге ничего не знали. И узнать им было неоткуда.

Собственно, идея очевидна – сделать торговую площадку. Я порылся в сети и понял что рынок пуст (имеющиеся торговые площадки все страдали огораживанием и закрытостью). Фичи в первом соображении были такие:

  • все предложения с чёткой ценой
  • возможность голосования и рейтингования за предложение (типа отзывов на Я-маркете)
  • геотэггинг – возможность отбора предложений по удалённости
  • оплата – за строчку в месяц
  • легкий поиск без всякой регистрации

Я сделал вкладку в OneNote и нарисовал первый черновичок (датирован 25 мая 2009, явно под влиянием Я-маркета):

image

Мы с Леной пообсуждали это – и я на какое-то время про идею забыл.

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

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

image

Примерно тогда же выписались уже гораздо более чётко фичи, что я хочу. Главные добавки были такие:

  • каналы связи в провинции узкие, поэтому всё должно работать очень быстро – значит нужен AJAX
  • для нормального отбора и поиска нужны разные представления для разных типов продукции (скажем, критерии отбора домов и досок совершенно разные)
  • делать навороченный отбор как в Я-маркете не надо – люди так не ищут

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

И я решил серьёзно прокачать скиллы веб-разработчика. Вселенная, как известно, изобильна – в ответ на моё желание мне повалились небольшие и разные проекты, на которых можно было вполне поточить зубки.

Первым был zlobot.ru. После него стало понятно, что если я не буду применять какую-то библиотеку для отображения, я просто погрязну в интерфейсе. Пришлось изучить несколько библиотек и я остановился на jQuery. Не из соображений скорости и фич – тогда и побыстрее, и побогаче были фреймворки, а из соображений темпов развития библиотеки. Я не ошибся – сейчас жэкваери уделывает всех.

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

Как выяснилось, потенциально highload-системы устроены совсем иначе, чем я себе представлял. Например, стало ясно, что упрощать себе жизнь и делать запросы к базе с использованием JOIN – это нэ. Надо изначально проектировать систему так, чтобы по-возможности избегать джоинов и всяких таких потенциально медленных штук.

Потом встал вопрос биллинга – тоже пришлось много читать.

Потом встал вопрос сериализации данных для передачи – как раз примерно тогда я сделал выбор в сторону JSON, а не XML. Несмотря на проработанность XML-технологий и мой огромный опыт в их использовании (на сегодня – почти 10 лет), XML для транспортных целей не подходит – на коротких данных он избыточен, слишком много разметки.

Пришлось изучать технологии, связанные с JSON.

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

И я стал их пересматривать. Первый пробный камень – Калькулятор на наш сайтег (это уже май 2010). Вот про него: http://ermouth.livejournal.com/435471.html До этого я писал калькуляторы, которые выглядели примерно так (это 2005 год):

image

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

image

Главный момент здесь – никаких дропдаунов, чекбоксов и радио-баттонов, они все заменены на псевдолинки, в которые удобно тыкать пальцем (ну и они требуют одного нажатия, а не двух как дропдауны). Ещё момент – типовые значения рядом с полями ввода (см. поле для ввода тиража). И ещё момент – динамически обновляющаяся спецификация сразу под названием, которая позволяет понять что это за продукт, не просматривая весь интерфейс. Я такое и раньше применял – но не в публичных проектах.

Под эту считалку у меня написалась бета-версия новая библиотечки, которая рендерит интерфейс по JSON-описанию. Сейчас я её с модификациями использую повсеместно.

На сегодня всё, продолжение будет.

[identity profile] rezkiy.livejournal.com 2011-04-14 03:29 am (UTC)(link)
Когда-то давно я рендерил веб-интерфейс на основе структуры сиквельный базы данных. Засасывал метаданные и вперед. Спецтаблица для хинтов, как рендерить.

Хорошо рассказываешь. Вообще мне нравится твой UI. На запад не хочешь?

[identity profile] morfizm.livejournal.com 2011-04-14 05:34 am (UTC)(link)
+1 to "Хорошо рассказываешь. Вообще мне нравится твой UI. На запад не хочешь?".

JOIN'ы плохо, да. Вообще, в универах учат, как нормально нормализировать базу. В реальной работе нужно в точности обратное знание :) Как правильно денормализировать :)

[identity profile] trubachev.livejournal.com 2011-04-14 06:53 am (UTC)(link)
Как потенциальные пользователи проект приняли?

[identity profile] trubachev.livejournal.com 2011-04-14 08:56 am (UTC)(link)
А почему не сделал сервис "Спрос"? Чтобы я оставил заявку на конкретный заказ, а поставщики сами меня нашли и сделали предложение.

[identity profile] 802-11.livejournal.com 2011-04-14 09:51 am (UTC)(link)
И мне очень нравятся твои интерфейсы и вообще подход к разработке сервисов. Есть чему у тебя поучиться на каждом проекте. Проектируй еще!

[identity profile] morfizm.livejournal.com 2011-04-14 11:06 am (UTC)(link)
Посмотрел твой пост, будучи случайно незалогиненным, т.е. без авторазворачивания катов. Оказывается у тебя кат! :)

Как же я отвык от них. Какой ужас. Т.е. вместо того, чтобы пробежаться глазами по содержимому и принять решение, читать внимательно или нет, читателю нужно рассчитывать, что автор сам позаботился о том, чтобы самое интересное *для тебя* вынести в первые пару абзацев, а потом нужно принять чёткое решение и кликнуть или не кликнуть... бррр.

Нет, я не против катов, на здоровье. Пока у меня включено авторазворачивание, всё отлично :)

[identity profile] mastre.livejournal.com 2011-04-15 04:46 am (UTC)(link)
отличная статья
а чекбоксы и радиогрупы чем не устроили? в общий стиль не вписались?