ermouth: (Default)
[personal profile] ermouth

Когда я взялся за новый сайт Архангельской Формозы, – это было в начале ноября, – мне нужно было решить, на чём сфокусировать свои дизайнерские и организационно-инженерные скиллы. Вводные были примерно такие:

  • до НГ надо сделать публичную бету с основным функционалом
  • это должен быть Битрикс – пожелание заказчика
  • есть база товаров, выгружаемая из 1С не последней версии, база актуальна – на ней работают офлайновые магазины
  • база – это очень неравновесное дерево (см первые два уровня на старом сайте и попробуйте чёнить понять) с кучей проблем:
    • некоторые маловажные группы товаров находятся на самом верхнем уровне
    • некоторые важные группы распределены по нескольким веткам
    • другие важные группы закопаны очень глубоко (2-3 уровень вложенности)
    • логика вложений групп по большому счёту для покупателя совершенно неочевидна
  • база не атрибутирована и не категоризирована – в каждой строке базы есть только описание и цена, никаких полей типа “призводитель” или там “объем памяти” или “диагональ”
  • в описаниях полный разнобой и каша
  • привести исходную базу к единообразным описаниям не получится – там в районе 9000 наименований, да и не ясно было, каким должно быть это единообразие
  • атрибутировать руками базу не получится: 1С-бухгалтерия – это чудовищное интерфейсное говно, на задание одного атрибута товара нужно сделать в районе 10 кликов и выборов из дропдаунов, а атрибутов может быть несколько (диагональ там, цвет, то-сё)

Чтобы было понятно, какие там описания товаров в базе – вот три строчки со старого сайта:

image

Это причём из одного раздела. Насколько различаются описания из разных разделов, лучше не знать.

Всё это совершенно не мешает Формозе быть вторым по объемам компьютерным ритейлом на Северо-западе РФ – потому что продажи идут через консультантов в офлайновых магазинах, потому что цены низкие, потому что большой ассортимент и логистика отлажена. Но понятно, что сайт, организованный по таким принципам, обречён.

Как я это решал (многабукф, неподготовленному читателю будет сложно :) …

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

Первый подход к снаряду – попробовать переразбить базу при импорте из 1С на сайт – отвалился при самой грубой оценке трудозатрат.

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

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

В третьих, такого рода парсеры – это всегда куча регулярных выражений, которые трудно отлаживаются и чрезвычайно прожорливы до процессорного времени и памяти. Что резко повышало требования к аппаратному обеспечению сервера в момент импорта базы из 1С.

И я решил поступить своим излюбленным способом – оставить за сервером только выдачу сырых данных, а всё разбиение на категории и атрибуты (то, что я тегами называю), вынести на сторону клиента. Пусть браузеры работают, а сервер отдыхает. Ну и в браузере же делается приведение описание в читаемый вид – то есть вот такое вот…

image

прямо в браузере становится вот таким (тоже не ах, но куда читаемей):

image

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

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

Вообще, такой подход большинством веб-разработчиков почитается за полную ересь. Исключительно из твердолобости, на мой взгляд, кстати.

Также часто воспринимается как ересь и отказ от человекопонятных урлов (у меня просто хэши, в гробу я видел урлы типа /catalog/aksessuari-dlya-planshetnikov/).

Ещё «ереси»:

  • разработка проекта вообще без техзадания (я использую vision-based подход, “жирное” прототипирование и всю мощь русского языка как для описания, так и для управления)
  • agile-подход с элементами scrum (без присущего скрам-подходу идиотизма типа митингов в фиксированное время, приколочнной частоты спринтов и тп)
  • пользовательское бета-тестирование с публичной руганью недоработок
  • доработки прямо на боевом сайте
  • полное игнорирование seo- и “маркетинговых” подходов к структурированию контента.

Ну и так далее. Все эти ереси вместе сократили время разработки до 5 недель (с моей первоначальной пессимистичной оценки 4 месяца) и бюджет примерно раз в 10.

Мой основной принцип – надо делать так, чтобы было удобно пользователю. А как это сделано технически и организационно никого не должно волновать. Главное не пытаться спроектировать и сделать продукт сразу, а двигаться аккуратными итерациями.

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

Такие вот пирожки. Остальное – дело техники и команды отличных инженеров.

Date: 2011-12-21 01:21 am (UTC)
From: [identity profile] rezkiy.livejournal.com
>> на задание одного атрибута товара нужно сделать в районе
>> 10 кликов и выборов из дропдаунов, а атрибутов может быть
>> несколько (диагональ там, цвет, то-сё)

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

Date: 2011-12-21 01:27 am (UTC)
From: [identity profile] ermouth.livejournal.com
я бы нажатия на кнопки не сильно отличал от кликов. и говорю я не ерунду -- за каждое слово отвечаю.

