Почти полгода назад я написал на хабре статью о проекте математической поисковой системы uniquation.ru. Тогда была получена конструктивная критика, которая помогла улучшить проект.
С тех пор проект претерпел множество изменений, главное из которых — визуальный ввод формул — теперь, чтобы найти информацию о каком либо математическом объекте, необязательно знать его представление в формате TeX.
В развитии проекта было несколько переломных точек, первая — это участие в Imagine Cup 2009, когда он был представлен публике, второй — запуск альфа-версии и анонс на хабре. После этого события со мной связался создатель dxdy.ru, и в результате сотрудничества появилась специализированная версия поиска, которая ищет только по этому форуму — uniquation.ru/dxdy, а на самом форуме — форма поиска.
В свою очередь, после прочтения статьи на хабре Опыт создания решебника на базе MediaWiki, уже я связался с автором и предложил сотрудничество — результат тот же: специализированная версия с поиском по pluspi.org — uniquation.ru/pluspi и форма поиска на сайте решебника.
Я абсолютно уверен, что эти изменения произошли бы и без влияния хабра, но позже; а раннее их внедрение спровоцировало рефакторинг кода пауков, а также части индексатора, что благотворно повлияло на архитектуру, и даже сейчас те изменения способствуют более быстрому изменению кода.
Самые важные изменения с момента предыдущего запуска: добавление визуального ввода формул и группировка одинаковых по смыслу формул в выдаче. Первое позволяет пользоваться системой, не зная теха, а второе — получить нужный результат быстрее, так как теперь при запросе '\sin(x+y)' первая страница поисковой выдачи не замусорена формулами вида: '\sin(a+b)' и '\sin(x+y)' — и содержит, скорее всего, искомую формулу синуса суммы.
Кроме этого на сайте появился интерактивный учебник по языку TeX, который может быть полезен тем пользователям, которые не используют windows7.
Основной подход при разработке системы в выборе технологий очень прост — писать на том, на чем умею, и стремиться избежать vendor lock-in. В данном случае это язык C# и две реализации платформы: mono и .net framework.
К сожалению, исключить vendor lock-in на клиенте не удалось, так как сносный компонент для визуального ввода формул доступен в виде COM-компонента windows 7, а единственной платформой RIA с доступом к COM является silverlight 4. Его выход около месяца назад позволил быстро реализовать ввод формул.
В текущий момент идет работа над тем, чтобы сделать серверную часть распределенной. Модификация работы с базой данных позволила свести любую операцию к чтению или записи по ключу, что прекрасно ложиться на DHT. Пока используется MySQL, но, возможно, в будущем это будет что-нибудь из мира NoSQL.
Другим аспектом (помимо базы данных) создания распределенной системы является реализация общения между машинами. Стремление держаться подальше от vendor lock-in наложило табу на WCF и MSMQ, а желание минимизировать воздействие на будущее неудачными архитектурными решениями сегодня спровоцировало выбор независимых систем кодирования и передачи сообщений. В качестве кодирования была выбрана Protocol Buffers от Google — конце концов Uniquation — тоже поисковая система:) Проблема заключалась в том, что Google предоставляет API только для C++, Java и Python, а сторонние библиотеки являются слишком молодыми и тяжелыми. В качестве решения я впервые использовал IKVM.NET — программу, которая одной командой превращает java's jar в .net's dll. Данное приложение уже сейчас позволяет сконвертировать проект уровня eclipse)
Данная фраза работает и здесь. Еще в комментариях к прошлому посту была высказана идея о поиске не конкретного решения, а класса решений, совместимых с данным запросом — это позволит развить поисковую систему математической информации в CAS. Мы выступали на втором Hackday'е с этой идеей и заняли второе место, данный прототип назывался GaloisWiki (его анонс на hackday2).
Процесс работы над GaloisWiki:
С тех пор проект претерпел множество изменений, главное из которых — визуальный ввод формул — теперь, чтобы найти информацию о каком либо математическом объекте, необязательно знать его представление в формате TeX.
О влиянии хабра
В развитии проекта было несколько переломных точек, первая — это участие в Imagine Cup 2009, когда он был представлен публике, второй — запуск альфа-версии и анонс на хабре. После этого события со мной связался создатель dxdy.ru, и в результате сотрудничества появилась специализированная версия поиска, которая ищет только по этому форуму — uniquation.ru/dxdy, а на самом форуме — форма поиска.
В свою очередь, после прочтения статьи на хабре Опыт создания решебника на базе MediaWiki, уже я связался с автором и предложил сотрудничество — результат тот же: специализированная версия с поиском по pluspi.org — uniquation.ru/pluspi и форма поиска на сайте решебника.
Я абсолютно уверен, что эти изменения произошли бы и без влияния хабра, но позже; а раннее их внедрение спровоцировало рефакторинг кода пауков, а также части индексатора, что благотворно повлияло на архитектуру, и даже сейчас те изменения способствуют более быстрому изменению кода.
Об изменениях
Самые важные изменения с момента предыдущего запуска: добавление визуального ввода формул и группировка одинаковых по смыслу формул в выдаче. Первое позволяет пользоваться системой, не зная теха, а второе — получить нужный результат быстрее, так как теперь при запросе '\sin(x+y)' первая страница поисковой выдачи не замусорена формулами вида: '\sin(a+b)' и '\sin(x+y)' — и содержит, скорее всего, искомую формулу синуса суммы.
Кроме этого на сайте появился интерактивный учебник по языку TeX, который может быть полезен тем пользователям, которые не используют windows7.
О технологиях
Основной подход при разработке системы в выборе технологий очень прост — писать на том, на чем умею, и стремиться избежать vendor lock-in. В данном случае это язык C# и две реализации платформы: mono и .net framework.
К сожалению, исключить vendor lock-in на клиенте не удалось, так как сносный компонент для визуального ввода формул доступен в виде COM-компонента windows 7, а единственной платформой RIA с доступом к COM является silverlight 4. Его выход около месяца назад позволил быстро реализовать ввод формул.
В текущий момент идет работа над тем, чтобы сделать серверную часть распределенной. Модификация работы с базой данных позволила свести любую операцию к чтению или записи по ключу, что прекрасно ложиться на DHT. Пока используется MySQL, но, возможно, в будущем это будет что-нибудь из мира NoSQL.
Другим аспектом (помимо базы данных) создания распределенной системы является реализация общения между машинами. Стремление держаться подальше от vendor lock-in наложило табу на WCF и MSMQ, а желание минимизировать воздействие на будущее неудачными архитектурными решениями сегодня спровоцировало выбор независимых систем кодирования и передачи сообщений. В качестве кодирования была выбрана Protocol Buffers от Google — конце концов Uniquation — тоже поисковая система:) Проблема заключалась в том, что Google предоставляет API только для C++, Java и Python, а сторонние библиотеки являются слишком молодыми и тяжелыми. В качестве решения я впервые использовал IKVM.NET — программу, которая одной командой превращает java's jar в .net's dll. Данное приложение уже сейчас позволяет сконвертировать проект уровня eclipse)
О будущем
Будущее — это хорошо забытое прошлое.
Данная фраза работает и здесь. Еще в комментариях к прошлому посту была высказана идея о поиске не конкретного решения, а класса решений, совместимых с данным запросом — это позволит развить поисковую систему математической информации в CAS. Мы выступали на втором Hackday'е с этой идеей и заняли второе место, данный прототип назывался GaloisWiki (его анонс на hackday2).
Процесс работы над GaloisWiki: