@proRuby

Страница 1002 из 1594
john
09.01.2018
13:47:34
не, это тестовое на собес

ojab
09.01.2018
13:47:58
pemutation занимает много времени, просот запустите на 20 объектов в массиве локально
permutation не может занимать много времени, оно ничего не считает и только создаёт Enumerator

Alex
09.01.2018
13:48:22
.permutation => #<Enumerator: [81, 8, 299, 85]:permutation>

true

Google
Dmitriy
09.01.2018
13:48:38
.permutation.map(&:join).map(&:to_i).max
если массив большой, то будет все возможные комбинации перебирать элементов массива

но решение красивое

ojab
09.01.2018
13:48:56
да не будет оно перебирать, оно Enumerator создаст

wi11son
09.01.2018
13:49:10
рубаны

Roman
09.01.2018
13:49:16
.permutation => #<Enumerator: [81, 8, 299, 85]:permutation>
да, возвращает енумератор, но посчитать все перестановки все равно придется

wi11son
09.01.2018
13:49:50
может кто знает, как избавиться от постоянной компиляции bundle exec rails assets:precompile в circle ci

Roman
09.01.2018
13:50:03
cache добавить

у них там есть

wi11son
09.01.2018
13:50:09
запускается вебпакер, и почему-то кеш не работает

Roman
09.01.2018
13:50:33
кеш не работает на сам вебпакер или на все ассеты?

wi11son
09.01.2018
13:50:42
- run: command: ls -AlhR --time-style=+"" app/javascript > asset_version && cat asset_version - restore_cache: keys: - asset-v1-{{ checksum "asset_version" }} - run: command: bundle exec rails assets:precompile - save_cache: key: asset-v1-{{ checksum "asset_version" }} paths: - public/packs - public/assets - tmp/cache/assets/sprockets

это кусок конфига

Roman
09.01.2018
13:51:03
угу вроде норм

Google
wi11son
09.01.2018
13:51:20
на шаге restore_cache говорит, что всё находит

но всё равно запускает прекомпиляцию

Roman
09.01.2018
13:51:36
ну смотри, оно конечно будет запускать

просто смысл кеша в том, что sprockets найдут свои кеши и все будет быстро

rekero
09.01.2018
13:52:00
Roman
09.01.2018
13:52:03
а вебпакер вообще ничего не кеширует

rekero
09.01.2018
13:52:12
в том же шаге

Roman
09.01.2018
13:52:29
в том же шаге
а что тестам ассеты не нужны?

wi11son
09.01.2018
13:52:54
ага, на для render_view контроллер спек

когда проверяется что-то отрендеренное на страничке

Roman
09.01.2018
13:53:10
ну и просто feature specs

контроллер-спеки кстати уже пора убивать

wi11son
09.01.2018
13:53:48
если не провебпакерить, то оно будер ругаться, что ассетов не хватает

я согласен, но вот осталось

rekero
09.01.2018
13:54:01
Roman
09.01.2018
13:54:13
так правильно, вебпакер просто не использует никаких кешей, там нечего кешировать

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

ну это зависит от приложения

у нас например feature spec покрыто все приложение почти

так что там почти все ассеты и нужны в тестах

Google
Roman
09.01.2018
13:54:56
поэтому мы вначале один раз все компилим, а потом в параллель запускаем все тесты

и они уже берут готовые ассеты, а не пытаются сами собирать

wi11son
09.01.2018
13:55:40
warning: parser/current is loading parser/ruby24, which recognizes warning: 2.4.0-compliant syntax, but you are running 2.4.1. warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri. yarn install v1.0.2 warning package.json: No license field warning No license field [1/4] Resolving packages... warning yarn@1.3.2: It is recommended to install Yarn using the native installation method for your environment. See https://yarnpkg.com/en/docs/install [2/4] Fetching packages... info fsevents@1.1.1: The platform "linux" is incompatible with this module. info "fsevents@1.1.1" is an optional dependency and failed compatibility check. Excluding it from installation. [3/4] Linking dependencies... warning "ajv-keywords@1.5.1" has incorrect peer dependency "ajv@>=4.10.0". [4/4] Building fresh packages... success Saved lockfile. Done in 176.46s. кусок лога, походу оно каждый раз делает yarn install

rekero
09.01.2018
13:56:03
ну да, иначе тесты будут их сами компилить
для дева и теста я готов идти на такие жертвы

Roman
09.01.2018
13:56:18
ну у нас это серьезные жертвы

