
Alex
15.02.2018
23:06:34
Всем доброго времени суток!
Стоит задача создать xml файл для выгрузки на яндекс.маркет.
Объем файла несколько миллионов строк.
Куча связей в моделях.
Гипотетически берем 100к записей со связи, назовем из ItemVariant.
Каждые 10к при создании файла через Nokogiri съедают по 2 GB RAM
Вопрос: 1) стоит ли в режиме реалтайма использовать postgress или предварительно сформировать хэш нужных данных и скормить nokogiri? 2) Как можно оптимизировать по другому?
Файл формируется стандартно. Строится дерево Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|, а данные дергаются из постгресса. Когда дерево построенно вызывается метод to_xml и данные записываются в файл

F
16.02.2018
05:09:56
Почему unicorn выдает ошибку listen loop error: unsupported address family: ss_family=202 (socklen=0) (RuntimeError)?

Alex
16.02.2018
05:55:21
/watch?v=m1jOWu7woKM
dhh be like:
callbacks.. mmm awesome!
concerns.. wow just love it!
global variables.. oh, delisious!

Google


Максим
16.02.2018
09:52:11
Ребят, возник большой спор, есть задача: найти пропущенный элемент в неотсортированном массиве 1..n, т.е. in: [3,5,1,4] out: 2
Понятно, что она решается через формулу арифметической прогрессии, т.е. ищем сумму ряда, потом из нее вычитаем сумму массива, получаем искомое число, сложность O(n) с точностью до множителя перед n.
Но какая сложность(с точностью до множителя перед n) будет при алгоритме:
- Строим массив размера N (Массив A изначальный массив B новый)
- Заполняем построенный массив B[A[i]-1]=1
- Идём по массиву B и ищем индекс, значение по которому не равно 1 и из значения вычитаем 1 - это и будет результат
Какая сложность будет у такого решения? Я считаю, что сложность O(3n) [O(n) построение + O(n) установка единиц + O(n) поиск]
Но мне доказывают, что сложность такого алгоритма O(2n), т.к. построение вспомогательного массива (аля Array.new(N) или int[] var = new int[5];) в O алгоритма не учитывается, т.к. это оверхед.
тоже думаю 3n
но если расскажешь что такое оверхед то может пойму сам чего


F
16.02.2018
10:00:36
selenium_chrome_headless почему выдает Net::ReadTimeout?

Dmitriy
16.02.2018
10:02:37


Anton
16.02.2018
10:05:27
Ребят, возник большой спор, есть задача: найти пропущенный элемент в неотсортированном массиве 1..n, т.е. in: [3,5,1,4] out: 2
Понятно, что она решается через формулу арифметической прогрессии, т.е. ищем сумму ряда, потом из нее вычитаем сумму массива, получаем искомое число, сложность O(n) с точностью до множителя перед n.
Но какая сложность(с точностью до множителя перед n) будет при алгоритме:
- Строим массив размера N (Массив A изначальный массив B новый)
- Заполняем построенный массив B[A[i]-1]=1
- Идём по массиву B и ищем индекс, значение по которому не равно 1 и из значения вычитаем 1 - это и будет результат
Какая сложность будет у такого решения? Я считаю, что сложность O(3n) [O(n) построение + O(n) установка единиц + O(n) поиск]
Но мне доказывают, что сложность такого алгоритма O(2n), т.к. построение вспомогательного массива (аля Array.new(N) или int[] var = new int[5];) в O алгоритма не учитывается, т.к. это оверхед.
есть еще другой вариант, без явной итерации, но я точно хз за сложность тут
[8] pry(main)> arr = [3, 5, 1, 4]
=> [3, 5, 1, 4]
[9] pry(main)> Range.new(*arr.minmax).to_a - arr
=> [2]


F
16.02.2018
10:06:22

Anatoly
16.02.2018
10:07:33
есть еще другой вариант, без явной итерации, но я точно хз за сложность тут
[8] pry(main)> arr = [3, 5, 1, 4]
=> [3, 5, 1, 4]
[9] pry(main)> Range.new(*arr.minmax).to_a - arr
=> [2]
Ну это просто красивое решение на конкретном ЯП, сложность будет большой )
Мой вопрос больше касательно алгоритмов, нужно ли учитывать сложность создания вспомогательного массива, или ей можно пренебречь.

Dmitriy
16.02.2018
10:09:55
да, 2.35
На самом деле очень много разных вариантов может быть. docker? гемы какие? система? что делаешь?)

F
16.02.2018
10:11:34

Максим
16.02.2018
10:12:46

F
16.02.2018
10:12:50
делал так https://medium.com/table-xi/a-quick-guide-to-rails-system-tests-in-rspec-b6e9e8a8b5f6 но не работает

Dmitriy
16.02.2018
10:13:11
"If you use the headless_chrome driver on an older version of Chrome or on Windows, you will get a NetReadTimeout error" ?

F
16.02.2018
10:14:45
версия хрома Version 64.0.3282.167 (Official Build) (64-bit)

Google

F
16.02.2018
10:14:54
это на арч линукс

Roman
16.02.2018
11:00:13
да, 2.35
вроде 2.39 первая поддерживает не?
а, я напутал значит. сетап в докере, нет?

Dima
16.02.2018
11:39:06
взято от сих: https://www.sitepoint.com/get-the-low-down-on-ruby-modules/
Но там приводится пример замерения времени метода. Засекли точку входа, засекли точку выхода. При помощи prepend module. А вот такое считвотство объектов оно зачем?

