Запущен тренажер английского языка
2009-08-09 08:12Я уже довольно давно сделал этот веб-сервис, ориентируясь, в основном, на потребности некоторых моих знакомых, но как-то не хотел рассказывать о том, что далеко от завершения. Однако, информация постепенно утекла :), и почитав и послушав отзывы попробовавших тренажер людей, хочу рассказать немного о том, как и зачем он был создан, какие проблемы встретились и о разных планах на будущее.
Тренажер для переводчика с английского языка
Сейчас существует масса программ-переводчиков, интерактивных словарей и прочих костылей, позволяющих облегчить жизнь человека, нуждающегося в чтении английского текста. Цель моего тренажера иная: предоставить возможность пройти путь к тому, чтобы выбросить костыли. Я думаю, что он нужен не всем. Это как тренажер клавиатуры: большинство людей кое-как научились бессистемно печатать и вполне этим довольны, другие - прошли безумные две-три недели тренировок, и теперь вербализуют мысли на клавиатуре, глядя в окно. Единицы нашли в себе смелость перейти на раскладку Дворака ... остальные им завидуют.
Тренажер объединяет в единое целое несколько приемов изучения языка: чтение естественного (неадаптированного) текста, подсказку переводов неизвестных слов и их зазубривание. В этом нет ничего принципиально нового, но все собрано в одно целое: веб, словарь, зубрилка слов. Такой тренажер полезен при двух условиях: постоянной потребности в чтении и базового знания языка. Соответственно, если три абзаца текста-инструкции к тренажеру показались вам написанным "для того, чтобы побольше написать", то, наверно, потребности в чтении нет и вам этот тренажер бесполезен. В общем, если есть желание - начните сразу с тренажера переводчика, работающего с веб-страницами, тех кратких пояснений, которые там даны, вполне достаточно чтобы начать, но можете посмотреть сайт тренажера английского языка, там есть подробная инструкция, FAQ и прочее. Понравиться - пользуйтесь. Будут идеи - пишете. А ниже я расскажу немного истории :), и свои впечатления от этой разработки.
Конструктивно тренажер состоит из сайта на основе нашей CMS, пары продуктов, обеспечивающих возможность быстро найти в словаре неизвестное слово и собственно "Зубрилки" на PyJamas.
Зубрилка на PyJamus
Первая версия "Зубрилки" была написана на "Си" 15лет назад, сыграла свою роль в моей жизни и забылась. В начале этого проекте "Зубрилка" была на голом JS (кстати, она неплохо работает), а вот "Зубрилка" на PyJamus писалась позже, чтобы понять, насколько эта технология пригодна для использования в реальной жизни. Результат вы можете посмотреть, вызвав тренажер словаря английского языка: это приложение с развитым интерактивным интерфейсом, который я как-нибудь раскрашу покрасивее.
Про PyJamas
Несмотря на то, что сейчас PyJamas это сырой, глючный, и не полностью реализованный компилятор питона, с бессистемной GUI-библиотекой и кривыми виджетами, он позволят быстро реализовать достаточно сложное клиентское приложение, не выходя далеко за пределы привычных средств: python и CSS. PyJamas не нужен тем, кто знает JS лучше чем Python, но для меня это возможность легко и просто реализовать несколько интерактивных приложений, которые давно хотелось сделать, но не было ясно как внедрять. PyJamas дает удобный путь перейти к от разработки веб-сервисов к клиент-серверным приложениям: реализация "одностраничного" приложения на PyJamas это удобный способ сделать полнофункциональную версию десктопного приложения, не требующую установки и работающую везде. Так что в ближайшее время ждите еще пару примеров приложений на PyJamas.
В моей недавней статье вы можете прочитать о PyJamas подробнее.
Несколько слов о самой "зубрилке"
Использованное решение позволяет быстро выучить что угодно: главное, чтобы была обучающая выборка. Используется хорошо зарекомендовавший себя в обучении нейросетей алгоритм обучения "с учителем" и адаптивным предъявлением примеров. К сожалению, положительное или отрицательное подкрепление в форме стимуляции центра удовольствия или ударов током пока технически трудно реализуемо, так что приходится надеяться на сознательность нейросети.
Тренажер английского языка позволяет составить выборку из незнакомых слов. Но это не единственный вариант: внимательный пользователь найдет в меню зубрилки пункт "загрузить таблицу умножения" : у меня подросла внучатая племянница и я собираюсь провести бесчеловечный эксперимент на живых детях в области таблицы умножения. В одном из отзывов на сервис был высказано пожелание учить "неправильные глаголы" - нет проблем, грузите таблицу глаголов и зубрите.
Сервер "Зубрилке" не нужен, ее можно загрузить даже с локального диска. Хотя, код, позволяющий подгружать дополнительную выборку в ней есть, потребность в этом возникает раз в 30-40 минут и, при отсутствии сервера, замечательно игнорируется. Интересующимся советую посмотреть исходники , хотя они и не являются ценным примером "красивого" программирования.
Словарь и серверная часть
Как оказалось, существует модуль на питоне, работающий с сервером
В процессе разработки я столкнулся с неожиданными проблемами. Как оказалось, в современном интернет, насквозь интегрированном и прошитым ссылками, нашлись какие-то невменяемые владельцы сайтов, которые не только не дают зеркалировать их страницы или открывать их во фрейме - но даже запрещают (техническими способами) ссылаться на них. Проверяют HTTP-REFERER и, если результат не нравится, так и пишут: "Вы можете ссылаться на наш сайт, если заключите контракт за $$ и т.п.". Мне это кажется дикостью даже несмотря на то, что понимаю мотивации этих людей.
Когда наберу коллекцию повнушительней, расскажу подробнее, а пока что, пользуясь случаем, хочу выразить благодарность фонду ВикиМедиа, лишний раз убедившего меня в серьезности языка python как инструмента сетевого программирование: доступ к сайтам ВикиМедиа со строкой Python-urllib в заголовке "User-Agent", запрещен. Проблема решается тремя сроками кода на питоне :), но забавно то, что другие, казалось бы более распространенные инструменты веб-зеркалирования или проксирования - от wget до perl & php - не вызывают таких проблем. Похоже, все неприятные инциденты с зеркалированием википедии, были с участием программистов на Python, с чем я нас всех и поздравляю.
Заключение
В процессе разработки тренажера переводчика английского языка я понял, что чтение веб-страниц с использованием различных вспомогательных средств - интересное решение, которое может найти широкое применение. И хотя создание его вызывает некоторые трудности я намерен обобщить этот опыт и сделать удобный инструмент для создания таких продуктов.




