Как устроен bizwood.ru, часть 1
Apr. 14th, 2011 07:20 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Бизвуд ещё вовсю делается, но об основных моментах уже вполне можно писать. Извольте.
Идея Бизвуда мне пришла в голову чуть меньше двух лет назад, весной. Тогда к нам в офис с небольшим промежутком времени пришли два предпринимателя – один строил дома из лиственницы и жаловался, что возит её из Сибири, а второй – что не знает, куда эту лиственницу продать. Между ними при этом было километров двести – и они друг о друге ничего не знали. И узнать им было неоткуда.
Собственно, идея очевидна – сделать торговую площадку. Я порылся в сети и понял что рынок пуст (имеющиеся торговые площадки все страдали огораживанием и закрытостью). Фичи в первом соображении были такие:
- все предложения с чёткой ценой
- возможность голосования и рейтингования за предложение (типа отзывов на Я-маркете)
- геотэггинг – возможность отбора предложений по удалённости
- оплата – за строчку в месяц
- легкий поиск без всякой регистрации
Я сделал вкладку в 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
Date: 2011-04-14 03:29 am (UTC)Хорошо рассказываешь. Вообще мне нравится твой UI. На запад не хочешь?
no subject
Date: 2011-04-14 03:39 am (UTC)Теоретически хочу -- больше возможностей. Но я хочу на своих условиях, а не на типовых условиях работодателей.
no subject
Date: 2011-04-14 03:49 am (UTC)Ты рисуешь очень все в струе, но по-другому. Продолжай, не скатись в техподдержку.