я написал, что версия 1С -- не последняя, для реалий тех лет там нормально всё сделано.

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

Date: 2011-12-21 01:36 am (UTC)
From: [identity profile] rezkiy.livejournal.com
Семерка что ли?

надо как-то таги-то вносить. Кнопками быстрее чем кликами.

Date: 2011-12-21 01:43 am (UTC)
From: [identity profile] ermouth.livejournal.com
ну вот и прикинь, сколько времени займёт внесение тэгов к 9000+ товаров. и прикинь ещё, какие под это люди нужны, с учётом специализации людей в отделе закупок по направлениям.

то-есть, это нужно делать, но ставить в зависимость от этого запуск нового сайта -- это очень хреновая идея.

Date: 2011-12-21 07:18 am (UTC)
From: [identity profile] morfizm.livejournal.com
"то-есть, это нужно делать"

Я не уверен, что это вообще нужно делать.
Т.е. смотри. Я ввёл в формозу "ноутбук 2GB" и нашёл много ноутбуков как с 2GB RAM, так и с 2GB видео-RAM. Единственное, чего не хватает - это чтобы я кликнул на "GT555M" и понял, что это модель видеокарты (сейчас пришлось гуглить). Но для такого сценария всё ещё не очень нужны тэги - можно просто сгенерить словарик терминов и автозаменять слова на ссылки простым full text поиском.

Date: 2011-12-21 07:20 am (UTC)
From: [identity profile] morfizm.livejournal.com
Я ввёл в формозу "ноутбук 2GB" и нашёл много ноутбуков как с 2GB RAM, так и с 2GB видео-RAM.

Мой поинт что "это хорошо". Меня как потенциального потребителя совершенно не интересует загромождённый UI, в котором я смогу специально сказать, что 2GB это именно RAM, а не видео, или наоборот. Пусть будут в перемешку.

Date: 2011-12-21 06:56 am (UTC)
From: [identity profile] driker.livejournal.com
почему формозе так принципеален битрикс? нормалды получилось докатать и будет ок)

Date: 2011-12-21 07:34 am (UTC)
From: [identity profile] morfizm.livejournal.com
Кстати, идея, которую можно подкинуть заказчику: ограничить ассортимент. скажем, Costco (супер-мега сеть полу-оптовых магазинов для частных лиц) даёт всем своим магазинам директиву: не более 4000 товаров на магазин. Уверен, что это офигенно упрощает жизнь и оптимизирует процессы. Менеджеру магазина приходится регулярно прочёсывать инвентарь и удалять барахло, думать над каждой вещью, легче организовывать поиск, легче печать рекламу, легче проводить инвентаризацию, и т.п. Для конечного потребителя это плюс: все товары так или иначе имеют смысл, каждая категория представлена одним или несколькими (но не десятками) наименований, причём это mainstream немножко в сторону higher-end, легче выбирать, легче "довериться" магазину и т.п.

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

Date: 2011-12-21 07:39 am (UTC)
From: [identity profile] morfizm.livejournal.com
"Пусть будет 10 сборок.". Причём не просто 10 сборок, а ещё назвать их как-нибудь по-человечески, вроде "Формоза Огненный Бласт", "Формоза Тигр", "Формоза Верный Пёс" и "Формоза Зайчонок". Соответственно, Огненный Бласт - дорогая сборка для геймеров и грайфических дизайнеров, Тигр - high-end сборка для инженеров и бизнесменов, Верный Пёс - обычная сборка для среднего класса (бухгалтерия, делопроизводство), и Зайчонок - дешёвая сборка для интернета и фильмов по-минимуму. Всё интуитивно понятно, customers могут обмениваться информацией, сравнивать у кого круче - просто назвав наименование класса, а не перечисляя миллион параметров, легче выбирать, легче понять, за что платятся деньги. Можно несколько flavors каждого вида, типа "Зайчонок Большие Уши" будет версия "Зайчонка" с широкоформатным монитором =)

Date: 2011-12-21 08:29 am (UTC)
From: [identity profile] kipyatkoff.livejournal.com
ахаххах, зачёт за креатив, бро! )))

Date: 2011-12-21 09:10 am (UTC)
From: [identity profile] ermouth.livejournal.com
бггг )

Date: 2011-12-21 12:27 pm (UTC)
From: [identity profile] tvguide-khv.livejournal.com
во а как там у вас с дальневоосточным тиром в виде ДНС?

