bash.im ithappens.me zadolba.li

Веб-разработка

11242

Юзер — тоже человек

Дабы прекратить холивары об Ajax и поставить точку, предлагаю наконец-то взглянуть на корень проблем.

Ракеты Голдберга, которые не взлетают (или взлетают, но как-то криво и через известное место). Судя по описанию, имеется в виду случай самоутверждения. Самоутверждения программиста, который хотел попробовать всё новое. Или самоутверждения его начальства, которое хотело, чтобы было круче и новее, чем у всех.

Достаточно распространена практика, когда интерфейс проектируют либо те, кто его будет реализовывать, либо те, кто хочет заработать на нём денег. К сожалению, ни первые, ни вторые не имеют склонности к сопереживанию людям. Они называют их пользователями, юзверями, леммингами, представляя безликий портрет имбецила, который должен проглотить инструкцию и делать, как велел Верховный Жрец Разработки.

Кто же имеет склонность сопереживать людям? Дизайнеры. Не девочки с богатым внутренним миром, не отрешённые от мира социопаты, рисующие красивую графику, а прагматичные проектировщики взаимодействия с человеком, переживающие о людях, которым приходится пользоваться системой. Постарайтесь нас найти. Мы поможем вам решить задачу, используя любые технологии, без ущерба для людей.

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

11241

Ракеты Голдберга

Ракеты и лошадки, говорите?

Вот есть, допустим, сайт — справочник-поисковик по довольно большой базе данных. Работает очень просто: проставил галочки фильтра, нажал кнопку «Поиск», почитал результаты.

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

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

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

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

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

И зачем?

11228

Только поводья, только навоз

Ajax — это ново и модно? Коллеги, как бы это помягче сказать, вы слегка отстали от жизни. Термину Ajax уже более восьми лет, а ведь до изобретения красивого термина эту технику применяли уже несколько лет, а смежные — так целое десятилетие. За это время побороли детские болезни, связанные с историей браузера и получением ссылок на состояние, написали ряд отличных библиотек и выпустили сотни книг с описанием. Уже лет пять как сайты без Ajax воспринимаются не иначе как анахронизм: они сложнее в написании, поддержке, требуют больше ресурсов, неудобны и тормознуты. Да даже следующее поколение технологий связи — веб-сокеты и офлайновые хранилища — не писк моды, ведь уже появилась возможность браузерам связываться напрямую друг с другом и передавать, кроме текста, ещё и изображение со звуком.

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

Коллеги, не превращайтесь в старых пердунов, идите в ногу со временем. Я сам не прочь побрюзжать на ещё сырые технологии, которые пихают куда не надо в дань моде, но вижу разницу между «bleeding edge» и «мир давно и успешно пользуется, а я только недавно про эту штуку узнал».

11218

Я спросил у сервера, где мои картиночки

Ajax — это ново. Ajax — это ярко. Ajax — это очень красиво и даже в чём-то нанотехнологично. Но вот вопрос: зачем?

Стоял себе дом. Не самый красивый на свете дом, не Лувр с Эрмитажем, но вполне себе добротный и качественный. Функции дома этот дом честно выполнял на все 100%. Но наступило время перемен, и понеслось:

— А давайте теперь вместо лестниц сделаем эскалаторы. Ну и что, что они короче на пару ступеней? Недостающие метры зальём жидким стеклом и раскрасим, будет очень красиво.

— Окна? Что за каменный век! Мы повесим мониторы, на которые подадим картинку снаружи. От окон будет не отличить, зато ведь тех-но-ло-ги-и!

— Отопление водой? Пфф! Ставим реактор! Ядерный. Два. Три. Зачем три? Бюджет позволяет.

— Лампочки Ильича? Так строили при царе Горохе! А мы давайте светлячков наловим и на клей посадим прямо на потолок. В дальнейшем обучим их реагировать на входящего человека и светиться в нужное время. Что? Уже есть датчики движения? Ну вы даёте… Мы тут на передовом крае биоинженерии, светлячков тренируем, а вы со своими датчиками прёте!

— Что б такого ещё… Ой! Ай! Идея! Давайте во внешней стене — бассейн. Вертикальный! Ась? Вода будет вытекать? Ну, может, и будет. Кто её знает, воду эту. Вертикальный бассейн одобрил лично шеф, так что делаем.

— Во-о-от, заодно и ниспадающий фонтан получился. Красиво? А то! Технологично? Ещё бы: обратный внос воды осуществляется специальным скриптом «Марфа Никитична». Бойкая восьминогая старушка-робот на паровом ходу собирает воду в кадушку и тащит её наверх. Почему робот, почему восьминогая, почему, наконец, «Марфа»? Этого не знает даже вездесущий тимлид. Но если скрипт будет хоть чуточку другим, эскалаторы начинают танцевать буги-вуги…

