+154
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
// Цитата №1: массив регулярных выражений из введённых пользователем строк
var strings = what.filter(function(e){ return e.replace(/s+/g,'').length; }).map(function(e){ var re = new RegExp(e, 'g' + (ignoreCase ? 'i' : '')); return re; });
// Цитата №2: проверяется наличие введённых строк в тексте и выводит результаты
function processText(pid, cid, text){
if(strings.every(function(re){
return re.test(text);
})){
// совпало
// тут выводится информация о совпадении для поста/комментария
// кроме вывода в консоль побочных эффектов нет
....
}
}
// Цитата №3: запуск поиска
posts.forEach(function(post){
processText(post.id, null, post.author.name + ' ' + post.text);
processText(post.id, null, post.author.name + ' ' + post.description);
post.comments.forEach(function(comment){
processText(post.id, comment.id, comment.author.name + ' ' + comment.text);
});
});
Цитаты из скрипта поиска по ГК.
Казалось бы, write-only питушня, работает - не трогать. Но, прочитав, http://govnokod.ru/16577#comment246821, решил поискать упоминания доктора по званию. Открываю найденный пост X, а там не все упоминания найдены. Меняю список постов, в которых искать - для X меняется список найденных комментариев.
Откуда такая питушня? processText почти чистая, strings, posts не меняется. Может, вывод на консоль как-то влияет?
Все волосы на жопе вырвал пока нашел в чем ошибка.
Внимание, вопрос. В чем гавно? (c) ursus
Запостил: 1024--,
05 Сентября 2014
1024-- 05.09.2014 21:16 # +1
1024-- 05.09.2014 22:48 # +2
Причина: UmVnRXhwLmxhc3RJbmRleA==
makc3d 06.09.2014 03:34 # +2
inkanus-gray 07.09.2014 22:24 # 0
kegdan 08.09.2014 05:51 # 0
bormand 08.09.2014 06:07 # +1
COGDCBCAADCBCABDCBCBODCB
CACAEADCACGGDCACGFAEB
kegdan 08.09.2014 06:12 # +4
3.14159265 08.09.2014 12:53 # 0
eth0 08.09.2014 17:14 # +1
Qwertiy 06.09.2014 00:04 # 0
1024-- 06.09.2014 01:22 # 0
А здешнюю строку №2 можно отдельным постом выкладывать, это да...
kegdan 06.09.2014 09:07 # 0
var re = new RegExp(e, 'g' + (ignoreCase ? 'i' : '')); return re;
почему не просто
return new RegExp(e, 'g' + (ignoreCase ? 'i' : ''));
?
да еще и в каждой функции проверяешь условие, которое известно глобально
1024-- 06.09.2014 17:39 # 0
А кто знает... Может, там раньше что-то побольше было (и я неправильно исправил), может я о чём-то другом думал, пока писал.
> да еще и в каждой функции проверяешь условие, которое известно глобально
Говнецо. Но на перфоманс не влияет.
А вот тут, вероятно, критичное место:
Т.к. выполняется оно для каждого из 200+К комментариев.
А с другой стороны, всё это считается за 300мс по сравнению с 5с загрузки JSON и расстановки связей и запускается крайне редко.
Вот за эти 5с надо будет побороться, т.к. модуль загрузки используется почти всеми скриптами.
bormand 06.09.2014 17:46 # +1
Блин, их так мало?!
1024-- 06.09.2014 17:48 # +2
У меня 237569 распарсено.
bormand 06.09.2014 17:58 # 0
kegdan 06.09.2014 18:01 # 0
3.14159265 07.09.2014 17:23 # +4
Санитары! Уберите это личителя!
eth0 07.09.2014 18:42 # 0
1024-- 07.09.2014 18:51 # +1
kegdan 07.09.2014 18:47 # 0
eth0 06.09.2014 17:54 # +2
kegdan 06.09.2014 17:57 # 0
Весь мир, от Европы к Неве, на восто-ок,
Над землёой везде будут петь:
«Столица, водка, советский медведь наш!»
3.14159265 07.09.2014 17:37 # 0
Лучше бота делай, вместо постинга редалертовской шизофазии.
kegdan 07.09.2014 17:38 # 0
3.14159265 07.09.2014 17:47 # +2
Кегги, вы глупеете прямо на глазах.
kegdan 07.09.2014 17:48 # 0
1024-- 09.09.2014 15:31 # 0