@rubylang

Страница 1598 из 1684
Eugene
28.08.2018
14:41:02
народ, задачка на подумать, звучит как что-то что уже обсасывалось, а может и нет… Есть массив объектов с двумя полями: price и max_items. Поле price - просто цена товара. Поле max_items говорит о том, сколько товаров включая этот можно положить в одну корзину. Например, если max_items == 1, то этот товар может быть в корзине только один. Если max_items == 2 - то если в корзине лежит такой товар, к нему можно положить еще один. Задача: найти в заданом массиве комбинацию из (up to 3) элементов, сумма цен которых будет максимально возможной. Например, это может быть один элемент { price: 9999, max_items: 1 }, или два элемента [{ price: 5000, max_items: 3 }, { price: 5000, max_items: 2 }], или три. Из того что мне приходит в голову - в лоб - перебирать от 3 до 1 все возможные комбинации, и брать max из этого. Но может есть более элегантные решения
Похоже на задачу укладки рюкзака https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE_%D1%80%D0%B0%D0%BD%D1%86%D0%B5

No
28.08.2018
14:41:34
А по условия задачи - нам как раз max найти надо

Aleksey
28.08.2018
14:42:15
в моем случае max тоже есть - только это не цена итоговая, а кол-во предметов

Google
Aleksey
28.08.2018
14:42:43
по идее можно попробовать поменять местами параметры

No
28.08.2018
14:43:08
Чем не подходит моя идея выше?

а

я неправильно понял условие похоже

s
28.08.2018
14:53:01
а почему не правильно? если упорядочить по цене, то сумма максимальных цен будет тем, что нужно)

s
28.08.2018
14:55:14
почему нельзя?

Aleksey
28.08.2018
14:55:42
потому что условие задачи такое ) дан массив элементов, ни больше ни меньше )

шаг 1: берем итемы с max == 1 - среди них берем самый дорогой, это первый кандидат шаг 2: берем итемы с max == 2 - комбинируем с другими из этой же группы по парам, а так же с теми что из группы ниже - берем самую дорогую комбинацию шаг 3: берем итемы с max == 3 - комбинируем друг с другом по 3, берем максимальную сумму шаг 4: берем максимум из трех шагов выше… вроде норм, хотя элемент перебора есть

Pavel
28.08.2018
14:59:17
Возможно есть решения математические, это раздел исчислительной комбинаторики

biert
28.08.2018
15:03:08
Ребята, а может быть ситуация что на локалхосте некоторый код получение данных через xhr и заполнением потом данными страницу работает ибо он медленнее продакшна, а на продакшине ошибки из-за слишком быстрого получения данных

Смерть
28.08.2018
15:07:29
Возможно, если у тебя код асинхронный и криво написаны синхронизации

Google
biert
28.08.2018
15:21:01
ну типо есть call и потом колбек on success

я че-т разобраться не могу

Смерть
28.08.2018
15:49:33
ну типо есть call и потом колбек on success
Там много факторов может влиять, покажи конкретные куски кода

Иван
28.08.2018
16:39:04
шаг 1: берем итемы с max == 1 - среди них берем самый дорогой, это первый кандидат шаг 2: берем итемы с max == 2 - комбинируем с другими из этой же группы по парам, а так же с теми что из группы ниже - берем самую дорогую комбинацию шаг 3: берем итемы с max == 3 - комбинируем друг с другом по 3, берем максимальную сумму шаг 4: берем максимум из трех шагов выше… вроде норм, хотя элемент перебора есть
по идее можно сгруппировать по max_item чтоб получился хэш и отсортировать массив в каждом ключе по цене далее для каждой группы(n) брать n последних элементов из хэша по текущей группе и по n-1 последних элементов из хэша для каждой последующей группы эти 2 получившихся массива из элементов сложить, отсортировать по цене и взять n последних элементов что и будет максимальным для текущей группы

