
Anton
24.03.2018
16:38:00
Знакомый написал тулзу, что бы через трансиб работать

Subb98
24.03.2018
16:38:52
Поддерживаю что ли. Ну и IDE ещё.

Google

Decadent
24.03.2018
16:39:09
и для монги

Dima
24.03.2018
16:39:14

Black
24.03.2018
16:39:29

Dima
24.03.2018
16:39:39
Так что сиди и не призывай банить честных людей, потому что тебя не банят.

Anton
24.03.2018
16:39:42

rekero
24.03.2018
16:39:46

Decadent
24.03.2018
16:40:07

Subb98
24.03.2018
16:40:16
loop

Black
24.03.2018
16:40:30

rekero
24.03.2018
16:44:17

Black
24.03.2018
16:46:30
Не, я так иде и не осилил
А у тебя бывает такое, например, ты знаешь как заходит в консоль postgres, а через некоторое время забываешь, и ты начинаешь читать доки как будто с нуля изучаешь?
И так для каждой технологии

Anton
24.03.2018
16:47:12

Google

Anton
24.03.2018
16:47:25
И с гитом такое бывает и с чем угодно
Ты и в гуи так же тупить можешь долго
Особенно если сложная софтина (логик про, как пример)

Black
24.03.2018
16:48:20
Но там методом тыка все вспоминаешь, а в консоле ввод-откат
И на откат тоже читаешь доки

Anton
24.03.2018
16:48:46

Black
24.03.2018
17:00:08
Нужно будет провести эксперимент.
Есть к примеру запрос:
SELECT COUNT(*) FROM table WHERE user_id IN (...) вытаскивает количество 70к и занимает 190ms, это норма? По сути данных в IN много. Как можно ускорить запрос? Индексы есть.

Александр
24.03.2018
20:22:57
Выглядит максимально просто на первый взгляд

Black
24.03.2018
20:24:36
А как ускоряют в таких моментах?

Александр
24.03.2018
20:28:51
Единственное, что приходит в голову, это распараллеливание, у psql такое есть
Не знаю на счет того, насколько это поможет, не приходилось пользоваться
https://www.citusdata.com/blog/2016/10/12/count-performance/
Мб тут что есть

Black
24.03.2018
20:32:28
У Rails нету из коробки?

Александр
24.03.2018
20:33:04
Нет
Это особенность конкретной бд

Roman
24.03.2018
20:35:35

Black
24.03.2018
20:35:52

Roman
24.03.2018
20:36:27
ну тогда только так. если пажинация не вариант

Google

Black
24.03.2018
20:36:30

Roman
24.03.2018
20:36:39
рекомендую кешировать минут на пять хотя бы

Александр
24.03.2018
20:37:22

Roman
24.03.2018
20:37:33
аа блин

Black
24.03.2018
20:37:36

Roman
24.03.2018
20:38:13
ключ по user_id есть?

Black
24.03.2018
20:39:22
А это важно при чистом запросе?

Roman
24.03.2018
20:40:24
ну иначе будет full table scan

Black
24.03.2018
20:41:13

Roman
24.03.2018
20:41:27
набери explain
увидишь что оно делает

Black
24.03.2018
20:42:31
А на уровне ActiveRecord как проверить на присутствие ключа?

Roman
24.03.2018
20:43:59
http://guides.rubyonrails.org/active_record_querying.html#running-explain

Black
24.03.2018
20:47:59

Roman
24.03.2018
20:48:26
explain показывает, как будет выполняться твой запрос
будут ли использоваться индексы и какие

Black
24.03.2018
20:52:52

Roman
24.03.2018
20:53:17

Black
24.03.2018
20:54:46
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-----------+------------+-------+--------------------------------+--------------------------------+---------+------+-------+----------+------------------------------------+
| 1 | SIMPLE | shippings | NULL | range | index_shippings_on_district_id | index_shippings_on_district_id | 5 | NULL | 93366 | 10.0 | Using index condition; Using where |
+----+-------------+-----------+------------+-------+--------------------------------+--------------------------------+---------+------+-------+----------+------------------------------------+
1 row in set (0.03 sec)

Google

Roman
24.03.2018
20:55:52
да, индекс есть

Black
24.03.2018
20:56:59

Alex
25.03.2018
08:41:31
Ржу

Райлян
25.03.2018
18:33:07
Здрасте, подскажите где почитать про тестирование delayed jobs

Александр
25.03.2018
18:40:15
Можно выполнять в них отдельно лежащую функцию и на нее тесты накатать

Roman
25.03.2018
18:57:59
есть еще тесты, что джоба заенкьюилась

Nikita
25.03.2018
19:00:29
Похоже на тест ради теста

Roman
25.03.2018
19:29:39
с чего бы?

wi11son
26.03.2018
05:56:10
А ещё можно включить инлайн выполнение, для интеграционных тестов

Dmitry
26.03.2018
09:17:45
Если в руби все объект, то при сложении двух Fixnum => получаем Fixnum с суммой значений слагаемых. Так вот, в Fixnum значение - объект или примитивный тип?

Alex
26.03.2018
09:18:13
значение лежит где то внутри дебрей реализации
но на числе можно применять методы, потому что оно объект
я кстати не шарю есичо.
Т.е 4 = Fixnum(4) грубо говоря

ojab
26.03.2018
09:19:24
2.5.0 :001 > (1 + 1).class
=> Integer
примитивных типов не бывает

Dmitry
26.03.2018
09:20:27
ну а как тогда сложение реализовать? если примитивных типов нет
мне тоже кажется что оно где-то глубоко-глубоко зарыто
Хорошо, даже если так.
Fixnum умеет сложение с Fixnum, значение в Fixnum - Integer.
У Integer должна быть реализация сложения, и должно быть значение, чтобы складывать числа

Alex
26.03.2018
09:21:51

Google

Alex
26.03.2018
09:22:10
т.е если хочешь досконально знать - лезешь в C сорсы MRI

ojab
26.03.2018
09:23:08
а точнее rb_int_plus в сорцах mri

wi11son
26.03.2018
09:25:08
def :+ (something_else)
end

ojab
26.03.2018
09:25:55
плохо исправил, надо :+

wi11son
26.03.2018
09:26:09
сорян
:+ так тоже не работает
ща

Alex
26.03.2018
09:28:22
define_method сработает

wi11son
26.03.2018
09:29:39
2.4.3 :010 > class T
2.4.3 :011?> def +(something)
2.4.3 :012?> "#{self}#{something}"
2.4.3 :013?> end
2.4.3 :014?> end
=> :+
2.4.3 :015 >
2.4.3 :016 > T.new + 5
=> "#<T:0x00007fe18e9045f8>5"

Dmitry
26.03.2018
09:32:05
https://ruby-doc.org/core-2.5.0/Integer.html#method-i-2B
source поглядеть можно, ну в общем-то значение - тип, не объект

wi11son
26.03.2018
09:35:25
static VALUE
fix_plus(VALUE x, VALUE y)
короче возвращается некое VALUE
это VALUE — это рубишный класс
так что оно в любом случае не значение овзвращает а объект

Roman
26.03.2018
09:40:13
вопрос по newrelic:
то что на скрине - это значит где-то n+1 есть?
значения справа - это %Time, Avg Calls (per txn), Avg time (ms)