Олимпийка
Ехал сегодня в метро, от нечего делать разглядывал пассажиров (забыл новую книгу загузить в телефон), случайно обратил внимание на дедушку, у него под полурасстёгнутом пальто, виднелась олимпийка. Помните такую? Как новая, а ведь ей лет 20.
Я много лет, с самого детства не слышал этого слова, не вспоминал, но стоило увидеть характерного василькового цвета «олимпийскую» кофту с молнией на горле, и оно мгновенно пришло на ум. Я сейчас поискал в «Яндексе», оказывается олимпийки до сих пор продаются (например «Адидас» их выпускает), но у меня язык не поворачивается их так называть. По воспоминаниям детства, олимпийка — только советская и только синяя. Я не помню кто её носил, кажется папа, а может я сам, а может все.
«Жаворонкам» о «совах»
Жена показала прекрасный текст в журнале пользователя r2r на «@дневниках» о том «как чувствует себя „сова“ в мире, где работают с 8:30». Если ещё не читали, прочитайте. Если вы, к тому же, ещё и «жаворонок», читайте обязательно!
Я именно так себя и чувствую, когда приходится вставать рано. Я — «сова». Нет, это нельзя исправить. Девять лет школы, четыре года техникума, пять лет в университете и везде приходилось приходить рано. Как я не старался, но я спал на уроках и первых парах, ничего с этим поделать нельзя. По статистике 15% людей — яркие «жаворонки» и «совы», нас не переделать.
Добавлено 21 ноября 2009 15:32: Бирман у себя в комментариях очень правильно написал: «сова — это не тот, у кого режим дня ложиться
mod_rewrite: просмотр списка правил только один раз
У модуля mod_rewrite сервера «Апач» есть особенность, которая иногда портит много крови — после каждого переписывания URL, он просматривает список правил снова. Если ничего не предпринять, иногда происходит зацикливание, что ввергает новичков в ступор.
Мне эта особенность ни разу не пригодилась, но избавляться от неё приходится постоянно. В комментариях на «Хабре» к статье, название которой я вынес в заголовок, подсказали очень хороший способ, добавить первым правилом следующее:
# Don't loop.
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]Если перезапись URL уже происходила, то любой URL оставляем без изменений и следующего цикла обработки уже не происходит.
Функциональное тестирование и Selenium
Посмотрел «Selenium» — прекрасный, на мой взгляд, инструмент для автоматизации функционального тестирования. Из аналогов я нашёл только «Watir», но он мне показался сильно беднее (или только показался?). Платных аналогов много, в том числе от именитых IBM и HP, но хочется именно бесплатного.
Собственный опыт у меня пока небольшой (я написал несколько тестов и бегло прочитал документацию), а из прочитанного в сети я сделал вывод, что у «Селениум» есть проблемы. Вроде как он не любит фреймы (сомнительно) и стабильно работает только в Firefox (мне FF пока достаточно).
Я пока использовал только версию для Firefox (дополнение Selenium IDE). Самый простой способ изготовить тест выглядит следующим образом: открываем Selenium IDE, создаём новый тест, подготавливаем браузер (переходим на страницу, с которой тест начнётся), жмём на красную кнопку записи (справа на панели инструментов), в браузере выполняем
После того как последовательность действий в браузере была записана «Селениумом», нужно посмотреть что получилось, возможно
Вот простенький тест, который я записал, что проиллюстрировать принцип:
сохраняем тестовую строку
store THIS-IS-TEST-STRING testPhrase
открываем страницу в браузере
open /EvgenyStepanischev
жмём на ссылку, в которой содержится указанное значение и ждём, когда браузер её полностью загрузит
clickAndWait link=EvgenyStepanischev / Тестирование
жмём на ссылку, которая выбирается CSS-селектором
clickAndWait css=.edittab a.b-button-yellow
печатаем
type postText ${testPhrase}
жмём на клавишу с указанным ID
clickAndWait really_save_button1
проверяем есть ли на странице наш текст
assertTextPresent ${testPhrase}Чтобы тест выполнился, нужно указать для него базовый URL (по которому будет выполняться тест и нажать кнопку запуска теста и тест сьюта). На нашей внутренней «Вики» в «Яндексе» этот тест откроет мой кластер, найдёт там страницу «Тестирование», нажмёт на ней кнопку редактирования, напечатает в страницу
Большинство потребностей покрывается языком «Селениума»,
Есть возможность удалённого запуска тестов на нескольких браузерах и использование языков C#, Perl, Ruby, Python, PHP и Java, но я пока с этим богатством не разбирался, первые потребности вполне покрываются тем, что я уже знаю, дальнейшее — дело будущего.
Добавлено 22 ноября 2009 13:40: Андрей Ларионов подсказал ещё один бесплатный продукт — «Tellurium», но я не вижу преимуществ перед «Селениумом», зато вижу недостатки, например, усложнённый (по сравнению с «Селениумом») язык описания тестов.