Главный пуск года и мелкие неприятности

Сегодня состоялся главный пуск года! Я выложил дистрибутив новой версии Intellect Board 3.02, над которой работал последний месяц, если не больше. И очень доволен этим фактом! Снова чувствую себя настоящим Web-разработчиком, прямо таки творцом, как в славные времена IntB 2.x! Да и вообще снова появилось чувство своего места в жизни. Причем в отличие от 3.00, который я делал скорее из чувства долга, из-за того, что обещал, 3.02 я писал именно из желания сделать движок таким, каким я его хочу видеть. А еще я могу сказать, что реализовал в нем почти все замыслы, имевшиеся изначально (в 3.00 многое не успел, например, внешнюю аутентификацию или subactions). Теперь осталось только разделы новых типов добавлять, да интеграцию с соцсетями нормальную делать.
День начался с последних доделок. Казалось, их осталось совсем немного: добавить в SQL-файл обновления преобразование IP-адресов из числа в строку и сделать правильный редирект в блоге при переходе на сообщение с указанным номером. Где-то часам к 18 я начал думать что все, сейчас закончу, и вечером смогу спокойно отдохнуть.
Но в реальности процесс растянулся, и дистрибутив я смог собрать только к 21:40. Зато в процессе выловил очень неприятную и нетривиальную ошибку. Я решил сменить способ шифрования паролей — перейти на SHA-2 и добавлять к паролю случайное значение (так называемую «соль»). Но проблема в том, что для генерации значения я использовал mt_rand от 0 до PHP_MAX_INT. И не учел, что в 64-битных версиях PHP этот самый PHP_MAX_INT тоже 64-битный. Поэтому с высокой степенью вероятности генерировалось значение больше 232, уходило в MySQL, который обрезал его до 232-1, а потом я недоумевал, почему же хотя вроде все прошло хорошо, пароль не подходит. Возился с этим долго, пока не обратил внимание, что в столбце rnd все время одно и то же подозрительно знакомое значение. И только когда сделал отладочный вывод всех этапов, наконец, осознал, что же происходит.
Потом собрал дистрибутив, обновил свои сайты, и на эмоциональном подъеме от этого, начал писать инструкцию по обновлению. Уже почти было написал, но решил из простого перечисления пунктов сделать полноценный нумерованный список, выделил все, нажал кнопку, и выделение заменилось на undefined. Оказалось, что в более новой версии SCEditorа, который я обновил вместе с дистрибутивом, есть глюк, не позволяющий корректно преобразовывать выделение в списки. Самое неприятное, что после такого изменения отмена не работала. Эх, еще раз убеждаюсь, что все-таки нужно тексты писать в обычный файл на компьютере в Блокноте (или Leafpad в моем случае), а уже потом куда-то копировать. Да и обновлял я его зря, новая версия оказалась хуже (потом поймал еще одну мелкую ошибку, связанную с CKEditor).
Решил сделать перерыв, переключиться на другие задачи. В частности, пройти сегодняшние упражнения на Wikium. Но увы, то ли не успел перенастроиться, то ли просто устал, но реакция была хуже, чем обычно, а результаты — просто ужасные. Поймал огромный минус к показателям, в какой-то момент даже ниже 1250 упал. Вдобавок ко всему, пока я проходил эти упражнения, отцу вздумалось полезть ко мне с какой-то фигней. Это реально вывело меня из себя. (Эх, как же раздражает, когда он так ломится, совершенно игнорируя тот факт, что я могу быть занят, и необходимость расфокусировать внимание вызывает реальный дискомфорт, а то и вовсе головную боль.)
Чуть успокоившись, снова вернулся к IntB. Точнее, стал тестировать свои сайты, нашел еще пару мелких недоделок, из-за которых пришлось пересобрать пару раз дистрибутив снова. А еще создал группу IntB на Facebook и настроил автоматическую трансляцию в Twitter. И закончил где-то час назад.

1