Дорогие разработчики и переработчики старых добрых сайтов на Ajax! Узнали себя и свои переработанные в угоду моде ресурсы? Да, получается красиво и современно, но в ряде случаев — совершенно не нужно.

11216

Тончайший баланс костылей и затычек

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

Фирма в числе прочего занимается продажей туров в Азию. Есть сайт c поиском туров, управлением продажами, регистрацией клиентов и т. д. Движок на C++, так как всё делалось давно и должно было держать большую посещаемость. Требуется поддержка и доработка. Если что непоятно, есть главный программист, можно обращаться к нему. Испытательный срок — месяц. Зарплата на уровне начинающего программиста. Это то, что сказали на собеседовании.

Первый день. Главный программист показал рабочее место. Сделал svn update. Конфликт, ещё конфликт. Позвонил кому-то. Оказывается, предыдущий программист по какой-то причине просто копировал файлы на сервер.

— Ты тоже копируй, только осторожно, не сломай ничего на сайте, и делай бэкапы.

— Так давайте настроим нормально.

— Да мне сейчас некогда…

Второй день. Директор сказал, что компьютер на ночь можно не выключать — рабочее время программиста ценнее. Оно, может, и ценнее, но экономить пару минут на включение… Что ж тут за работа такая?

Третий день. Нужно добавить поле в форму регистрации. Скопировал файл на сервер, проверяю — не работает. Скопировалась только половина. Что за фигня? Пошёл к главному программисту. Через несколько минут выяснилось, что на сервере кончилось место. Полгода назад включили подробную запись логов и забыли выключить.

— Кстати, давайте SVN настроим.

— Да мне сейчас некогда…

Четвёртый день. Более-менее разобрался в структуре. Движок обрабатывает самописные теги, куча циклов, какая-то непонятная передача переменных. Скорость работы не то чтобы сильно высокая. Документации почти нет, спросить тоже не у кого. Пошёл к главному программисту.

— Как вот это работает?

— Да я сам не намного больше тебя знаю, лучше сам разбирайся.

Разбирался до вечера.

Ещё четвёртый день. Из-за того, что вчера кончилось место, не построился поисковый индекс для туров. Поиск не работает. Директор и главный программист запустили построение ещё раз, оно уже завершилось, а поиск всё равно не работает. Нужно разобраться почему. Оказывается, время кеширования запросов было три часа. Пока разбирался, это время закончилось, и всё заработало.

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

— А что вы делаете? Пойдёмте-ка в переговорку.

— Знаете, мне кажется, я не пройду испытательный срок.

(Удивлённо, немного изменившись в лице.) Как так? Почему?

Долго разговаривали. Решили, что я доделаю форму регистрации и могу увольняться.

Восьмой день (после выходных). Добавил поле в форму регистрации. Ради интереса посчитал — изменения были в 16 местах в 9 файлах плюс небольшой костыль в виде триггера в базе.

На следующий день мне подписали заявление об увольнении. Ну её на фиг такую работу!

11215

Ключи от домена, где деньги лежат

Большая и очень известная российская IT-компания. Есть домен, на который завязана работа сервисов. Сколько — не знаю, но один популярный, в разработке которого я участвую, в них входит.

С утра пришла новость. Домен в отключке, и его не поднять:

— Он руандский. Единственный чел, который может его продлить, где-то в пустыне вне зоны доступа.

И смешно, и грустно.

11049

Рядовой Неочевидность

Мой коллега — активный пользователь сервиса «Сбербанк-онлайн». В числе прочего с помощью сервиса можно оплачивать коммунальные услуги.

Как-то раз понадобилось ему оплатить электричество. Перед проведением операции в HTML-форме требуется указать месяц оплаты. Однако каких-либо указаний на формат вводимых данных в форме не содержится — ни всплывающих подсказок, ни какого-либо другого указующего перста. Мы перебрали, как нам казалось, все возможные варианты: MM.YY, MM.YYYY, YYYY.MM, YY.MM, Month.YYYY, MMYY, MMYYYY. Точки меняли на двоеточия, запятые, дефисы…

Пришлось позвонить в саппорт. В течение часа на том конце телефонного провода сменилось три человека — никто из них не знал формат ввода даты. В итоге, видимо, вызвонили программиста. Оказалось, 0131MMYY. Народ безмолвствует.

Через пару дней добавили подсказки.

11010

Штиль после апокалипсиса

Наш коллектив каждое утро смотрит погоду. Настроение хорошее, Firebug в руки — и вот уже назавтра тучки, ураганный ветер, +15, +75, +90, +950 градусов — а потом штиль и ноль до конца недели.

Море восторга, смеха, сбежались дамы из соседнего офиса. День удался у меня и у них.

Делитесь радостью, это приятно!

10949

1С-синдром

Написали люди «Битрикс»,
Оторвали людям руки,
Всё равно его не брошу,
Потому что уже поздно…