Artem
16.02.2018
11:42:51
В эту субботу марсианин Тимур Рамазанов выступит в Алматы на Ruby-Ata http://amp.gs/xUqP с докладом про Sidekiq.

Dima
16.02.2018
11:46:21
https://gist.github.com/lbvf50mobile/ba8cdf561eef5d45b747f71ec515747a - вот как замерять.
Но скажу честно что это за такое ObjectsSpace.count_object я не до конца понимаю
и зачем оно там в примере

Vasiliy
16.02.2018
11:52:36
в документации к ObjectSpace http://ruby-doc.org/core-2.3.0/ObjectSpace.html#method-c-count_objects видно что метод возвращает хэш и идёт обращение к хэшу по ключу

Dima
16.02.2018
11:53:12

Vasiliy
16.02.2018
11:54:03
затем же зачем и эта статья - демонстрация того как работает руби
а вот зачем тебе эта статья не понятно

Dima
16.02.2018
11:55:17

Vasiliy
16.02.2018
11:56:18
зачем тебе это нужно?
там просто демонстрируется что ты можешь препендить по условию
а количество ObjectSpace.count_objects[:FREE] просто для примера взято

Dima
16.02.2018
11:58:37

Google

Dima
16.02.2018
11:59:45
Это автор Fread Heath человек разумный и точный, каждое его действие может что-то хорошее раскрывать.

Alex
16.02.2018
12:01:15
ясно

Vasiliy
16.02.2018
12:03:05
ну если ты в учебных целях, без нагрузок зачем-то лезешь в инфу GC и задаешь вопросы что это, то явно тебе это не нужно
если конечно нет желания стать теоретиков 100лвл

Alex
16.02.2018
12:06:38
- задает вопрос потому что не может разобраться
- я сам разберусь

Dima
16.02.2018
12:07:03

Alex
16.02.2018
12:08:49

Artem
16.02.2018
12:12:58
ого у вас батл)

kolas
16.02.2018
12:14:46
это разве батл? никто даже не обозвал оппонента дураком ?

Vasiliy
16.02.2018
12:15:49
Твой джун моему в подметки не годится. Мой ебашит вообще адовый код. Ну такой вот примерно алгоритм усредненный, потому что вариаций масса. Берется код, он не рефакторится, рефакторить — это не про моего джуна. Он берет это код, вываливает его в редактор и начинает править. Добавляет в него огромное количество коллбеков, вызовов GC, глобал обжектов и сиквела для вязкости, жса сверху. Все это пишется до дыма от клавиатуры. Потом заливается в продакшен и дебажится прям там. Потом джун делает PR и начинает ждать когда его примут. При этом все комментарии фиксит на проде и помечает решёнными. Коммитит и приговаривает полушепотом ух бля. При этом у него на лбу аж пот выступает. Любезно мне иногда предлагает не писать тесты, но я отказываюсь. Надо ли говорить о том какой дичайший пердеж у сеньоров потом? Вонища такая, что обои от стен отклеиваются.

Илья
16.02.2018
12:16:17
про батю лучше

Roman
16.02.2018
12:17:34
Джуниор подруги мамы

Alex
16.02.2018
12:18:22

Roman
16.02.2018
12:18:51

Alex
16.02.2018
12:19:02
тоже так щитаю

Marsupilami!
16.02.2018
12:24:30
Весело тут у вас, пожалуй, я останусь

Alex
16.02.2018
12:24:47

Marsupilami!
16.02.2018
12:27:22
это же только для синьоров и кофаундеров чат?

Alex
16.02.2018
12:29:55
это чат для джунов
иногда пробегает редкий мамонт сеньора

Google

Alex
16.02.2018
12:30:10
ему задают вопрос и он пропадает.

alteregoizm
16.02.2018
12:30:29
и мы толпой закидываем его вопросами

Marsupilami!
16.02.2018
12:31:51
го тогда в #ruby-lang на freenode

Admin
ERROR: S client not available

Alex
16.02.2018
12:32:19
нафига мне irc если я юзаю телегу?

alteregoizm
16.02.2018
12:32:47
ого, irc жив

Marsupilami!
16.02.2018
12:33:36

Alex
16.02.2018
12:33:55
а к чему ты про freenode тогда?

Marsupilami!
16.02.2018
12:34:09

Alex
16.02.2018
12:34:32
если у меня вопрос я могу и до создателя гема докопаться, вытащить email из гита например
про сеньоров это так шутка была
тут сидит 830 сеньоров, очевидно же.

rekero
16.02.2018
12:35:55
и 20 архитекторов

Marsupilami!
16.02.2018
12:36:08
и 1 кофаундер
успешный 19 летний кофаундер
не
лучше успешный 17 летний кофаундер

Alex
16.02.2018
12:37:04
и в 17 лет можно

rekero
16.02.2018
12:37:14
в 17 лет уже поздно
мозг не такой пластичный

Google

rekero
16.02.2018
12:37:30
стартап не взлетит

Marsupilami!
16.02.2018
12:38:52
ok, -2147483648 летний кофаундер
человек-успех

Oleg
16.02.2018
12:39:07
Так и переполнение можно словить

Roman
16.02.2018
12:44:07

Anton
16.02.2018
13:05:57

Artem
16.02.2018
13:19:56
насколько понимаю, джуны, что-то вроде крепостных как раньше были

Rafkat
16.02.2018
13:21:32
Хотя нет, трушная 4я же

Marsupilami!
16.02.2018
13:22:09
да-да
еще на руби из перла перешел
живу с мамой

Vasiliy
16.02.2018
13:23:07
ты с букинга чтоли