Как устроен bizwood.ru, часть 1
Бизвуд ещё вовсю делается, но об основных моментах уже вполне можно писать. Извольте.
Идея Бизвуда мне пришла в голову чуть меньше двух лет назад, весной. Тогда к нам в офис с небольшим промежутком времени пришли два предпринимателя – один строил дома из лиственницы и жаловался, что возит её из Сибири, а второй – что не знает, куда эту лиственницу продать. Между ними при этом было километров двести – и они друг о друге ничего не знали. И узнать им было неоткуда.
Собственно, идея очевидна – сделать торговую площадку. Я порылся в сети и понял что рынок пуст (имеющиеся торговые площадки все страдали огораживанием и закрытостью). Фичи в первом соображении были такие:
- все предложения с чёткой ценой
- возможность голосования и рейтингования за предложение (типа отзывов на Я-маркете)
- геотэггинг – возможность отбора предложений по удалённости
- оплата – за строчку в месяц
- легкий поиск без всякой регистрации
Я сделал вкладку в OneNote и нарисовал первый черновичок (датирован 25 мая 2009, явно под влиянием Я-маркета):
Мы с Леной пообсуждали это – и я на какое-то время про идею забыл.
Вернулся я к идее уже поздней осенью – зарегистрировал домен и сел подбирать платформу, имея в голове довольно смутные предположения, что же я от неё вообще хочу.
Платформа всё не находилась под это подходящая, даже под смутные предположения, и я сделал подход с другой стороны. Начал рисовать. Второй подход к снаряду, абсолютно идиотский, выглядит так:
Примерно тогда же выписались уже гораздо более чётко фичи, что я хочу. Главные добавки были такие:
- каналы связи в провинции узкие, поэтому всё должно работать очень быстро – значит нужен AJAX
- для нормального отбора и поиска нужны разные представления для разных типов продукции (скажем, критерии отбора домов и досок совершенно разные)
- делать навороченный отбор как в Я-маркете не надо – люди так не ищут
Стало понятно, что готовой платформы нет. Даже серверного фреймворка, приемлемо покрывающего мои запросы, нет.Также стало понятно, что при имеющихся скиллах мне самому проект не провернуть, а нанимать и управлять командой программеров нет ни времени, ни денег.
И я решил серьёзно прокачать скиллы веб-разработчика. Вселенная, как известно, изобильна – в ответ на моё желание мне повалились небольшие и разные проекты, на которых можно было вполне поточить зубки.
Первым был zlobot.ru. После него стало понятно, что если я не буду применять какую-то библиотеку для отображения, я просто погрязну в интерфейсе. Пришлось изучить несколько библиотек и я остановился на jQuery. Не из соображений скорости и фич – тогда и побыстрее, и побогаче были фреймворки, а из соображений темпов развития библиотеки. Я не ошибся – сейчас жэкваери уделывает всех.
Потом стало понятно, что у меня существенные пробелы с организацией серверной части. То-есть, я довольно смутно понимал, как организовать эффективное хранение, поиск и выборку. Пришлось много читать.
Как выяснилось, потенциально highload-системы устроены совсем иначе, чем я себе представлял. Например, стало ясно, что упрощать себе жизнь и делать запросы к базе с использованием JOIN – это нэ. Надо изначально проектировать систему так, чтобы по-возможности избегать джоинов и всяких таких потенциально медленных штук.
Потом встал вопрос биллинга – тоже пришлось много читать.
Потом встал вопрос сериализации данных для передачи – как раз примерно тогда я сделал выбор в сторону JSON, а не XML. Несмотря на проработанность XML-технологий и мой огромный опыт в их использовании (на сегодня – почти 10 лет), XML для транспортных целей не подходит – на коротких данных он избыточен, слишком много разметки.
Пришлось изучать технологии, связанные с JSON.
Потом мне стало понятно, что будущее – за управление пальцами. Поэтому все мои подходы к дизайну многоуровневых пользовательских интерфейсов с навигацией, завязанной на выбор из дропдаунов, полное говно.
И я стал их пересматривать. Первый пробный камень – Калькулятор на наш сайтег (это уже май 2010). Вот про него: http://ermouth.livejournal.com/435471.html До этого я писал калькуляторы, которые выглядели примерно так (это 2005 год):
На мои новые соображения по дизайну пользовательских интерфейсов под пальцы изобильная вселенная откликнулась появлением Макса Немудрого с предложением написать онлайн-калькулятор для его новой типографии. Как говорится, почувствуйте разницу:
Главный момент здесь – никаких дропдаунов, чекбоксов и радио-баттонов, они все заменены на псевдолинки, в которые удобно тыкать пальцем (ну и они требуют одного нажатия, а не двух как дропдауны). Ещё момент – типовые значения рядом с полями ввода (см. поле для ввода тиража). И ещё момент – динамически обновляющаяся спецификация сразу под названием, которая позволяет понять что это за продукт, не просматривая весь интерфейс. Я такое и раньше применял – но не в публичных проектах.
Под эту считалку у меня написалась бета-версия новая библиотечки, которая рендерит интерфейс по JSON-описанию. Сейчас я её с модификациями использую повсеместно.
На сегодня всё, продолжение будет.
no subject
Хорошо рассказываешь. Вообще мне нравится твой UI. На запад не хочешь?
(no subject)
(no subject)
no subject
JOIN'ы плохо, да. Вообще, в универах учат, как нормально нормализировать базу. В реальной работе нужно в точности обратное знание :) Как правильно денормализировать :)
no subject
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
no subject
no subject
Как же я отвык от них. Какой ужас. Т.е. вместо того, чтобы пробежаться глазами по содержимому и принять решение, читать внимательно или нет, читателю нужно рассчитывать, что автор сам позаботился о том, чтобы самое интересное *для тебя* вынести в первые пару абзацев, а потом нужно принять чёткое решение и кликнуть или не кликнуть... бррр.
Нет, я не против катов, на здоровье. Пока у меня включено авторазворачивание, всё отлично :)
no subject
а чекбоксы и радиогрупы чем не устроили? в общий стиль не вписались?
(no subject)