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

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

6075

Nokia. Crippling websites

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

Приходит куча эсемесок: заказчик рассказывает, что на сайте ничего не работает. Вообще ничего. Текст смещён, всё разбросано, галереи на JS вообще нет. Я бросаюсь к компу, звоню другу, мы лихорадочно перебираем, почему всё внезапно стало плохо. Может, заказчик из-под IE6 сидит? Срочно бросаюсь в Гугл в поисках модуля галереи, который работал бы и в IE6. Паника…

Приходит SMS: «Слушай, почти всё в норме :) Я просто через телефон первый раз смотрел». Крик души не выдержал и вырвался в пространство в виде отборного мата. С заказом попытались закончить как можно быстрее. Телефон заказчика — Nokia 6303.

6040

Уже восьмой, но всё ещё осёл

Internet Explorer я использую исключительно при отладке сайтов: открываю 6-ю версию в виртуальной машине, убеждаюсь, что основные функции сайта работают и по внешнему виду особых косяков нет, затем возвращаюсь в привычный FF. На днях понадобилось потестировать внешний вид странички под 8-й версией. Был неприятно поражён: фрилансеру за такое количество глупостей как минимум не заплатят, как максимум — найдут и подвергнут ректальному выговору. Программистам же крупнейшей IT-корпорации позволено всё.

Но давайте по порядку. Установился браузер без особых претензий, а потом началось. При первом запуске мне задали около десятка вопросов, причём многолетний опыт подсказывал, что если бы я не отвечал на них жёстко «спасибо, не надо», то задали бы ещё столько же. Какие-то акселераторы, примочки, предлагающие альтернативы посещаемым сайтам, повышающие безопасность… Я уже от такого отвык. Максимум произвола, который по отношению к пользователю позволяет себе FF после установки или обновления, — показать свою домашнюю страницу. А IE 8 ведёт себя как государство, которому подданные вроде бы налоги платят, а оно вместо того, чтобы их обслуживать, экспериментами да переписями их донимает, да ещё и свободу выбора ограничить норовит.

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

Страничка, ради которой я устанавливал IE, конечно же, выглядела не так, как в Opera и FF (в обоих, кстати, абсолютно одинаково). Да и что тут можно напутать, если есть таблица из двух ячеек: в одной — блок фиксированной ширины, в другой — текст, расширяющий свою ячейку по принципу «занять всё оставшееся место»? Как размышляет нормальный человек, да и браузер тоже? Раз содержимое фиксированной ширины, то и ячейку под него нужно выделить фиксированной ширины, а остальное отдать под заполняющий собой оставшееся пространство текст. Нет, у IE свои представления о здравом смысле. По каким-то ведомым только ему причинам он отвёл под карту шириной 640 пикселей процентов на 20 больше места, в результате чего справа зазияла дыра, а текст, которому можно было бы это пространство отдать, скукожился.

Окончательным взрывом мозга стало диалоговое окно, появившееся при закрытии браузера: «Закрыть все вкладки или только текущую?» Обратите внимание, я закрываю не вкладку, а приложение целиком. Вот как это понимать? Я хочу закрыть браузер, при этом желательно, чтобы все открытые вкладки открылись и в следующий раз (как в FF). Мне же предлагают либо закрыть все вкладки, либо обязательно закрыть одну, причём почему-то ту, которая в данный момент случайно оказалась текущей.

Ребята, у вас лучший в мире офисный пакет, хоть и небезупречная, но популярная ОС, но вы совершенно не умеете делать браузеры, причём у вас это не получается уже лет 20. Может, всё-таки уйдёте с рынка? Право слово, человечество вздохнёт с облегчением.

6026

With great power comes great responsibility

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

Когда сисадмин заметил в логе какие-то странные команды, которые он не вводил, он молниеносно сменил все пароли, включая пользовательские, пароль рута от базы данных и пароли на доступ к FTP. Тревога оказалась ложной, но в тот день из 25 сайтов, которые разрабатывались на нашем хостинге, лежал 21.

6025

Приходите со своим

Работаю PHP-разработчиком. Как обычно, суета, горящие таски и нервные заказчики. На продакшн-сервере клиент обновляет схему БД; мне надо обновить её на стейджинге и на своей машине. Запускаю dbForge, подключаюсь и вижу свою локальную БД. Я грохнул базу на продакшне?!

Морально готовлюсь делать харакири. Проверяю хосты, переподключаюсь — та же картина. Седею. Прошу коллегу подключиться с его машины. Приходит ответ: «Access denied for user xxx@localhost». Как это localhost?..

Nslookup расставил всё на свои места. Доблестные админы решили защитить свою базу: DNS при обращении к хосту с БД возвращал 127.0.0.1. Естественно, о нововведениях нам не было сказано ни слова.

6016

Пустота — абсолютно бесплатно

Есть на просторах интернета сайт, продающий эксклюзивные вещи. Какие именно и за какие деньги — не так важно; важно то, что за несколько минут с момента открытия продаж все 50 штук уже раскуплены жаждущими.

— Хочу, — говорит мне жена.

— Окей, сейчас набросаю бота, он нам за десять секунд заказ оформит, никто опередить не сможет.

Открываю PHP, припоминаю cURL и начинаю ваять. Логинимся, кладём товар в корзину, оформляем. Тестируем на этом же сайте. Стоп, а почему у товара в корзине цена 0 долларов, а вес 0 граммов? Курю исходный код страницы. Джаваскрипт, джаваскрипт… Нет, даже индийский джаваскрипт, но это полбеды. Подсчёт веса? Подсчёт цены? Отправка на сервер?!

Правлю цену в скрипте, кладу в корзину. Сервер даже не думает проверить, что пришло ему из браузера. Я не знал, что такое бывает на самом деле.

6015

Верю на слово

Нужно срочно родить решение по учёту оргтехники в фирме, где я работаю админом. Час ночи, я дома за ноутбуком пытаюсь скачать очередную конфигурацию 1С, которую можно будет впоследствии доработать. Выкидывает на страничку загрузки с антиспам-ботом, который дружелюбно спрашивает: «Вы случайно не робот?» Усталость даёт о себе знать, и вместо кода картинки я рефлекторно выстукиваю на клавиатуре: «Нет».

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

5987

А пошло оно всё

Русская CMS от жёлтой фирмы. Инструкция:

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

Логичное решение, правда?

5945

Пишу я die() — и к горлу подступает ком

Работаю я веб-программистом. Часто выдаётся свободная минутка, чтобы отдохнуть или поиграть во что-нибудь. Естественно, делаю я это как можно более незаметно для коллег, админов и начальства. Когда наглость зашкаливает, я прямо в рабочее время смотрю аниме. В наушниках, негромко так. Монитор отвёрнут от посторонних глаз, сеть отключается (админы любят баловаться удалёнкой), так что поймать меня за этим занятием сложно.

В один из таких дней, когда код уже прожёг и без того уставший мозг до состояния «сыр с дырочками», я решил немножко отдохнуть от работы. Включил аниме, отрубил сеть, напялил наушники. Вроде бы не подкопаешься. Коллеги сидят тихо, в кабинете слышна только громкая музыка из наушников у соседа. Благоприятное время для расслабления. Вид задумчивый (вроде как я в мыслях о коде), рука на всякий пожарный у эскейпа, чтобы плеер закрыть мгновенно, если кто заглянет.

Погружаюсь в сюжет. Показывают воспоминания одного из персонажей: умирает маленькая сестрёнка героя. Я же не каменный! Девочка на больничной койке при смерти, брат её за руку держит — и музыка душещипательная… Меня прошибло. Слёзы потекли по щекам, хоть я и пытался сохранять серьёзный вид.

Краем глаза замечаю, что коллега снял наушники и идёт в мою сторону. Быстрым движением руки закрываю плеер и разворачиваю код на весь экран. Сосед подходит, глядит в монитор, потом на меня:

— У тебя что-то случилось?

Шмыгнув носом и утерев рукавом глаза, дрожащим голосом произношу:

— Код у меня ну очень трогательный…

Ещё неделю после этого от меня не отлипало прозвище «Эмокодер».

5845

Мастер остаётся мастером

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

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

Но!

У меня по-прежнему борода. Я доволен своей зарплатой, у меня нет тупых начальников. Я знаю как минимум три языка программирования в веб-среде и знаком ещё со многими. Я с искренним удовольствием заказываю нужные запчасти в интернет-магазине, чтобы починить принтер восьмилетней давности, хотя у меня есть новый. Провайдеры застывают в трубке, услышав в ответ на своё «виновата Москва, что у вас не открывается сайт» фразу: «Пинайте магистральщиков». Я интегрирую драйверы в сборки ОС, чтобы поставить наконец систему другу. Я отключаю мультимедийные клавиши тем, кто не может войти в BIOS. Я тяну домашнюю сеть и осваиваю прелести охлаждения ноутбуков. Я консультирую друга, пишущего диплом по сетям, по классам адресов и выбору шлюзов. Я пишу конфиги для серверов, только теперь с другой стороны. Админство живёт!

5825

Жуком жука

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

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