@proRuby

Страница 963 из 1594
Oleg
07.12.2017
14:57:18
Ну лучше конечно у автора спросить

Да там не мерит по реальным тикам, не замерить на сколько быстрее

А так вообще прям лисп вспомнился

С рекурсиями

Google
Michael
07.12.2017
15:01:30
$: 16.digits => [6, 1]

Anton
07.12.2017
15:01:55
Только это рубишное?

Или рельсовое или руби 2.4?

Oleg
07.12.2017
15:02:18
Рельсовое

Так что увы

Michael
07.12.2017
15:02:54
черт)) я уже потерялся, что рельсовое, что рубишное))

Oleg
07.12.2017
15:03:00
А не

Я не на том типе данных проверил

Да, рубишное

Да, путаница та ещё ?

2.days.ago и тп

Но задача всё-равно не интересная потому что нет замера скорости

Google
Oleg
07.12.2017
15:04:07
Или там колво символов хотябы

Anton
07.12.2017
15:05:00
Это тебе не гольф

Хотя гольф приелльная штука

* прикольная

Oleg
07.12.2017
15:07:37
Если меряться крутостью кода, то по критериям

Michael
07.12.2017
15:10:01
что то я залип в эту задачку)))

Буду кстати рад любому чтиву на эту тему

No
07.12.2017
15:47:24
Скажите мне товарищи, нубский вопрос хочу выдать

Допустим есть N+1, но не классический N+1, а связанный с COUNT запросами

Каждый этот запрос отрбатаывает за 0,2ms

Допустим их 25-50

Времени это не занимает

Критично ли это по каким-то другим критериям?

Подозреваю, что критично, но чисто интуитивно

Знаю как это пофиксить, но plain sql писать вообще не хочу

Eugene
07.12.2017
15:49:12
А быстродействие может сильно упасть в будущем? Число записей там вырасти?

Если дашь пример, то может и без SQL будет решение

No
07.12.2017
15:49:32
Там их и сейчас не мало, но каунт довольно быстрый

Потому что много условий для рассчёта

Google
No
07.12.2017
15:51:59
Сейчас попытаюсь описать пример, сек

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

Тобишь по итогу на кажде событие летит три count запроса, которые отрабатывают быстро

Но на странице пусть будет 50 событий

Тобишь 150 запросов, которые в сумме займут околок 30-40мс, что не критично

Критично ли само колличество запросов?

Eugene
07.12.2017
16:08:36
Можно одним запросом получить все события. А вторым эту статистику для событий из первого запроса. Ну и сгруппировать там по айдишнику в хэш. А в цикле уже доставать это из хэша

Раз уж зашел разговор о производительности - посоветуйте плз сервисы для мониторинга типа new relic, только дешевые?)

No
07.12.2017
16:54:11
по этой соединяющей таблице и определяется колличество

но тут вопрос в другом

колличество запрсоов является критичным фактором? создает ли это какую-то дополнительную нагрузку на базу?

если нет - то перфоманс устраивает и оптимизировать это не имеет смысла

Иван
07.12.2017
16:57:27
можно наврно как то так: Event.joins(:users).select("events.*, count(user_events.id) as total_users, sum(user_events.status = 0) as bounded_users, sum(user_events.status = 1) as started_users, sum(user_events.status = 3) as finished_users")

ну это при event has_many users through user_events

No
07.12.2017
16:59:52
не факт что поможет, но попытаюсь обдумать эту идею

Иван
07.12.2017
17:01:36
ну и если пг, то там надо будет делать sum((user_events.status = 0)::int)

Google
No
07.12.2017
17:01:42
MySQL

Vladimir
07.12.2017
17:01:49


rekero
07.12.2017
17:02:19
где условие в elsif?

Andrew
07.12.2017
17:02:22
elsif замени на else

Vladimir
07.12.2017
17:02:44
где условие в elsif?
встречал, что так можно...

Иван
07.12.2017
17:18:00
не факт что поможет, но попытаюсь обдумать эту идею
еще как вариант поковрыять https://github.com/magnusvk/counter_culture там есть возможность сделать кастомные couter cache с условиями

No
07.12.2017
17:27:15
ещё нюанс

знаю, что так можно сделать

но не помню как

я делаю group - мне возвращает релейшен

как заставить вернуть хэш с ключом по ключу групировки?

Иван
07.12.2017
17:36:30
Ну если ты после группировки вызовешь какую нибудь аггрегирующую функция типо sum, count, min итп то должен вернуться хеш

или ты про что то другое?

No
07.12.2017
17:46:05
всё, уже разобрался

спасибо

получилось оптимизировать, отрабатывает в два раза быстрее бонусом

завтра надо будет запариться с чистым кодом ещё

Иван
07.12.2017
17:47:50
как в итоге сделал?

Google
No
07.12.2017
17:48:23
сделал твой вариант выше

правда немного модифицировал

но идея осталась та же, модифицировал чисто под нужды моего приложения

в итоге делаю запрос на список сущностей

а потом запрос на все необходимые каунты, отдельный

и маплю их на презентере

единственнное - мне не нравится, что ActiveRecord возвращает мне релейшен с объектами, которые по факту ничего не значат в этом контексте

вылечу своим конвертором в хэш

Dima
07.12.2017
20:45:08
можно ли как нибудь улучшить этот код? def digital_root(n) res = n.to_s.chars.map{|n| n.to_i}.reduce(:+) res.to_s.chars.size > 1 ? digital_root(res) : res end https://www.codewars.com/kata/sum-of-digits-slash-digital-root/train/ruby
Тут 2 цикла map потом reduce их можно упаковать в один цикл reduce: def digital_root(n) n < 10 ? n : dr(n.to_s.each_char.reduce(0){|sum,x| sum += x.to_i}) end alias dr digital_root

Ярослав
07.12.2017
21:47:24
Тут 2 цикла map потом reduce их можно упаковать в один цикл reduce: def digital_root(n) n < 10 ? n : dr(n.to_s.each_char.reduce(0){|sum,x| sum += x.to_i}) end alias dr digital_root
Можно вообще рекурсию убрать и получится один цикл. Как-то так: def digital_root(n) result = 0 loop do result += n % 10 n /= 10 result = result % 10 + result / 10 if result % 10 != result return result if n.zero? end end

Если немного ужать код: def digital_root(n, b=10) r = 0 loop do r, n = (r + n % b) % b + (r + n % b) / b, n / b return r if n==0 end end

Pavel
08.12.2017
09:33:32
Подскажите как найти описание вот этого синтаксиса s.scan(/\d+/)? Вчера решал кату с поиском цифр в тексте, пробовал разные поиски типа define range, define symbols и так далее и пришлось просто скопипастить вот такую готовую структуру

"^[0-9]" либо вот такую

по какому слову можно найти описание как составлять такие диапазоны?

Pavel
08.12.2017
09:35:31
Точно, спасибо!

Страница 963 из 1594