Задать вопрос
Профиль пользователя заблокирован сроком «навсегда» без указания причины
  • Анализ и разбор текста

    @MikhailEdoshin
    У Apple в Newton'е был такой assistant, небольшой системный сервис, которому пишешь, например, «fax Bob», и он соображал, что нужно взять текущий документ, найти в адресной книге Боба и отправить ему этот документ по факсу. Принцип там был несложный, детали можно найти в Newton Programmer's Reference v2.0, ch. 18, Intelligent Assistant. (PDF можно найти в Google.)

    Если будете сами писать, советую присмотреться к такому методу разбора CYK — это универсальный bottom-up метод разбора, начинающий с выделения токенов в строке, и затем сворачивающий их по правилам грамматики. Целиком CYK вам не потребуется, скорее всего, потому что у вас основная проблема как раз в отсутствии грамматики, но основной принцип можно использовать примерно так:

    — Разбираете строку на слова

    — Классифицируете каждое слово. Например, пусть «ПН» будет порядковый номер, «ДН» — день недели, «М» месяц, "?" — неопредленное слово. Ваша фраза будет "?-ПН-ДН-М-?-?-?".

    — Ищете в строке паттерны (собственно, это как раз фаза свертки и получается). В данном случае паттерн «ПН-ДН-М», он у вас будет зарегистрирован для парсера дат. В другой строке у вас будет, например, «В среду по первому кино» — "?-ДН-?-ПН-?". Паттерна «ДН-?-ПН» в датах у вас не будет (вряд ли такая комбинация может обозначать дату), поэтому парсеру дат пойдет только «ДН», а «ПН» либо проигнорует, либо отдаст, например, парсеру телеканалов.

    Такой подход удобен тем, что грамматика не нужна, а подходящие паттерны вы можете определить по мере обработки данных. Я как-то писал такой парсер для адресов — неплохо разбирал, грамотно различая, например, разные «St» в «St Patrick St». Хотя и не со стопроцентной точностью, попадались там двусмысленные паттерны.
    Ответ написан
    2 комментария
  • Схема хранения изменяющихся данных с историей

    @MikhailEdoshin
    Вообще натуральная модель, насколько я понимаю, будет такой:

    Таблица 1. Vehicle (ID, Last Reading ID).

    Таблица 2. Reading (ID, Vehicle ID, Date, и измеренные значения: Fuel, Oil, Tire Pressure, и т. д.).

    Если она не устраивает по каким-то соображениям, тогда уже переходить к другим моделям. Пока что для меня, например, неочевидно преимущество хранения разнородных значений в одном поле. Да, это всё числа, но если вдруг добавится нечисловое значение, придётся существенно менять модель.
    Ответ написан
    Комментировать
  • Помогите с алгоритмом

    @MikhailEdoshin
    Если язык позволяет (C, например), можно несколько ускорить нахождение второго числа после того, как найдено первое, задав для поиска меньший интервал.

    Хотя на современных шибко умных процессорах это не обязательно будет быстрее.
    Ответ написан
    5 комментариев
  • Бесплатный моноширинный юникодный шрифт

    @MikhailEdoshin
    hivelogic.com/articles/top-10-programming-fonts

    Там не все, конечно, сильно юникодные, но с кириллицей есть. Droid Mono, например, из андроидовских шрифтов.
    Ответ написан
    Комментировать
  • Как лучше всего обеспечить прием платежей с PayPal\кредиток?

    @MikhailEdoshin
    1. Есть довольно много фирм, которые примут платеж за вас. Например, Moneybookers принимает платежи с кредиток, 2Checkout принимает и кредитки, и PayPal, и еще есть довольно много shareware-регистраторов, например, Kagi, которые уж карточки и PayPal точно принимают. Средний чек имеет значение при выборе, потому как комиссии идут от суммы покупки и разные у всех.

    Для вывода денег можно использовать, например, wire transfer на валютный счет в Сбербанке, идеально — счет валютной карты, потому как a) не будет комиссии за снятие денег, с обычного валютного счета будут удерживать 1% и б) можно подключить мобильный банк и узнавать о поступлении сразу. 2Checkout также выводит на карты Payoneer, но у меня сложилось впечатление (возможно, неверное), что это будет дороже.

    2. PayPal очень популярен в США, американцы да, первым делом спрашивают, можно ли по PayPal заплатить.
    Ответ написан
    Комментировать