Название сайта Ironaevzag происходит от двух осетинских слов Iron и Aevzag - Осетинский и Язык. Этот сайт является онлайн русско-осетинским словарем.
На главной странице расположены:
- Фильтр поиска
- Найденные слова
- Перевод выбранного слова
Когда в поле ввода фильтра поиска (1.) изменяется значение, производится запрос к сайту для поиска слов, удовлетворяющих условию поиска, заданному значением в поле фильтра. Найденные слова выводятся в вертикальном списке под фильтром.
Используя клавиши стрелок вверх и вниз можно выбрать одно из найденных слов (2.). При выборе нового слова на сайт отправляется запрос перевода этого слова, перевод появляется справа от списка найденных слов (3.)
При выборе слова фокус ввода остается на фильтре, поэтому можно в любой момент поменять значение фильтра, начав набирать новое значение.
Можно использовать два символа: подчеркивания _ и процента %. Подчеркивание обозначает одну любую букву, а процент - любое количество любых букв. Например, поиск по шаблону рос% выберет слова:
- роса
- роскошный
- роскошь
- рослый
- роспуск
- россия
- россыпь
- рост
- ростовщик
- росток
Поиск можно выполнять не только в русских словах, но и в осетинских переводах. Переключение того, в чем искать осуществляется клавишей F7 или кликом мыши на индикаторе режима поиска, расположенном в правом верхнем углу поля ввода фильтра. Значение "рус" означает, что поиск будет выполяться в русских словах, а значение "ос" что поиск будет выполняться в переводах. При поиске в переводах символы _ и % игнорируются.
При нажатии на кнопку [~`ё] вместо буквы ё печатается буква æ и режим поиска переключается в "ос". Вместо буквы ё во всех русских словах используется буква е.
Ruby On Rails 3 Приложение с помощью capistrano развертывается на VDS, 4 рабочих процесса Nginx отгружают статические ресурсы, а запросы к динамическому контенту перенаправляют 4-м рабочим процессам сервера приложений Thin.
JavaScript
- jquery
- jquery.ui
- jquery.jgrowl
- hand made jquery plugin autocomplist
Я веду разработку этого приложения с использованием BDD подхода и фреймворка cucumber. Это значит, что для каждой новой фичи я сначала пишу сценарии взаимодействия пользователя с интерфейсом сайта, затем запускаю тест (он валится), помечаю его тегом @wip (в работе), кодирую фичу и добиваюсь, чтобы сценарии отрабатывали без ошибок.
Cucumber, capibara и WebDriver подходят даже для тестирования фич заряженных JavaScript-том.
Перед тем как деплоить релизную версию на боевой сервер я запускаю все сценарии тестирования и добиваюсь, чтобы все они отработали без ошибок. Таким образом на рабочем сервере всегда безошибочно работающее приложение. Можно чувствовать себя спокойно и уверенно.
Все сценарии, которые я использую для тестирования этого приложения, находятся в папке features
Я записал короткий скринкаст для того, чтобы показать как выглядит процесс тестирования и выложил его сюда. Смотреть надо в HD, иначе не разглядеть что происходит в браузере.
P.S.
По мотивам словаря Таболова С.А на движке mDict от Затворницкого А.П.