Почти полгода назад я написал на хабре статью о проекте математической поисковой системы 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:
Видео:Google Документы. Урок 10. Вставляем сложные математические формулыСкачать
Поисковые операторы Яндекса и Google: от базовых до продвинутых
Уточняем поиск и быстро получаем данные из выдачи
Быстро находить в поисковых системах нужную и релевантную информацию — важный навык и для обычных пользователей, и для специалистов. Для вебмастеров и сеошников углубленная работа с поисковиками — ежедневная рутина. Поисковые системы постоянно улучшают свои алгоритмы, однако выдача все еще может быть неточной или не до конца релевантной в некоторых случаях.
Получить более точные и нужные данные помогут поисковые операторы. В статье разбираем основные операторы и спецсимволы, поддерживаемые Яндексом и Google.
Первый и самый простой оператор — кавычки «». Поисковый запрос, заключенный в кавычки, позволяет получить выдачу страниц, на которых этот запрос содержится в таком виде, как он указан в строке поиска (фиксируется количество слов во фразе).
Фиксации количества слов иногда может быть недостаточно, особенно если во фразе содержится много слов — в выдачу могут попадать варианты с измененным порядком слов и словоформой. Для более точного соответствия можно добавить оператор восклицательный знак «!». Этот оператор фиксирует форму слова (падеж, число, время). Сочетание кавычек с восклицательным знаком, к примеру, позволит зафиксировать количество слов в поисковом запросе и форму каждого слова:
Знак плюса «+» — еще один уточняющий оператор. Размещается перед словом, которое обязательно должно находиться на странице.
Операторы «», ! и + можно применять в Яндекс.Вордстате в процессе подбора ключевых слов и просмотра частотности по ним. От наличия или отсутствия операторов могут существенно отличаться результаты подбора.
К примеру, если вы вводите в Вордстате обычный запрос, без операторов, сервис покажет общую частотность — учитывая все варианты словоформ, варианты с разным порядком слов и другие вложенные фразы.
Если же нужно получить «чистую» статистику по конкретному ключевику — заключите его в кавычки и увидите совсем другую картину:
Оператор «+» в основном используется для фиксации стоп-слов (служебные части речи, местоимения и т. д.). По умолчанию они могут игнорироваться поисковой системой, но если их наличие влияет на смысл фразы — используйте оператор, чтобы получать релевантную выдачу.
Есть и оператор с обратным действием — знак минуса «-». Если перед словом в поисковом запросе указать знак минуса, из выдачи будут исключены все страницы, на которых это слово содержится. Вот пример:
Обратите внимание! Если отминусовать нужно цифру, а не слово, ее нужно предварительно заключить в кавычки — иначе Яндекс воспримет цифру со знаком минуса как отрицательное число.
Оператор звездочка «*» позволяет подставить во фразу любые пропущенные слова. К примеру, если указать запрос «следуй за * кроликом», поиск найдет все варианты совпадений с указанной фразой, включая те варианты, где вместо звездочки размещено любое слово. Важно: работает, только если фраза в кавычках.
Оператор вертикальная черта «|» используется для группировки слов при сложных запросах. Обозначает логическое «ИЛИ» и позволяет получить выдачу страниц, которые содержат любое слово из запроса — или одно, или другое.
«site:» — с помощью этого фильтра можно произвести поиск не по всей базе сайтов, проиндексированных поисковой системой, а по конкретному сайту и его поддоменам. Кстати, этот оператор часто используют для проверки индексации сайта — достаточно просто указать запрос вида «site:example.ru», и в результатах поиска отобразятся все страницы, которые проиндексированы поисковой системой.
Пример использования оператора для поиска всех статей с упоминанием SEO на определенном сайте:
«host:» — этот оператор работает по такому же принципу, как и предыдущий, только позволяет сузить область поиска до конкретного хоста (поддомены не будут учитываться и выводиться в результатах поиска):
Вместо site и host можно использовать альтернативный оператор — «rhost:». Основные нюансы работы с этим оператором:
- Если нужно произвести поиск только в рамках определенного сайта, без учета поддоменов — нужно прописать запрос в таком формате: «rhost:ru.example». Обратите внимание: адрес прописывается в обратном порядке!
- Если нужно искать по сайту и его поддоменам, запрос должен выглядеть так: «rhost:ru.example.*».
Еще один схожий оператор — «url:». Производит поиск по определенному URL-адресу:
Оператор «domain:» — позволяет выполнить поиск по определенным доменным зонам. На примере ниже в результатах поиска будут только те сайты, домены которых расположены в зоне «ru» (блок контекстной рекламы — исключение, на него действие оператора не распространяется).
Ниже пройдемся еще по нескольким интересным операторам.
«inurl:» — ищет страницы, в URL которых содержится нужный запрос (слово или фраза).
«lang:» — используется для фильтрации страниц выдачи по нужному языку (например, позволяет вывести только русскоязычные результаты или страницы только на английском). Для этого необходимо указать двухбуквенный код нужного языка (ru, en и т. д.).
«date:» — пригодится тем, кому нужно получить информацию, опубликованную в конкретный период времени или самые свежие данные.
В примере выше выдача содержит страницы, последнее изменение на которых произошло в январе 2021 года или позже.
А здесь после двоеточия указан диапазон дат: 20180101..20191231. Соответственно, в выдаче — информация за период с начала 2018 по конец 2019 года.
«mime:» — оператор для поиска файлов нужного типа. Оператор поддерживает следующие типы файлов: pdf, xls, ods, rtf, ppt, odp, swf, odt, odg, doc.
Видео:ШАД - Школа анализа данных ЯндексаСкачать
Как легко понять знаки Σ и П с помощью программирования
Для тех, кто подзабыл матешу
Вот говорят, что если ты не закончил Физтех, ФПМ или Бауманку, тебе в программировании делать нечего. Почему так говорят? Потому что, дескать, ты не учил сложную математику, а в программировании без неё никуда.
Это всё чушь, конечно. Если вы плохо знаете математику, вы можете быть блестящим разработчиком. Вы вряд ли напишете драйверы для видеокарты, но вы запросто сделаете мобильное приложение или веб-сервис. А это — основные деньги в этой среде.
Но всё же, чтобы получить некоторое интеллектуальное превосходство, вот вам пара примеров из страшного мира математики. Пусть они покажут вам, что не все закорючки в математике — это ад и ужас. Вот две нестрашные закорючки.
Видео:решаем квадратные уравнения в ExcelСкачать
Знак Σ — сумма
Когда математикам нужно сложить несколько чисел подряд, они иногда пишут так:
Σ (читается «сигма») — это знак алгебраической суммы, который означает, что нам нужно сложить все числа от нижнего до верхнего, а перед этим сделать с ними то, что написано после знака Σ.
На картинке выше написано следующее: «посчитать сумму всех чисел от 5 до 15, умноженных на два». То есть:
- Взять все числа от 5 до 15 (снизу и сверху знака Σ).
- С каждым из этих чисел сделать то, что написано справа от Σ, — то есть умножить на два.
- Сложить результаты этих операций.
Давайте для закрепления ещё один пример. На картинке ниже будет сказано «Найди сумму квадратов чисел от 5 до 10». То есть «возьми все числа от 5 до 10, каждое из них возведи в квадрат, а результаты сложи».
Но мы с вами как программисты видим, что здесь есть повторяющиеся действия: мы много раз складываем числа, которые меняются по одному и тому же правилу. А раз мы знаем это правило и знаем, сколько раз надо его применить, то это легко превратить в цикл. Для наглядности мы показали, какие параметры в Σ за что отвечают в цикле:
Видео:Топ 3 худших программиста на YouTube! #код #айти #программистСкачать
Произведение П
С произведением в математике работает точно такое же правило, только мы не складываем все элементы, а перемножаем их друг на друга:
А если это перевести в цикл, то алгоритм получится почти такой же, что и в сложении:
Видео:Математика это не ИсламСкачать
Что дальше
Сумма и произведение — простые математические операции, пусть они и обозначаются страшными символами. Впереди нас ждут интегралы, дифференциалы, приращения и бесконечные ряды. С ними тоже всё не так сложно, как кажется на первый взгляд.
🌟 Видео
ВСЕ ПРО СТАЖИРОВКУ В ЯНДЕКСЕ!!Скачать
Как попасть на работу в ЯндексСкачать
Установка Яндекс Метрики | Базовый курс Яндекса про ДиректСкачать
Яндекс улуги как правельно разместиться! Регистрация заполение профиляСкачать
Как решить уравнение #россия #сша #америка #уравненияСкачать
как ВСЕГДА писать КОНТРОЛЬНЫЕ на 5? ✨без подготовки✨Скачать
Как две Алисы поругались между собой )Скачать
Как решать алгоритмические секции: помощь разработчикам, собеседующимся в Яндекс. Часть 1Скачать
РЕШЕНИЕ УРАВНЕНИЙ |ПОДРОБНОЕ ОБЪЯСНЕНИЕ КАК РЕШИТЬ УРАВНЕНИЯ / ПРОСТЫЕ УРАВНЕНИЯ 2 КЛАСС МАТЕМАТИКАСкачать
Стажировка в Яндексе ➤ Полное прохождение [влог]Скачать
Решаю Яндекс Контест / АлгоритмыСкачать
1х1: о разработке в ЯндексеСкачать
Как проверяют учеников перед ЕНТСкачать
Собеседование в Яндекс, АЛГОРИТМЫ | РАЗБОР ЗАДАЧСкачать