bash.im ithappens.me zadolba.li

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

631

Специалист подобен флюсу

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

Изучая код, отвечающий за кабинет пользователя, а именно за восстановление пароля, я наткнулся, помимо прочих перлов, на такой. Идет запрос в базу на обновление пароля. Просто обновление сразу по отправке письма, безо всяких там активаций и т.д. "Непрофессионально," - подумал я.

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

Пока народ будет так писать код - у меня будет работа. Каких бы масштабов кризисы не происходили в мире...

537

Накаркали, блин!

28 января 2009, 09:00

Делаем сайт с информацией об авиарейсах и всем, что с этим связано. Города вылета и прибытия вводятся вручную.

В самом начале проекта мы дико ржали над идеей, вкрутить туда Гугл.Мэпс, чтобы там прям на карте можно было выбрать, куда полететь. И вот, на недавнем совещании заказчик предложил: "А может быть нам использовать Гугл.Мэпс, визуализировать и упростить процесс выбора городов?"

507

На работу, как на праздник

Некая фирма, занимающаяся созданием WEB-сайтов, решила, что ей нужен приходящий сисадмин. Заказали оного в другой
фирме, которая как раз эти услуги и предоставляет.

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

503

А тем, кто не поймет, он откусит ногу

Разрабатываем одну большую корпоративную систему - огромная база данных, большие нагрузки на сервера ну и веб-интерфейс, куда ж без него. Интерфейс этот пишется с использованием одной библиотечки, которая в свою очередь вовсю использует AJAX. Библиотека open-source, но как-то раз преподнесла совершенно неожиданный сюрприз.

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

/**
* @return
* @see #getPage()
* @deprecated
*/
public int getPageIndex() {
return getPageIndex();
}

Вот оказывается как надо объявлять метод устаревшим, чтобы его впредь больше никогда не использовали!

489

И тут утка в зайце насторожилась...

Работал в компании, занимающейся разработкой web-сайтов системным администратором, поддерживал серверную ферму. Был у нас среди прочих сервер, который по историческим причинам отдавал часть http-контента с нестандартного порта.

И вот, приходит однажды мне абьюз на этот сервер с комментарием "вы нас взламываете" и вложенным в аттаче немаленьким архивом. Распаковываю архив и внутри нахожу вордовый файл, открываю файл и вижу вложенный в файл скриншот экрана в большом разрешении и посреди этого скриншота открыто окно winroute в котором как раз наличествуют подключения с этого нестандартного порта.

482

На том свете разберутся

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

До тех пор, пока делались сайты-визитки и прочая мура с ежедневным числом до ста человек, все было хорошо. Но тут нарисовался заказ на переделку движка одного тематического новостного сайта, на котором было от 15 до 30 тысяч посетителей в сутки и размер дампа базы новостей был около 300 мегабайт.
Движок переделали под требования заказчика, на стадии тестирования все прошло отлично — отправили в релиз. Через 10 минут после запуска — звонок с истошным воплем заказчика: "На вашем сайте вирус и он сломал нам сервер!!!". И действительно, минут через 10 после включения сервер с хостящимся сайтом переставал отзываться на внешние раздражители, разве что пинговался. top и ps, запущенный на серваке, показывали сумасшествие mysqld, который с потрясающей скоростью отбирал под себя проценты CPU и мегабайты памяти. my.cnf был перелопачен вдоль и поперек — без толку.

От безысходности залез в код движка — и вот тут волосы встали дыбом, стул подо мной сломался. Обращение к БД было реализовано весьма оригинальным способом — SELECT * FROM список_таблиц, а уже потом из такой вот 300-метровой глобальной переменной вычленялись необходимые компоненты.

470

А вдруг его увидит браузер?!

Полгода назад работал в одной маленькой веб-студии.
Программистов было двое: я и ещё один юноша. Юноша - студент, но толковый и нелепых ляпов не допускал.
До поры.

Как-то раз сидит, пишет что-то, ругается сквозь зубы. В конце концов зовёт меня. Запрос, говорит, не работает. Я ему советую распечатать запрос - сразу, мол, поймёшь, что не работает. Распечатывает, вставляет в phpMyAdmin. Работает!

Я, немного офигевши, иду смотреть на это чудо. Действительно, в скрипте запрос сбоит, а в phpMyAdmin'е работает за милую душу. Лезу в исходник. Смотрю на строку, где формируется запрос, и начинаю сползать под стол. Строка выглядит следующим образом:

$query = "SELECT * FROM ..."

Зачем, спрашиваю? На что он мне так основательно отвечает: на всякий случай, мол, мало ли что...

426

А теперь я хочу уйти отсюда

Переехал на новый хостинг, феерический диалог с техподдержкой, почти дословно:

User: День добрый, у меня проблема. Почему-то на страницах сайта не отрабатываются php-инклюды вида { ...... }, при этом отдается ошибка "URL file-access is disabled in the server configuration". На предыдущем хостинге работало, думаю надо настройки PHP подкрутить для моего аккаунта.

Support: Создайте файл php.ini в директории откуда запускается скрипт содержащий include и добавьте в него следующие опции: allow_url_include = on; allow_url_fopen = on;

User: Ага, здорово. А как бы это для моего аккаунта выставить глобально? Этот скрипт в ста местах на сайте вызывается - не в каждой же папке php.ini отдельный создавать?

Support: Проблема решена. Я поместил в каждую папку Вашего домена ***.ru файл php.ini с необходимыми параметрами.

User: ОК, спасибо за столь оригинальное решение проблемы. А вот еще вопросик - при работе формы обратной связи не отрабатывает скрипт { ........... } по адресу /feedback/send.phtml

Support: А что это за формат такой - .phtml? Не слышал о таком, может быть проблема в этом?

User: Ладно, не обращайте внимания. Как мне удалить свой аккаунт?

315

Мой адрес — не дом и не улица

Работаю в отделе QA, делали обновление нашего корпоративного сайта. Общаюсь с девелопером на предмет небольшой баги. Не верно указан адрес в разделе contact us.

Я: В разделе contact us указан неверный адрес
Он: Как неверный? Всё правильно.
Я, мягко: Извини, но нет. Неправильно, открываем страничку и проверяем.
Он: Ну.. %url%\contactus.apsx Такой?
Я: Да, открывай.
Он, раздражённый: Открыл. Такой, спрашиваю, должен быть?
Я: Да, такой. Открываем, читаем внимательно адрес.
Он: И что?
Я, догадываясь что о разных вещах говорим: Знаешь, адреса бывают ещё и физические. То, что там указано - то ли супермаркет, то ли швейная фабрика.