Истории с тегом: веб-разработка

Всего историй: 342

5212

Сайт закрыт на ревизию

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

Пик кретинизма начальства пришёлся на 17 декабря. Пятница, разгар рабочего дня. Начальство только вернулось с семинара по продвижению сайтов и село писать статью о том, как много они там узнали и выучили. В 11 утра сайт упал, о чём тут же было доложено руководству. Ответ меня поверг в лёгкий шок:

— Это бывает. Через час всё будет нормально.

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

Прошёл час. Сайт всё ещё лежал. Босс, почесав репу, заметил:

— Странно... Обычно через час начинал работать.

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

После многочасового молчания руководитель изрёк:

— Я понял, в чём дело! Сегодня Яндекс обновляет поисковый рейтинг сайтов, и на время обновления он отключил наш портал.

Я пулей выскочил из кабинета, чтобы просмеяться. Девушек отпустили домой; я ушёл сам с намерением не возвращаться. Позже я узнал, что сайт зависал неоднократно, и каждый раз во всём был виноват злостный Яндекс.

Знаете, что самое удивительное? Статья о методах и опыте продвижения сайтов моего бывшего начальника вышла в финал конкурса, проводимого уважаемым мною блогом. Яндекс становится опасным — будьте осторожны!

5210

Почему директор дрожит?

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

На том конце провода продолжают: «И фотографию директора надо переделать. Она очень тёмная!» Смотрю на фотографию, вижу благообразную тётушку в розовой шали со светлыми волосами. Из тёмного на фото — только зрачки. Тут начинает играть моё сисадминское прошлое. «Скажите, — спрашиваю, — а вы сидите перед каким монитором? Который сразу напротив входа?»

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

5200

Сунем блок поперёк

Решил я поднять сайт на одной CMS. Начальство деньги выделило бы без вопросов — в этом я уверен, но вот захотелось мне проверить сперва системку. Тестовая версия была скачана и запущена на локальном сервере.

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

Я долго бился головой обо всё твёрдое, что попадалось на пути. 50 ошибок и 300 предупреждений в HTML только на главной странице я ещё мог понять. Но как, как можно было сделать 70 ошибок в CSS и при этом заставить дизайн отображаться правильно? В какой стране это писали? Индия явно ни при чём.

5145

Рубли уже не в моде

Попросили меня посмотреть один сайтик, который ну никак не хотел раскручиваться в поисковиках. Для начала скормил валидатору — 200+ ошибок. Так, будет интересно.

Сайт сделан на популярной CMS. Поставил себе демо-версию этого чуда. Дефолтный сайт в комплекте — та же ерунда с кучей ошибок. Ну да ладно, чего там, шаблончики поправим. Шаблончиков насчиталось 85 штук, не считая кучи HTML внутри PHP-кода. Ладно... Сконцентрируемся на основном. Читаем описание шаблонизатора. Переменные:

@productPrice@ — стоимость товара в валюте.

@productPriceRub@ — думаете, стоимость в рублях? А вот фиг там: старая стоимость товара.

И это продают.

5138

Обречённая с рождения

Рассматриваемое время — с 28 декабря по 4 января, самый разгар народных гуляний. Надо срочно доделать веб-проект с интеграцией со сторонними API.

После определённых действий пользователя устанавливается кука на один час (об этом я узнал уже потом). В моём распоряжении два компьютера. Ни на одном кука не устанавливается. Три дня ищу ошибку. Саппорт API-провайдера в новогоднем запое, и я смело ухожу праздновать Новый год к друзьям с мыслями, что это ошибка провайдера. Разгар новогодней ночи, я около компьютера друга. Решил проверить. Кука установилась!

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

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

Будьте внимательны, думайте о последствиях — и с Новым годом! Надеюсь, вы его встретили с меньшим расходом нервных клеток.

5083

И ещё немножечко шьёт

Явление первое. Я и клиент.

— Сделаете репорт к веб-шопу в формате CSV?

— Сделаю.

Явление второе. Я и секретарша клиента.

— У меня для вас две новости: хорошая и плохая. Хорошая: ваш репорт работает. Плохая: все заказы изменили статус.

Как же ж так, что ж такое?.. Ведь писал только репорт, в нём ни одного запроса на изменение, исключительно выборка. Ещё раз проверяю свой скрипт. Опрашиваю секретаршу на предмет манипуляций с БД другими сотрудниками. В итоге вспоминаю: для лучшего понимания процедуры я запустил другой репорт в формате XML, написанный моим предшественником. Оказывается, этот репорт заодно меняет статус заказов...

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

5082

Нельзя тебе, тебе и всем остальным

Саппорт хостера. Клиент ругается, что он следовал инструкциям, а теперь не может открыть сайт. Смотрим .htaccess, а там прелесть:

Order Deny,Allow

Deny from XXX.XXX.XXX.XXX

Deny from XXX.XXX.XXX.XXX

Deny from All

5005

Не иди ко мне лечиться, если у тебя «лисица»

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

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

Решил разобраться. Запустил Firefox, заполнил форму на сайте, нажал «распечатать» — появилось окошко загрузки файла-скрипта, который эту форму обрабатывает. Вспомнил свою работу в QA-отделе. Вместо выполнения операции получаем загрузку файла вместо его запуска? Открыл исходник страницы... Всё ясно. Разработчики делали сайт под Эксплорер, использованный метод в других браузерах закономерно косячит. Запускаю IE — система формирует нормальный текстовый файл с номерком. Я-то разобрался, но жалко тех людей, кто не смог воспользоваться современными технологиями из-за лени программистов.

4982

Чё, самый умный?

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

Ковырялся примерно час. Уже сонный мозг выдал логическую цепочку: «Тест по учёбе → учёба → старенькие машинки в аудиториях → Internet Explorer». Решил проверить догадку. Открываю противный Эксплорер, ввожу адрес, логин, пароль и всё такое — работает!

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

4967

Парент парента парентом об парент

Я познакомилась с настоящим индусом. Правда-правда. Этот человек:

— пишет код в кадрах кадров кадров символов — парент парента парентом об парент;

— инициализирует переменные не там, где они используются (используются в первом, инициализирутся в 20-м кадре и на другом слое, но это фигня — работает же), называет максимум в три буквы (и функции тоже);

— никогда ничего не типизирует — зачем?

— знает кучу багов флеш-плеера, которые не встречаются обычным людям, и упрямо делает так, чтобы в проекте на них опять наткнуться (как?);

— при именовании придерживается своей логики: инстансы клипов — маленькими буквами, функции и всё остальное — большими. Констант не встречала — интересно, как он именует их?

— не форматирует код в принципе — а зачем? Между строчками может быть от одного до 15 переводов строки;

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

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

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