
Alex
12.10.2017
08:34:25

Fedor
12.10.2017
08:34:28
ради читабельности
и особенно не нужен в переменных ,которые принимает метод

Google

Fedor
12.10.2017
08:35:00
это же то, что он должен вернуть, а не принять
тоесть мой inject - это по сути то же самое, создаем пустой массив, заполняем и возвращаем

Nikolay
12.10.2017
08:35:41

Fedor
12.10.2017
08:35:50
но он создается внутри метода и вне не существеует

Alex
12.10.2017
08:36:55
ну а разве это не обычный прием в рекурсивных функциях?
конструкции легче получаются

Nikolay
12.10.2017
08:38:28

Alex
12.10.2017
08:38:51

Vasiliy
12.10.2017
08:41:42
обычно тесты первое что смотрят
или ты предлагаешь проверяющему ручками твоё задание проверять?

Alex
12.10.2017
08:44:22
тесты да, само собой

Fedor
12.10.2017
08:44:32
для этого есть специальные системы, которые тестируют задание
на куче данных
закидывая туда какие-нибудь последовательсности фибоначи, что бы посмотреть худшие варианты сортировки и.т.д.

Google

wi11son
12.10.2017
08:50:49
гайз, привет
а не подскажите, чем модно профилировать рельсовое приложение локально?
no new relic

Alexander
12.10.2017
08:53:40
rack mini profiler

Anton
12.10.2017
08:54:04
def f(h, *tail)
h[0] ? f(h[1..-1], *(tail + Array(h[0].is_a?(Array) ? f(h[0]) : h[0]))) : tail
end
# [47] pry(main)> f([1, [2], [3, [4]]])
# => [1, 2, 3, 4]
# [48] pry(main)> f([1, [2], [3, [4, [5], [6, [7]]]]])
# => [1, 2, 3, 4, 5, 6, 7]
один фиг в метро делать нечего
def f(h, *tail)
h[0] ? f(h[1..-1], *(tail + Array(h[0].is_a?(Array) ? f(h[0]) : h[0]))) : tail
end
# [47] pry(main)> f([1, [2], [3, [4]]])
# => [1, 2, 3, 4]
# [48] pry(main)> f([1, [2], [3, [4, [5], [6, [7]]]]])
# => [1, 2, 3, 4, 5, 6, 7]
если что - не стоит в проде такое юзать, это тупо фан и угар

Oleg
12.10.2017
08:54:54
Я хотел написать на чистых рекурсиях, но как-то поленился. Недавно, кстати, с таким же заданием, но в JS чате спрашивали
Модно стало флаттены руками делать

Anton
12.10.2017
08:55:33
ну, я на хвостоовой написал
на обычной надо подумать бы
но мне лень

Oleg
12.10.2017
08:56:53
??

Anton
12.10.2017
08:58:21

wi11son
12.10.2017
09:12:47
рендеринг
воткну rack-mini-profiler, посмотрю что там

Anton
12.10.2017
09:13:47
Ну, тогда будет малость геморно, но тебе надо на N+1 проверить (из коробки умеет) + сделать на странице ?pp=memory
Поставив мемори профайлер

Google

Anatoly
12.10.2017
09:14:21
Всем привет )
Реально ли как-то убрать хидер HTTP_REFERER ?

Anton
12.10.2017
09:14:37
В плане убрать?

Anatoly
12.10.2017
09:14:49
При редиректе или рендеринге чего-либо

wi11son
12.10.2017
09:15:49
какая красивая штука генерится

Anton
12.10.2017
09:33:45
Ага
Могу позже скинуть гайд по этой хрене

Максим
12.10.2017
09:34:15
что это такое

Anton
12.10.2017
09:34:37
Стакпроф

Максим
12.10.2017
09:35:08
не могу понять что он показывает
какую то степерь загруженности?

Anton
12.10.2017
09:35:18
Не
Сейчас найду короче

