Обновить
81
arty@arty

Пользователь

21
Подписчики
Отправить сообщение
тем, что встроенная реализация языка наверняка оптимизирована гораздо лучше, чем то, что напишу я. А в случае питона она наверняка будет ещё и не на байткоде, а на си, что ускорит её ещё больше.

как я сказал выше, если реализация регулярных выражений сама строит префиксное дерево, то это готовый инструмент


предположим, она этого не делает. В таком случае у автора был выбор: написать с нуля свою библиотеку, или же взять готовую библиотеку построения префиксных деревьев и сконвертировать её выдачу в регексп. Второй вариант мне кажется правильнее.


сейчас, когда автор уже написал свою библиотеку, можно или использовать её ограниченные возможности, или же потрудиться чуть больше, но получить полные возможности регекспов.

ну простой вариант: new RegExp(`\\b(${replacements.join('|')})`)

если же я ошибаюсь в предположении, что реализация сама строит префиксное дерево, то всё равно не сильно сложно
ну не знаю, если есть готовый и простой в использовании инструмент, то почему его не применить? зачем то же самое переписывать самостоятельно?
100k слов даже по 100 символов это 10 мегабайт памяти, без учёта более коротких слов и «повторного использования» префиксов

посмотрю, что автору в исходной записи накомментировали
кстати, вполне может оказаться, что реализация регекспов в языке сама будет составлять префиксное дерево, и тогда можно будет обойтись банальным:

/\b(Ruby|Python|Java|J2ee)/
судя по коду на SO, вы каждый регексп прогоняли по отдельности по всему тексту. Конечно, это будет медленно. Я думаю, что если сделать сложный регексп типа приведённого мной в качестве примера, и прогнать его по тексту один раз, то это будет быстро. Заодно можно сохранить возможность находить спецсимволы и нечувствительность к регистру.
а какой результат показал сложный префиксный регексп типа такого?

/\b(?:Python|Ruby|(?:J(?:ava|2ee)))/
иронично, что Хабр рисует части этой статьи как раз светло-сереньким по белому :)
20 миллиметров? ;) это два сантиметра толщины
Не знаю, я им пользуюсь меньше полугода.
Я согласен с тобой, что у тебя возможности нет. Однако твой первый комментарий легко прочитать так «возможности ни у кого нет», а это неправда, и именно эту формулировку я оспариваю. Возможность есть, например, у пользователей Ubuntu 16.04 и 16.10.

Кстати, мне любопытно, что именно не работает? В форуме я нашёл только про проблему с запуском браузера.
Понимаю проблему, что на 5.7 не работает, но вот вывод «возможности нет» слишком её обобщает. На 5.5, которой я сейчас пользуюсь, возможность есть, и синхронизация работает.
KeePass и Enpass умеют разрешать конфликты самостоятельно
вот плохо он работает в линуксе через моно, особенно на мониторах с высоким разрешением
Я остановился на Enpass: бесплатный для десктопов, хороший клиент для линукса, работает с офлайновыми файлами (а при желании синхронизирует их через облачное хранилище на выбор), мобильное приложение стоит мало.
сервер Sentry можно вообще на свою машину установить, это вроде бы единственное open-source решение
рекомендую почитать про Sentry и Raven.js
предыдущий комментарий в некотором смысле отвечает на этот вопрос. Почти всегда нечто, разработанное государством (любым) обходится людям дороже, чем тот же продукт, разработанный частной фирмой на конкурентном рынке. Иными словами: может бесплатно раздавать, но на то, чтобы сделать, уйдёт ещё больше газиллионов.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность