bash.im ithappens.me zadolba.li

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

9004

Конфеты, белочка

Один мой товарищ работает в крупной фирме, прогрессивное руководство которой осознало все удобство веб-интерфейсов. А я с некоторых пор прекратил свои инженерные потуги и целиком переключился на «вязание паутины», поэтому товарищ периодически снабжает меня заказами.

Однажды попросил поправить код небольшого приложения для секретарей, ведущего учёт подарков, которые руководители дарят партнёрам. На сегодняшний день накопилась уже приличная база. И вот недавно был обнаружен мелкий, но неприятный глюк: в одном из полей имя подарка как-то странно обрезалось. Выяснилось, что знак кавычки ломает валидацию страницы, закрывая свойство value тега <input>.

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

8973

Дискриминация по браузерному признаку

Я сижу в интернете в основном с мобилки. Нет, стационарный интернет у меня есть, просто мне по вечерам удобнее валяться на диване со смартфоном в руке, чем ползти к столу. Знал бы кто, как меня задолбали сайтостроители!

Непременно нужно увешать сайт тоннами скриптов для красивостей. Зачем кнопка «Login» рядом с полями для ввода логина и пароля? Фи, что вы, это же прошлый век! И плевать, что пользователь мобильного интернета не может зайти на сайт под своим именем — ишь чего захотел.

Другие сайты, создатели которых не озаботились грамотной вёрсткой, не позволяют браузеру обрезать строки текста по ширине экрана телефона. А что, пускай пользователь «поездит» по тексту влево-вправо, авось руки не отвалятся. Глазки, говорите, перенапрягаются? Какие мелочи, право.

Третьи сайты, автоматически определяя мобильный браузер, принудительно перенаправляют читателя на мобильную же версию себя (с которой зачастую невозможно выйти на полную). Но о том, чтобы мобильной версией можно было нормально пользоваться, кажется, никто не подумал: она обладает дай бог если четвертью основного функционала — ни тебе файл скачать, ни на письмо ответить, ни в разговоре собеседника процитировать.

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

8844

Радужнознамённая бригада имени Дулина

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

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

Тр***ются рабочие…

8834

Пиксели-полиглоты

Разбирая код сайта, наткнулся на строчку:

<meta http-equiv="Content-type" content="image/gif; charset=utf-8">

Вот в какой стране это писали?

8822

Внучка созрела

Под Новый год был корпоратив на работе. Как полагается, выпивка-закуска.

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

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

Мораль такова: выпил — прочь руки от клавы! Один клиент уже отправил письмо со словами благодарности.

8795

Комменты — не хрен собачий

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

А потом этим чудом приходится пользоваться другим, где-нибудь в машине, с планшета. И начинается… Чудо-дизайн не влезает в рамки экрана ни по высоте, ни по ширине, потому что у дизайнера новенький монитор в полстены, под него и делалось. Многомегабайтные XML рвутся на лету, потому что мобильная связь такая мобильная. То, что удалось не порвать, никак не может обработать единственное ядро процессора, вяло шевелящееся под тоннами скриптов.

И вот наконец, с превеликими трудами преодолев затруднения, открывается оно — окно с единственным полем «Введите комментарий» и кнопкой «Отправить». Ну на хрена, спрашивается?

8785

Принцип эффективного фриланса

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

Поделюсь опытом. У меня на сайте висит жирная красная строчка о том, что на «осла» я ориентируюсь в последнюю очередь. Всем, кому нужно что-либо браузерное, даю нужную ссылку. Вопрос о кроссбраузерности у заказчика в этом случае отпадает сразу. Предупредил? Предупредил. Ссылку дал? Дал. Прекрасно. Вопросы есть?

С каждого заказчика я требую полный список требований к приложению. Предупреждаю, что на все последующие «хочу» и «можно ли» ответом будет «нет». Вы скажете, что этот подход чреват потерей клиентов. Я знаю. А вы задумываетесь, какого рода «клиентов» вы теряете? Я задумываюсь.

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

Я выбираю первое. Лучше потерять пару мудаков, чем пару недель времени. Вот мой принцип эффективного фриланса.

8754

Петух свинье товарищ

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

Вот пример. Разводим мы кур. Приходит такой грамотей:

— А давайте теперь будем ещё и кроликов разводить в той же клетке!
— Кролики хорошо рыть умеют, они из этого курятника выроют себе выход на волю. Здесь клетки нужны.
— Клетки?.. — грамотей призадумывается. Не-е, сейчас у нас на клетки нет времени, не будем кроликов селить пока.

Через некоторое время он возвращается и, воодушевлённый прочитанной в интернете статьёй, говорит:

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

Опять грамотей уходит думать.

— А давайте коров! Они травоядные.
— Ну что ж ты, уважаемый? Мы же тебе только что объясняли, что нужно больше места. Да и доить корову нужно, и пастись выводить.

Опять уходит. Возвращаясь, предлагает завести оленя. И доить не нужно, и вроде пасти тоже не нужно… Мы уже крутим пальцем у виска. Тут грамотей расстраивается, обижается — все его идеи режутся на корню! — и уходит жаловаться начальству.

Ещё эти грамотеи часто любят, казалось бы, простые задачи описывать целыми поэмами: «Покрасьте забор курятника зелёной краской. Не белой, не чёрной, не красной, не фиолетовой, а именно зелёной. #00FF00 — вот такой! Землю вокруг курятника и в нём не нужно красить. Сарай и гараж тоже не нужно. Это мы через месяц будем менять и всё перекрасим. А курятник — в зелёный».

А сложные — двумя словами: «Отремонтируйте курятник». А что в нём ремонтировать? Дверь скрипит, лампочка сгорела или недостаточно ярко светит? Может, окружить колючей проволокой?

Вот так и работаем.

8704

По свежим следам

Делал я как-то сайт, сроки поджимали, торопился жутко. И вот я сохраняю последние правки на хост — всё супер, всё работает, но что-то ещё по стилям чуток поправить нужно. Открываю файл стилей, делаю правки и снова сохраняю на хост. Закрываю редактор и, довольный собой, жму F5.

Моему взору предстаёт страница, у которой просто нет стилей — всё обычным текстом. Я в панике открываю файл стилей с сайта, а он пуст. Что делать?! Копии нет вообще, последний бэкап недельной давности. Спина начинает покрываться холодным потом. Пытаюсь найти хоть какие-то обрывки в кеше FTP-клиента — всё бесполезно. Чувствую, как волосы на голове начинают седеть.

И тут меня озаряет. Я вспоминаю, что минут десять назад смотрел сайт в Файрфоксе. О боги, только бы всё было так, как я думаю! Быстро открываю FF, набираю адрес сайта — он в прежнем виде. Буквально не дыша, открываю просмотр файла стилей в Firebug — и быстро-быстро Ctrl+A, Ctrl+C. Я спасён — хвала кешу FF!