Я и мой ёбаный кот на фоне ковра. Войти !bnw Сегодня Клубы
redeye: today simplified: TODAY (Today, today) www: http://bnw.im/today
Рекомендовали: @ivanov @o01eg
#0KQPZM / @stiletto / 4871 день назад

А оно сортирует посты за последние 24 часа по количеству комментариев?
#0KQPZM/CH5 / @o01eg / 4871 день назад
Мило.
#0KQPZM/UJO / @l29ah / 4871 день назад
@o01eg да
#0KQPZM/6ZR / @stiletto --> #0KQPZM/CH5 / 4871 день назад
@stiletto А почему не вообще посты по количеству комментариев за последние 24 часа? Вдруг срач разгорелся не сразу.
#0KQPZM/XP9 / @o01eg --> #0KQPZM/6ZR / 4871 день назад
@o01eg ну неееееее. я ебанусь придумывать как это написать
#0KQPZM/0QD / @stiletto --> #0KQPZM/XP9 / 4871 день назад
@stiletto Пейтонопроблемы.
#0KQPZM/91T / @l29ah --> #0KQPZM/0QD / 4871 день назад
@l29ah напиши мне алгоритм - я реализую, епта
#0KQPZM/HDS / @stiletto --> #0KQPZM/91T / 4871 день назад
А в зелёненьких кнопачках слева вверху оно будет?
#0KQPZM/0Q1 / @ivanov / 4871 день назад
@stiletto SELECT post_id,COUNT(*) FROM post JOIN comment WHERE comment_time < 24h GROUP BY post_id SORT BY COUNT(*)
#0KQPZM/8D2 / @o01eg --> #0KQPZM/0QD / 4871 день назад
@stiletto Как-то так
#0KQPZM/8NN / @o01eg --> #0KQPZM/0QD / 4871 день назад
@o01eg я представил план выполнения этого запроса на RDBMS и проблевался. но у нас таки mongodb и джоена у нас нет
#0KQPZM/WXM / @stiletto --> #0KQPZM/8D2 / 4871 день назад
@stiletto Берём фифо на тыщу постов, берём стек для top20; добавление комментария в пост добавляет пост в фифу и проверяет его на превышение количества комментариев у поста со дна топа; если превышает - вставка с заменой.
#0KQPZM/YA3 / @l29ah --> #0KQPZM/HDS / 4871 день назад
@l29ah Стек тоже на тыщу, да, но можно и поменьш: соточку, например. Юниты фифошки хранят указатели на элементы стека для фаст-выбрасывания. Стек - список.
#0KQPZM/2ZP / @l29ah --> #0KQPZM/YA3 / 4871 день назад
@l29ah Былинные некропосты тоже не надо. Как ты время проверять хочешь?
#0KQPZM/A9P / @o01eg --> #0KQPZM/YA3 / 4871 день назад
@o01eg Тогда переформулируй задачу.
#0KQPZM/JZU / @l29ah --> #0KQPZM/A9P / 4871 день назад
@o01eg А, ну да, фифошка ограничена размером и временем; каждый час с хвоста отрезаем всё лишнее.
#0KQPZM/X4Q / @l29ah --> #0KQPZM/A9P / 4871 день назад
@l29ah Чем тебе не нравится моя формулировка задачи?
#0KQPZM/H5G / @o01eg --> #0KQPZM/JZU / 4871 день назад
@o01eg Всё ок, я забыл про ограничение времени.
#0KQPZM/6ZY / @l29ah --> #0KQPZM/H5G / 4871 день назад
самый быстрый идиота вариант - хранить в посте дату последнего коммента и использовать её. однако это будет вызывать всплывание в топ некросрачей, к которым кто-то сегодня напейсал один коммент.
#0KQPZM/V50 / @stiletto / 4871 день назад
@stiletto Именно, поэтому надо брать срез по комментариям.
#0KQPZM/9J0 / @o01eg --> #0KQPZM/V50 / 4871 день назад
@stiletto Можно в фифошке у каждого юнита хранить количество каментов; больше пяти - добро пожаловать при следующей вставке в топ.
#0KQPZM/ZZU / @l29ah --> #0KQPZM/V50 / 4871 день назад
@stiletto Количество каментов за время пребывания в фифошке, да.
#0KQPZM/533 / @l29ah --> #0KQPZM/V50 / 4871 день назад
@l29ah А время?
#0KQPZM/EP5 / @o01eg --> #0KQPZM/ZZU / 4871 день назад
@o01eg Что "время"?
#0KQPZM/6QJ / @l29ah --> #0KQPZM/EP5 / 4871 день назад
@stiletto А чё, в mongodb нельзя делать выборки?
#0KQPZM/DMZ / @o01eg --> #0KQPZM/V50 / 4871 день назад
@o01eg Оно будет слоу, очевидно же.
#0KQPZM/8IY / @l29ah --> #0KQPZM/DMZ / 4871 день назад
Хотя с другой стороны я могу раз в час делать map-reduce по всем комментам за сегодня
#0KQPZM/2XI / @stiletto / 4871 день назад
@l29ah Делать это питоном тоже слоу
#0KQPZM/EKF / @o01eg --> #0KQPZM/8IY / 4871 день назад
@stiletto Раз в час апдейт - уныло.
#0KQPZM/3Y2 / @l29ah --> #0KQPZM/2XI / 4871 день назад
@o01eg Пейтонопроблемы-пейтонопроблемушки.
#0KQPZM/C6N / @l29ah --> #0KQPZM/EKF / 4871 день назад
@l29ah Инкрементирую
#0KQPZM/134 / @o01eg --> #0KQPZM/3Y2 / 4871 день назад
Да, фифошка действительно вариант, хранить в ней указатели на комменты за последние 24 часа и общую информацию по постам (добавляем коммент в фифошку — +1 к посту, удаляем коммент из фифошки — -1 к посту, и досортировываем список постов)
#0KQPZM/T47 / @o01eg / 4871 день назад
@o01eg А удалять последний коммент можно в момент его записи +24h и в этом же коде высчитывать новое время удаляения для нового последнего коммента.
#0KQPZM/D3R / @o01eg --> #0KQPZM/T47 / 4871 день назад
#0KQPZM/FUR / @l29ah --> #0KQPZM/D3R / 4871 день назад
Выполняется достаточно быстро, мне понравилось. Период обновления поставлю 5 минут. > db.comments.mapReduce(TODAY_MAP,TODAY_REDUCE,{out:'today',query:{'date':{'$gte':start}}}) { "result" : "today", "timeMillis" : 42, "counts" : { "input" : 294, "emit" : 294, "output" : 34 }, "ok" : 1, }
#0KQPZM/78Y / @stiletto / 4871 день назад
@stiletto JSON UH OH
#0KQPZM/VSN / @l29ah --> #0KQPZM/78Y / 4871 день назад
В общем переделал как вы требовали - теперь показывает топ постов по количеству комментариев написанных за последние 24 часа. Обновляется раз в 5 минут. Зоделано на МАПРЕДЮС, выполняется ~ 10 мс.
#0KQPZM/UC4 / @stiletto / 4871 день назад
Добавил в зеленые кнопки
#0KQPZM/3JZ / @stiletto / 4871 день назад
@stiletto Что-то их, кстати, стало дохуя
#0KQPZM/7AC / @stiletto --> #0KQPZM/3JZ / 4871 день назад
@stiletto Отлично!
#0KQPZM/O7J / @ivanov --> #0KQPZM/3JZ / 4871 день назад
@stiletto Может быть, часть кнопок вынести в шапку, над тэгами?
#0KQPZM/0UK / @ivanov --> #0KQPZM/7AC / 4871 день назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.