Date: 2011-12-21 05:51 pm (UTC)
From: [identity profile] ktototam-lj.livejournal.com
В первую очередь, я бы посадил специально обученную девочку на добавление картинки к каждой позиции. Магазин "вебдванольненький", с милой псевдо-полочкой с тенюшечками, а на полочке в большинстве случаев только текстовый блок. Выбрать желаемый цвет можно, а вот сразу посмотреть, как будет выглядеть розовая няшечка не дают ) Хотя думаю и без меня тут все понимают важность картинок в интернет-магазине и скоро все будет.

Date: 2011-12-21 07:07 pm (UTC)
From: [identity profile] ermouth.livejournal.com
мы, заметь, сделали ссылочку, по которой в 2/3 случаев картинку можно найти в один клик )

это какбе говорит о том, что важность проблемы вполне понятна и пока предложено паллиативное решение.

Date: 2011-12-21 07:12 pm (UTC)
From: [identity profile] ktototam-lj.livejournal.com
Заметил, оценил, но побыть КО не удержался, бгг )

Date: 2011-12-23 06:22 am (UTC)
From: [identity profile] x-fox.livejournal.com
Теперь понятно, почему на андройде это еле ворочается. Есть подозрение, что для просмотра сайтов, спроектированных подобным образом, эффективные батарейки изобретут не очень скоро.

Date: 2011-12-23 08:44 am (UTC)
From: [identity profile] ermouth.livejournal.com
Миша, не пихли про еле ворочается. Проверялось всё на ондроеде, все ок, и со скоростью и с батарейкой. Уж про батарейку то вообще хуйня.

Date: 2011-12-23 09:41 am (UTC)
From: [identity profile] x-fox.livejournal.com
Дим, а какой смысл мне писать неправду?
Как на штатном браузере, так и на жопере, через вайфай, смотрящий в интернет каналом 8 мбит, полное устаканивание разметки с появлением верхнего блока с параметрами отбора происходит через 5-10 сек. В среднем около 6. Для меня это сильно много дохуя, плюс эпилептически дёргающаяся разметка после полной загрузки странички (прогресс-бар исчез) раздражает очень сильно. Я на такие сайты стараюсь не ходить вообще.
Я понимаю, что компромисс, то-сё, но у тебя же "пользовательское бета-тестирование с публичной руганью недоработок" — пожалуйста, вот мой вклад в оное )

Date: 2011-12-23 09:44 am (UTC)
From: [identity profile] ermouth.livejournal.com
тогда, миша, скажи что у тебя за ондроед и что за железяка под ним. а заодно и раздел скажи, куда ты заходишь.

Date: 2011-12-23 10:17 am (UTC)
From: [identity profile] x-fox.livejournal.com
Android 2.3.5
Wildfire S
Разделы — сейчас перепроверил "электронные книги", "ноутбуки".
На десктопе, кстати что-то странное в FF происходит — открываю "ноутбуки", доматываю до конца страницы, нажимаю кнопку "назад", и попадаю не в корень каталога, откуда и пришёл, а в начало страницы "ноутбуки" без её перезагрузки.

Date: 2011-12-23 11:50 am (UTC)
From: [identity profile] ermouth.livejournal.com
по скорости -- твой девайс примерно в нижнем 1% по производительности среди статистики посещаемости старого сайта, что у меня есть. оно под такие девайсы и не затачивалось )

хотя ты меня на интересную мысль натолкнул по поводу таких устройств. сделаю проверку на производительность клиента и просто не буду гасить тэги в зависимости от уже выбранных -- это самая дорогая операция.

по ФФ не смог воспроизвести.

Date: 2012-03-13 05:01 pm (UTC)
From: [identity profile] ermouth.livejournal.com
Миш, если у тебя ещё тот-же Андроид, почекай плз скорость отбора по ссылке http://formoza29.ru/vovbddgd/.

Мы примерно в 20 раз ускорили отбор и перерисовку, приемлемо ли стало на андроиде?

Date: 2012-03-13 06:09 pm (UTC)
From: [identity profile] x-fox.livejournal.com
В штатном браузере ок, раскрытие разметки около секунды, перестройка списка после тыка в Леново не более двух секунд. В последней Жопере ад и содом: раскрытие разметки более 10 сек., перестройка списка 8-10 сек. Ну и возврат назад по кнопке <= не отрабатывается корректно.

Date: 2012-03-13 06:37 pm (UTC)
From: [identity profile] ermouth.livejournal.com
Билять. У меня вот чёто во всех жоперах хорошо.

Хистори-бэк да, сделаем. Никто не просит -- мы и не торопимся.

Я щас пост напишу, про то, как ускорение делалось. Охуеть какие чудеса в мире яваскрипта есть.

Profile

ermouth: (Default)
ermouth

November 2021

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 16th, 2025 10:33 pm
Powered by Dreamwidth Studios