Через час ввожу свежезаменённый пароль — не подходит. Забыл, плохо ввёл, глюк программы? Админскую учётку не блокируют, поэтому идёт перебор всех близко похожих, мало похожих и «может, я вот тут ошибся». Чтение документации. Безрезультатно, теперь в панике уже я. Начинается массированная попытка дозвониться до техподдержки уже с целью восстановления пароля и получения обновления.
В недрах великого Гугла находится непонятно когда и непонятно кем созданная тема, как восстановить пароль. Надо в %foldername% удалить %filename% и заново всех перерегистрировать. Деваться некуда, приступаю. Бэкап, удаление файла, начало новой регистрации. Программа предлагает сразу ввести новый пароль для админа два раза, как водится. Печатаю я вслепую, а тут пароль крипкостойкий, и смотрю я на клавиатуру, поэтому не сразу замечаю, что из 11 вводимых символов в форму добавляется только восемь!
Меня осеняет. Отменяю всё, восстанавливаю из бэкапа файл, ввожу восемь символов нового пароля — получается! То бишь при замене пароля в форму можно вбить только восемь символов, а при авторизации — сколько угодно. Спасибо программистам из банка за два дня нервов.
Отсюда я сделал вывод: внимательность прежде всего! А из техподдержки потом позвонили. Оказалось, что программа у нас самая свежайшая и обновлённая, что подтверждает истину: работает — не трогай.
#9677: Бар «Двойной инкремент»
12:15 04.08.2012, IT happens
Нужно было добавить на одну из страниц проекта счётчик просмотров. Самый-самый простой: если кто-то запросил страницу, то увеличиваем на один предыдущее значение в базе. Но такая простая задача заняла ровно один вечер и одно утро, почти заставив меня поверить в сверхъестественное, прежде чем была реализована.
В качестве библиотеки для общения с базой MySQL на сайте используется библиотека ActiveRecord. Соответственно, весь код составил пару строк:
$faq = Faq::find($id);
$faq->views++;
$faq->save();
Получаем нужную запись, увеличиваем значение поля на единицу и сохраняем.
При тестировании выяснилось, что счётчик посещений при заходе увеличивается не на один, а на два. Перепроверил на всякий случай структуру таблицы в базе данных, попробовал на всякий случай обновить значение другим способом (вдруг ошибка в библиотеке?), погуглил по запросу «activerecord double increment problem» — всё без толку. Не понимая, что может быть не так в коде, ушёл спать, так как обычно это помогает — за ночь мозг переосмысляет проблему и утром выдаёт свежее решение.
Решения утром не оказалось, и я уже был готов поверить в сверхъестественное и выводить количество посещений как значение поля, делённое на два, но в очередной раз перезагружая страницу с этим адским счётчиком, в статусной строке браузера я заметил промелькнувшее на мгновение слово «yandex». Да, я тестировал сайт в Firefox с установленной панелью RDS bar, которая дёргала страницу синхронно со мной, увеличивая счетчик ещё на единицу.
#9678: Антить-колотить
12:15 04.08.2012, IT happens
Лекция по информатике. Преподаватель рассказывает про оператор UNTIL. С задней парты голос:
— Антил, антю и буду антить!
#9679: Удовольствие в процессе
12:15 05.08.2012, IT happens
Представьте: идёт профессиональный футболист мимо площадки, где играют футболисты-любители, и давай бурчать: «Ну что вы тут как-то вяло играете, рекордов не ставите, ни фига не зарабатываете! Что толку от вашей игры? Лучше купите билет на мой матч да на трибунах посидите». А они просто играют в своё удовольствие, а не ради славы, денег и рекордов.
Так же и профессиональные ремонтники порой упрекают ремонтников-любителей: «То, что вы чините за месяц, я делаю за час, да ещё и зарабатываю! Лучше заплатите мне, я за час починю». А ремонтники-любители ухмыляются: «Нас месяц вместо часа устраивает, потому что для нас ремонт — это спорт, и чиним мы в своё удовольствие, а не ради славы и денег. Вы ещё рыбаку посоветуйте рыбу купить, а не поймать, это ведь тоже гораздо быстрее, а бывает, и выгоднее. Только потом не удивляйтесь реакции рыбака».