LINUX.ORG.RU

Форматирование нужно выполнять на стороне пользователя, а то что они делали вообще надо делать на стадии занесения в БД. [/thread]

VictimOfLoveToLinux
()
Ответ на: комментарий от VictimOfLoveToLinux

Все равно прикольная история, но справедливости ради, следует отметить, что они все оперативно устранили.

Twissel ★★★★★
() автор топика

^[\s\u200c]+|[\s\u200c]+$ — оно служит для обрезания пробелов (в том числе в Unicode) с концов строки
К слову, исправлена ситуация была очень быстро: 10 минут потребовалось на поиск причины, 14 — на написание кода для ее исправления, и 10 — на внедрение фикса.

Фикс в студию.

pacify ★★★★★
()

On July 20, 2016 we experienced a 34 minute outage starting at 14:44 UTC. It took 10 minutes to identify the cause, 14 minutes to write the code to fix it, and 10 minutes to roll out the fix to a point where Stack Overflow became available again.

Ну хоть как-то себя оправдали.

znenyegvkby
()
Ответ на: комментарий от pacify

Скорее всего, заменили на 2 последовательных регулярки. Вот прога, которая собирает строку вида 2111112 заданной длины, и удаляет 1 в конце и в начале, в двух вариантах.

bash$ time perl -we '$_ = 2 . (1 x shift) . 2; print s/^1+|1+$//g; ' 50000

real	0m0.853s
user	0m0.844s
sys	0m0.004s

bash$ time perl -we '$_ = 2 . (1 x shift) . 2; print s/^1+//g, s/1+$//g; ' 50000 

real	0m0.028s
user	0m0.000s
sys	0m0.000s
lodin ★★★★
()

огромного числа посетителей сервиса, заходящих на него через главную страницу.

Ни разу на их главной не был

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

Ни разу на их главной не был

чуваки явно что-то напутали - главная их страница называется гугл.

vtVitus ★★★★★
()
Ответ на: комментарий от lodin

От реализации регэкспов зависит. По идее время должно быть линейно относительно входного потока. В той же java время работы этих двух случаев не сильно отличается.

vtVitus ★★★★★
()

То ли у них очень тупой движок регэкспов, то ли одно из двух.

tailgunner ★★★★★
()

вообще имхо странная регулярка со странным назначением. ну нафига резать пробелы именно в конце строки? я понимаю просто везде где пробелов больше одного заменять одним (кроме кода, там путь юзер как хочет извращается).

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)

Странная регулярка, лорчую, я бы сделал «^\p{Zs}+|\p{Zs}+$» - на моём рабочем i5, на строке из 20000 пробелов с буквой в начале и конце, оно выполняется 1583мс вместо 5680мс у оригинальной. А правильный вариант - разбить на две регулярки «^\p{Zs}+» и "(?<=\p{Zs}+)$" вовсе выполняется за 2мс.

Opxocc
()
Ответ на: комментарий от vtVitus

Зависит, конечно. В js вроде тоже почти одинаково получилось. SO вроде на С#, не знаю, как там у них.

lodin ★★★★
()
Ответ на: комментарий от Twissel

\p - это префикс соответствия группе символов юникода: например \p{L} - это любая буква любого языка, а \p{Zs} - любой юникодный невидимый разделитель занимающий место, а не только ASCII группа \s и 0x200C

Opxocc
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.