Gregory Tereshko
28.08.2018
19:42:43
Друзья, кто-нибудь работал с докером и гемом orats для создания rails-проекта (https://github.com/nickjj/orats)? В общем создал проект, докерфайл, докеркомпоз. Все как полагается. Запускаю docker-compose up --build Но приложение не стартует. Кидает такую ошибку в лог: https://i.imgur.com/8NHLLpC.png Вообще никакого представления не имею что это. Может быть есть идеи Спасибо)

Dmitry
28.08.2018
19:56:31


Gregory Tereshko
28.08.2018
20:00:03
website_1 | /usr/local/bundle/gems/pg-1.1.0/lib/pg.rb:4:in `require': Error relocating /usr/local/bundle/gems/pg-1.1.0/lib/pg_ext.so: rb_enc_alias: symbol not found - /usr/local/bundle/gems/pg-1.1.0/lib/pg_ext.so (LoadError)

wi11son
28.08.2018
20:52:49
Перебилдить гем pg нужно по всей видимости

Gregory Tereshko
28.08.2018
21:46:25
Перебилдить гем pg нужно по всей видимости
А как это сделать? Если я и так с тегом build запускаю

Sergey
29.08.2018
10:27:09
website_1 | /usr/local/bundle/gems/pg-1.1.0/lib/pg.rb:4:in `require': Error relocating /usr/local/bundle/gems/pg-1.1.0/lib/pg_ext.so: rb_enc_alias: symbol not found - /usr/local/bundle/gems/pg-1.1.0/lib/pg_ext.so (LoadError)
погугли ошибку. Потом сделай 1 раз билд docker-compose build и поднимай потом этот сбилденный образ поднимай только через docker-compose up

билд же нужен тогда когда тебе гемы надо обновить в dev режиме. А так прописываешь ` volumes: - ./usr/src/app` в compose, и докер сам цепляет ласт версию кода из проекта

Gregory Tereshko
29.08.2018
10:31:19
погугли ошибку. Потом сделай 1 раз билд docker-compose build и поднимай потом этот сбилденный образ поднимай только через docker-compose up
Не, это все понятно. Билд только по необходимости. Но эта ошибка хоть с билдом, хоть без. Ошибка не гуглится (

Sergey
29.08.2018
10:37:15
попробуй апгрейд/даунгрейд версии гема. У тебя может быть несовместимость его с версией pg

и build —no-cache на всякий

Aleksey
29.08.2018
11:15:12
кто-то помнит как звучит стайлгайд насчет let() и let!() в рспеке? постоянно забываю, что кошерно - юзать let + before или let!

Denis
29.08.2018
11:17:19
Зависит от задачи

Denis
29.08.2018
11:17:31
И то и другое хорошо и правильно

Anton
29.08.2018
11:17:32
Google
Aleksey
29.08.2018
11:17:56
мммм

are you sure?

по-моему нет

Anton
29.08.2018
11:18:15
Вроде так было

Adamtsov
29.08.2018
11:18:47
let! вызывается вначале теста, а let только в тот момент, когда обратишься к переменной

Aleksey
29.08.2018
11:18:53
я помню какой-то кейс, типа если есть переменная let() и она используется потом внутри блока it { }, то надо юзать before, а если не используется - то можно let!()

но не могу найти пруфа где я это читал

Антон
29.08.2018
11:31:01
let! происходит перед каждым итом даже если к этой переменной не обращались

let только когда обращаются

типа нужно пост создать для "\" иначе 500 то let!(post) { create :post }

Aleksey
29.08.2018
11:33:17
ага. но вопрос остается октрытым, чо там по стайлгайдам ?

Антон
29.08.2018
11:53:10
это методы, один используется в одном случае, другой в другом какие стайлы? какие стайлгайды?

Антон
29.08.2018
11:53:46
не нужно let! если объект нужен только по требованию - это здравый смысл, а не гайд

Кøе-ктø Геннадьевич
29.08.2018
11:56:58
http://www.betterspecs.org/ru/#let

Антон
29.08.2018
11:59:34
Ну это так себе стайлгайд

взять хотябы "Безусловно, они(моки) полезны, но злоупотреблять ими не стоит - там, где это возможно, лучше тестировать реальное поведение системы."

Denis
29.08.2018
12:13:58
Привет. а как запрерить перезаписаь переменной в которой хранится строка?

Nikita
29.08.2018
12:14:25
.freeze

Denis
29.08.2018
12:14:40
работает только с масивами же

Nikita
29.08.2018
12:14:54
а да, сорян

Google
Nikita
29.08.2018
12:14:57
не дочитал

Aleksey
29.08.2018
12:16:09
от перезаписи ничего не спасет

Admin
ERROR: S client not available

rekero
29.08.2018
12:16:13
>запретить менять переменную

Aleksey
29.08.2018
12:16:16
а .freeze и на строках работает

Igor
29.08.2018
12:17:03
http://www.betterspecs.org/ru/#let
Тут дано не корректное описание, как работает let!, которое вводит в заблуждение. Еще существует let!, который выполняется сразу после объявления. На самом деле он работает так: def let!(name, &block) let(name, &block) before { __send__(name) } end Что даёт совсем другие сценарии использования. Например объявить пустой let! во внешнем контексте в качестве "фикстур", а потом переопределить его уже для конкретного теста где то во вложенных контекстах.

Denis
29.08.2018
12:18:02
а .freeze и на строках работает
покажи как пожалуйста

Nikita
29.08.2018
12:18:32
https://freelancing-gods.com/2017/07/27/an-introduction-to-frozen-string-literals.html

Aleksey
29.08.2018
12:18:57
2.3.1 :001 > str = 'hello'.freeze => "hello" 2.3.1 :002 > str << 'world' RuntimeError: can't modify frozen String

c += очевидно работает потому что это перезапись всей переменной

Denis
29.08.2018
12:20:52


Aleksey
29.08.2018
12:21:29
строка + строка = новая строка, а не модифицированная старая

так же точно и с массивами

Roman
29.08.2018
13:18:34
народ подскажите приходит дата рождения с внешнего апи "0000-00-00", как ее правильно преобразовать в дату, понятно что такой дат нет но как это обрабатывается потом на view типа 1970-01-01?

Антон
29.08.2018
13:25:39
ну ты же уже начал что-то делать? что не получилось?

Roman
29.08.2018
13:28:41
def user_birthday_value(user) Date.parse(user.birthday).strftime('%d/%m/%Y') end

вот здесь все падает

Антон
29.08.2018
13:29:09
как падает?

Roman
29.08.2018
13:29:19
может проверку типа вот такого делать "0000-00-00".include? '0000'

Google
Антон
29.08.2018
13:29:25
плохой путь

Roman
29.08.2018
13:29:28
invalid date

Антон
29.08.2018
13:29:28
как падает?

падает с ошибкой

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

Roman
29.08.2018
13:30:32
да я уже гуглил)

Denis
29.08.2018
13:30:41
плохо гуглил

Антон
29.08.2018
13:31:04
да я уже гуглил)
а что ты гуглил?

Roman
29.08.2018
13:31:22
date.parser

Антон
29.08.2018
13:32:42
я спрошу еще раз есть ошибка, она известна, она чужая, что можно сделать с ошибкой в таком случае, вне зависимости от того парсер это или фигарсер?

Страница 1598 из 1684