Vasiliy
12.10.2017
09:36:56
cскок памяти чё жрёт(вроде) или количество обращений к гему

Anton
12.10.2017
09:37:06
Аллокации или память

Максим
12.10.2017
09:37:52
понял, спасибо

wi11son
12.10.2017
10:02:14
это флеймграф

Alex
12.10.2017
10:03:30
def f(h, *tail)
h[0] ? f(h[1..-1], *(tail + Array(h[0].is_a?(Array) ? f(h[0]) : h[0]))) : tail
end
# [47] pry(main)> f([1, [2], [3, [4]]])
# => [1, 2, 3, 4]
# [48] pry(main)> f([1, [2], [3, [4, [5], [6, [7]]]]])
# => [1, 2, 3, 4, 5, 6, 7]
??

Alexander
12.10.2017
10:15:55
dry-transaction - как мне сделать принудительный выход но не с ошибкой а удачный. например первым шагом у меня будет идти проверка в бд. и если такой пользователь найден, то его надо вернуть и дальнейшие шаги не делать. что то типа halt

Google

Anton
12.10.2017
10:17:05
Но ты можешь написать свой шаг адаптер
Который будет делать что надо
http://dry-rb.org/gems/dry-transaction/custom-step-adapters/

Alexander
12.10.2017
10:19:26

Nikita
12.10.2017
10:29:18
Возвращать left, а потом матчить результат, там же не обязана лежать ошибка

Anton
12.10.2017
10:29:39
Тоже вариант

wi11son
12.10.2017
10:30:15
Еще один вопрос про рельсу, если позволите: В момент бута рельса прекомпилит вьюшки, куда она их кладет? где их можно достать?

Vasiliy
12.10.2017
10:31:24
в tmp/cache
хотя вроде нет

wi11son
12.10.2017
10:32:46
а допустим как их из консоли достать?
видимо надо глянуть, как рендерер работает

Alexander
12.10.2017
10:53:17

Dima
12.10.2017
10:59:59
потом запускается
после 4 тычка

Alexander
12.10.2017
11:11:28
@davydovanton а в какую папку ложить транзакции? есть какой нибудь пример? осс боард использует транзакции?
и как там лучше рейзить ошибки если например User.find кинет ошибку, то ее перехватывать и передавать в Left?

Anton
12.10.2017
11:53:45

Google

Anton
12.10.2017
11:53:49
а какой проект?

Alexander
12.10.2017
11:55:01

Anton
12.10.2017
11:55:14
app/transactions/**/*.rb?

Alexander
12.10.2017
11:56:58
app/transactions/posts/create.rb, create_with_comments.rb
так норм? или это все лучше в одном файле делать? простое создание поста, а еще есть создание поста с камнетами
а надо делать return Left чтобы явно выйти из метода? например
Left(:err)
1+1
:bad
вот тут у меня дойдет до :bad ?

Nikita
12.10.2017
12:12:57
да, это обычный поток исполнения, никаких эксепшенов/throw+catch
можешь использовать Left(:err).fmap Left(:err).bind

Dmitriy
12.10.2017
12:31:52
Ребят, кто работал с таймзонами? Если сделать Time.zone = zone, то это установится таймзона только для текущего запроса к рельсам? Rails 5
при последующем запросе к рельсам таймзона будет по дефолту как раньше?

No
12.10.2017
12:34:33
Этот метод как раз то, что тебе похоже нужно

Dmitriy
12.10.2017
12:35:24
я как понял use_zone только для кода внутри переданного блока

No
12.10.2017
12:35:36
да
но ты можешь завернуть всю обработку запроса в use_zone
допустим, с помощью around_action
есть ещё варианты, это если навскидку

Dmitriy
12.10.2017
12:37:18
это чтобы экшен контроллера туда завернуть, но у меня рельсовые контролеры не используются - юзаю grape

No
12.10.2017
12:42:57
Ну, тогда в каждом grape экшене прописывать Time.use_zone