дофига тестов реально

wi11son
09.01.2018
13:57:32
кажется я понял

мне нужно просто еще в кеш класть npm пакеты, если package.json не изменился

wi11son
09.01.2018
14:24:09
да, победил эту херню...

сделал еще один шаг - restore_cache: keys: - npm-{{ checksum "package.json" }} - run: name: Install npm dependencies command: yarn install - save_cache: key: npm-{{ checksum "package.json" }} paths: - node_modules

последний прогон занял 2:20 против 5:40 до этого

спасибо, чуваки

Roman
09.01.2018
16:16:04
не сказал бы что это более правильно

wi11son
09.01.2018
16:16:24
удалил

оно еще и не рабочее

вернулся к предыдущему решению

Roman
09.01.2018
16:16:43
хм

оно еще и не рабочее
а я знаю, почему. попробуй у себя набери yarn cache dir скорее всего путь другой у ярна теперь

Данил
09.01.2018
17:40:36
Подскажите, как мне можно сравнить быстро два массива данных из postgresql (используется activerecord и 4 rails) и внешнию бд sql server. Выбрать данные то не проблема, но как теперь с наименьшими затратами сравнить? Записи в бд простые уникальный номер и два поля с данными. Нужно пройти по перечню записей из rails и проверить даты. Записей около 500к, делать такое нужно раз в сутки. :( ну и желательно не сильно при этом напрягая обе бд.

Google
Marsel
09.01.2018
17:46:12
Залить из одной в другую в темповую таблицу

Если сравнение можно сделать с помощью sql

С помощью всяких copy можно залить очень быстро

Данил
09.01.2018
17:50:08
А так чтобы на ruby не насилуя бд?

Может как то в память массивы данных запихать и там сравнить...

Marsel
09.01.2018
17:53:58
Из одной бд экспорт таблицы в файл (как именно - зависит от бд), этот файл импорт во вторую бд. Для postgresql делал через pg_copy

Дальше зависит от того как именно надо сравнивать

Если это в sql возможно перевести, то я бы так сделал наверное

Но по идее 500к можно и в памяти обработать

Селект оттуда, селект отсюда, получил два массива. Сравнил как тебе надо

Данил
09.01.2018
17:59:51
Селект оттуда, селект отсюда, получил два массива. Сравнил как тебе надо
Вот что то не сооброжу с "сравнил как тебе надо". Какими методами? Не перебирать же каждый раз весь массив по элементно!

Marsel
09.01.2018
18:00:08
А как тебе надо сравнивать?

Каждый из первой бд с каждым из второй?

Данил
09.01.2018
18:01:51
Каждый из первой бд с одним из второй. У них уникальный номер совпадает, нужно найти те элементы массива у которых не совпали даты

Marsel
09.01.2018
18:04:37
Тогда я бы в одну бд залил, и потом select join... where

Данил
09.01.2018
18:06:36
Не удобно заливать, это нужно делать регулярно.

Если я сделаю all = Model.all А потом all.where(1) Во втором случае там где where будет запрос к бд? Или к выбранным данным?

Fedor
09.01.2018
18:10:20
Там хитро

Marsel
09.01.2018
18:10:31
Там лениво вроде

Google
Fedor
09.01.2018
18:10:56
Если ты делаешь all = Model.all, то запроса к базе не будет

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

Соответственно второй вызов будет выборкой из полученных данных

А если не в консоли, а в коде, то в момент, когда данные реально понадобятся, сформируется запрос со всеми where и прочим и вызовется

Данил
09.01.2018
18:13:08
Просто в консоли и пробовал, и при второй команде, в консоли писалось что выполнен sql запрос за столько то времени, или он обманывал?

Fedor
09.01.2018
18:14:24
Можно, но зачем?

Anton
09.01.2018
22:31:08
мб кому интересно будет, начал тут делать authorization библиотеку для руби без привязки к фреймворкам и зависимостям, посмотреть можно тут: https://github.com/davydovanton/kan любой фидбэк приветствуется

Максим
10.01.2018
07:42:29
пацаны

как понять мидл ли я уже

Anton
10.01.2018
07:44:34
как понять мидл ли я уже
Тебе должна придти во сне дева Мария и сказать это

А если серьёзно - никак

Максим
10.01.2018
07:44:46
ну а реал

вот какой бейслайн того что должен уметь мидл?

Anton
10.01.2018
07:46:53
Есть разные идеи

Я считаю, что достаточно ответственность за свой код брать

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