ermouth: (Default)
[personal profile] ermouth

Я присмотрелся к клону повнимательней – и по нему видно, что разработка происходит прямо сейчас.

Там любопытное происходит. Безымянный клонер делает все ошибки, которые я делал 8 лет назад, когда писал первую считалку. Я их разберу. (Дальше будет интересно только веб-деятелям и отчасти дизайнерам. Там довольно много.)

UTF8 vs CP1251

Юникод рулит. Когда я вижу такое вот, мне хочется блевать.

image

В силу того, что я из полиграфического дизайна, где культура типографики с вебом не сравнима, мне всегда нужны были правильные тире, кавычки и знаки умножения «–×–». Поэтому я никогда ничего не делал в cp1251. Мне вообще странно, что кто-то этим в вебе ещё пользуется.

Платформа vs быдлокодинг

Оригинал – типа как на liteprint.me или ermouth.com/bulatova/ – это по преимуществу javascript, который генерит html “на лету” по описанию полей считалки и формул взаимозависимостей.

То есть, вместо того, чтобы писать стопицот <div>’ов со стилями и навешивать ручками обработчики, я в специальную функцию отсылаю конструкцию типа

{qty: {value:”1”, label:”К-во”, type: ”int”, increment:”1”, min:”1”, max:”100”, postfix:”шт”, price:”this.value*5”, variants:[1,2,5,10]}}

и эта функция рисует мне поле ввода количества с кнопочками, единицами измерения и предопределенными вариантами количества рядом с полем ввода. Она навешивает на поле ввода все обработчики, чтобы цена (и другие зависимые поля, если есть) пересчитывались при каждом нажатии клавиш, а не только при потере фокуса.

Чувак, поглядев на мою считалку и на её код, видимо решил что это слишком сложно. И стал рисовать все эти стопицот дивов руками.

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

Итого.

У меня 4 зипованных запроса к серверу в сумме на 64 Кб – и две считалки уже работают и дальше грузят только картинки. К родному серверу запрос на 19 Кб, остальное с CDN.

У чувака – одна считалка на 200 Кб в 11 зипованных запросах. Все запросы к себе на сервер. Плюс у меня отдается статический код, а у чувака – ещё и два обращения к скриптам.

У меня добавление новой считалки в набор – это примерно +1…10 Кб, у чувака 30+ Кб. Время, полагаю, отличается примерно на порядок.

Итого, по кумулятивному показателю, кривей раз в 50 бгг

Это потому, что платформа всегда выигрывает. Я это понял в середине первой считалки, что я делал. Только описание у меня было тогда не в json-формате, а в xml.

Платформа предполагает обдумывание, а не бросок с места в карьер.

Придумывание vs сдирание

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

А когда показывают пальцем на сэмпл и говорят “братюня, мне надо вот так” – а думать неохота – появляется например вот такое (сначала оригинал, потом – клон).

image
image

То-есть, клонер скопировал компоновку, не понимая вообще зачем это всё. Жопа тут во всём, начиная с раскраски заканчивая этим “прово… Ещё…”. Причём чувак уже пишет букву ё, но не видит при этом, что по сути этими своими “1. Класс размещения” написал нумерованный список в строку. И ему не влом, что у него в одном предложении два двоеточия.

У меня тоже не айс, кста – мне было склонять под числительные лень. Но у меня и бета 0.1.

Вот кнопочки “плюс-минус” ещё, нопремер:

image image

Ну то-есть ясно где тут кто бгг. У меня сразу видно цифру, а только потом кнопки и рамку. И кнопки внесены в поле ввода – это место экономит и после поля ввода можно написать единицы измерения.

У чувака этот элемент управления сначала орёт “блиоооо, мой создатель первый раз в жизни сделал кнопки плюс-минус, и поэтому хуйнул их с пузырями, бевелом, тенью и градиентом, чтоб все видели как он ниибацца крут!!!!1111”. Потом длинная колбасина рамки (уголки – png-шки о_О). И только потом уже цифра. Безразмерная.

Или вот это image. То-есть, у меня тоже есть элемент управления с плюсиком, он добавляет в панель сбоку вариант расчёта. А тут плюсик поставлен просто из обезьянства, ну клон – чё уж.

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

Судя по характерно-беспомощному javascript-коду и именованиям констант в стиле DESC_ANNOUNCE_LEN, яваскрипт для чувака вообще не родной, он на чем-то типа php пишет. Да и jQuery тоже неродной – когда он подключен, код типа document.getElementById – это дрочево.

Писал бы себе форму классическими дропдаунами и чекбоксами с отправкой на сервер, было бы аккуратнее, короче и не так беспомощно. А тут типа сразу чувак в дамки решил.

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

Завершающий аккорд

Моя компоновка считалки специально заточена под тыканье и листание пальцами и намеренно напоминает компоновки соцсетей, от которых никто не ждёт, что они поместится по вертикали на один экран.

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

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

Не уважаю адски. Клон вышел недоношенный.

Date: 2011-08-25 01:01 am (UTC)
From: [identity profile] morfizm.livejournal.com
Если бы у меня произошло то же самое, мне, наверное, было бы лениво делать такой разбор полётов, т.к. я хорошо понимаю, во сколько (десятков, сотен, тысяч?) раз хуже нормального может быть говнокод и говнодизайн, но читать твой разбор было интересно :)

Про кнопочки - хорошо понимаю :) Когда я был маленький и в первый раз в жизни делал крутые UI контролы, они были задуманы, чтобы бросаться в глаза :) (Понятно, что если я сам писаю кипятком, то и все остальные будут просто счастливы заценить, не так ли? :)))

Date: 2011-08-25 01:23 am (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 Jun. 15th, 2025 01:46 pm
Powered by Dreamwidth Studios