Если не лезть в дебри того, что такое «семантический поиск» и какой софт умеет его выполнять, но говорить исключительно о tsearch2 vs sphinx и ему подобных то с чего Вы взяли, что первый ничего не умеет? Желательно для начала бегло почитать что пишут, например здесь.
ts_stat по сути не предназначена для решения прикладных задач, она задумана для целей отладки и мониторинга. Она выдает статистику по тому, какие слова как часто и где встречаются. В качестве параметра она принимает текст SQL запроса, возвращающего набор полей типа tsvector, только так она сработает. В противном случае будет:
ERROR: ts_stat query must return one tsvector column
Да, я сам запутался, wataru прав, я выполнял задание в январе — детали забываются, но достаточно посмотреть на код:
((yp <= y and y < yp_prev) or (yp_prev <= y and y < yp))
как становится понятно что если один конец грани лежит на луче, а второй выше (визуально, учитывая что точка отсчета координат в левом верхнем углу) — такая грань не будет считаться пересечением.
Да, Вы правы, признаю, грань, лежащая на луче не будет засчитана, а прилегающие к ней грани посчитаются 2 раза, что выльется в результат «вне полигона». Такая ситуация требует отдельной проверки.
Не могу точно сказать проверяет ли интерпретатор python все условия или прекращает дальнейшую проверку если одна часть and конструкции является False, но скорей всего прекращает. А это значит что ((yp <= y and y < yp_prev) or (yp_prev <= y and y < yp)) будет False и до деления на 0 не дойдет. Исключение — случай когда одна из граней имеет одинаковые координаты на обоих концах, то есть точка.
Последовательно проверяются все грани полигона на пересечение с лучом, идущим из точки, куда кликнул пользователь. Четное количество пересечений или нет пересечений вовсе — точка за пределами полигона. Количество пересечений нечетное — точки внутри.
Сам удивляюсь, по сравнению со сверстницами попроще пластик почти не желтеет и кнопки не так интенсивно «полируются». Буквы нанесены лазером, не стираются, сделано на века в общем, хоть и не механика.
Однако для доказательства возраста и что вообще «ничто не вечно» привожу фото с менее выгодного ракурса:
Насчет разных контроллеров. Я понимаю, что у вас сейчас пример и заготовка. Но когда приложение обрастет функциональностью, добавятся специфичные проверки для конкретных сущностей (одна валидация для пользователей, но другая для постов), то вы получите один большой файл ответственный за всё. Да и управление доступом к сущностям странное. Какая бы сущность не существовала в приложении, я могу передать ее имя в API и иметь доступ к созданию/изменению/удалению/чтению.
Согласен, именно потому привел в статье ссылку на готовое решение restfullyii. Там в числе прочего есть и кастомный роутинг и подкатегории.
Также можно расширить мой пример, передав выбор и загрузку модели в action-ы отдельному компоненту. API контроллер разгрузится, а во внешнем компоненте мы можем городить, что угодно.
на:
— Как пропатчить KDE под FreeBSD?
— Ставь винду!
Вроде бы и ответ и даже должно сработать, но чего то все-таки не хватает.
как становится понятно что если один конец грани лежит на луче, а второй выше (визуально, учитывая что точка отсчета координат в левом верхнем углу) — такая грань не будет считаться пересечением.
Однако для доказательства возраста и что вообще «ничто не вечно» привожу фото с менее выгодного ракурса:
Согласен, именно потому привел в статье ссылку на готовое решение restfullyii. Там в числе прочего есть и кастомный роутинг и подкатегории.
Также можно расширить мой пример, передав выбор и загрузку модели в action-ы отдельному компоненту. API контроллер разгрузится, а во внешнем компоненте мы можем городить, что угодно.