bash.im ithappens.me zadolba.li

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

1195

Кошмар верстальщика, или жизнь без валидатора

Дело было ещё в школе. Вместо обычной практики нашему спецклассу летом достались задания по математике и информатике. В тот год мы как раз учились верстать веб-странички на HTML. Нас разделили на группы по два-три человека и раздали задания.

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

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

С тех прошло достаточное количество времени, но проверяю чужой код я с тех пор очень кропотливо.

1179

Выбирать * Из Страны

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

Выход я нашёл быстро: сделал дамп таблицы со странами из MySQL, загнал запрос в Google Translate, немного откорректировал перевод и скормил обратно базе. Задачу я решил за пять минут, а жалоб от заказчика на некорректность не поступало.

1121

Apache и nginx за здоровье нации

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

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

Оказалось, бабуля сильно болела, и её медицинская история занимала мега три, да ещё и с хитрым HTML-форматированием...

1089

Капитан Очевидность меняет профессию

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

Дело было с одной CMS. Не хотела она «есть» наш шаблон для форума, хоть ты тресни. Наши программеры, покурив мануалы, заботливо предоставленные клиентом, не нашли ничего лучшего, как написать письмо в службу поддержку этого движка. По закону подлости писать письмо поручили именно мне — ты, мол, у нас парень толковый, мы тебе дадим скриншотов, а ты отправь, да распиши там проблемку получше. Как-никак коммерческие предложения ты у нас писать мастер, вот и с этим справишься.

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

— Нажмите кнопку «Применить» и напишите нам ещё раз.

1048

А вместо сердца — пламенный мотор

Работала в техподдержке одного интернет-агентства. Контора делала сайты на CMS, нормально настроить которую на сервере никто, кроме наших программистов и админа, почему-то не мог. Это был отличный способ заставить клиента пользоваться местным хостингом, хоть соотношение цена/качество было, мягко говоря, высоким.

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

Итак, очередной клиент решил «переехать». Подготовили ему диск с полным бэкапом сайта; ждём курьера. Ближе к вечеру в офисе объявляется странного вида мужик, напоминающий священника без рясы, и на полном серьезе интересуется: «Где мой мотор?»

Секретарь не понимает: «Какие-такие моторы? Мы интернет-агентство». Мужик же настойчиво утверждает, что приехал забрать мотор, который мы ему по предварительной договоренности продали. Далее выяснилось, что интернет-агентство не просто продаёт эти агрегаты, но и производит их!

Первой догадалась проходившая мимо на перекур главбух. Оказалось, что мужик имел в виду движок сайта, который ждал его на болванке в серверной. Получив диск, он сильно негодовал по поводу произошедшего: «Мотор, движок... Какая разница!»

970

Язык Кавычек и Треугольных Скобочек

В некоем учебном заведении преподавал я компьютерную графику, в частности, курс HTML/CSS. Дошло дело до экзаменов. Практику сдали, отвечают теорию; желающих нет, объявляю, что оценка на балл выше первому добровольцу.

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

— %Studentname%, хорошо, скажите мне, какой предмет вы сдаёте?
— HTML...
— Вот скажите мне, как название расшифровывается, и получите свою заслуженную тройку.

Должна ж она была как старательная девочка тупо зазубрить конспект... Не тут-то было. Я грустно вздыхаю:

— %Studentname, это очень просто. Вот пусть сейчас нам %Отличникname% ответит.

Гнетущая пауза.

— Не понял. Кто-нибудь может сказать, как расшифровывается аббревиатура HTML?

Вся группа ушла на пересдачу.

809

Дежавю

Занимаюсь фрилансом — разрабатываю всевозможные мелкие программы для автоматизации процессов.

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

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

Отсылаемые архивы я не пронумеровывал, и клиент по невнимательности запускал старый скрипт — назывались-то файлы так же.

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

792

Первое желание — jQuery в ядре

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

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

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

— Джинн! Как здорово, что я тебя встретила! Ты случайно в JavaScript не разбираешься?

Вот оно какое, оказывается, простое женское счастье.

762

Простому счастью не учу

Знакомый попросил починить формочку "задай вопрос" на каком-то сайте. Сходил, проверил, получил ошибку 405.

Проверил contact_us.php, на всякий случай переписал 30 строк кода почистую. Не помогло. Проверил конфиги — вроде всё на месте. Полез в панель управления хостингом (хороший, кстати, хостинг). И что я вижу?

Правильно. Сайт простенький, поэтому хостится по самому дешевому тарифу. Без поддержки скриптовых языков.