
No
29.08.2017
11:06:31
сюда задублирую на всякий пожарный

Alex
29.08.2017
11:09:57
кропали раньше ручками?

No
29.08.2017
11:10:35
раньше кропали ручками и сразу сохраняли сабнэйл (который ещё и умешьшенный)
в новой версии тоже ручками, но координаты кропа сохраняются

Google

Alex
29.08.2017
11:10:48
сабнэйл это что? (для тупых)

No
29.08.2017
11:11:19
thumbnail - уменьшенная версия оригинальной картинки
в моем случае - уменьшенная версия кропнутой оригинальной картинки

Alex
29.08.2017
11:12:12
оно реально сабнейл звучит, жесть
всегда тумбами их звал

No
29.08.2017
11:12:20
сейчас вижу только варик каким-то образом по thumbnail-у выяснить координаты кропа
и рекропнуть, но уменьшить до более приемлимых размеров

Alex
29.08.2017
11:13:29
там наверняка потери в миниатюре, а значит нужен алгоритм определяющий схожесть. Ничего толком не подскажу.
http://www.imagemagick.org/discourse-server/viewtopic.php?t=24151
можно погуглить detect sub image in image. Можно даже на другом языке, раз это одноразовая задача.

No
29.08.2017
11:14:26

Alex
29.08.2017
11:14:29
Потом засунуть в базу найденные координаты и перезапустить carrierwave или чо там у вас.

Google

Alex
29.08.2017
11:14:50
ну да, там скорее всего нет потерь в изображении.

No
29.08.2017
11:14:55
ну у меня не саб-имадж, а уменьшенный саб-имадж
в этом сложность )

Alex
29.08.2017
11:15:09
ну так уменьшите оригинальную большую картинку
и ищите в ней сабимэдж уменьшенный
потом координаты подгоните под оригинал.

No
29.08.2017
11:15:27
а потом в процентах искать координаты кропа?
ну, тоже вариант в принципе
на безрыбье

Alex
29.08.2017
11:15:39
да, подогнать под оригинальные размеры и посмотреть что получится.

EtoZheSlava
29.08.2017
11:46:53
как траблшутить утечки памяти в sidekiq и unicorn? т.е есть метрики и алерты в aws - иногда есть скачки по потреблению памяти, нужно выявить причины и т.п

rekero
29.08.2017
11:49:32
у ньюрелика вроде есть memory profiler

Dmitriy
29.08.2017
13:47:30
Привет! Планирую из монолитного рельсового приложения выделить часть логики в отдельный микросервис на sinatra. Этот микросервис будет делать много запросов к основной базе. Не хочу писать голые sql-запросы, а хочу использовать ActiveRecord. В этом случае в синатре нужно будет объявлять много моделей, как в основном приложении на рельсах. Норм так делать на синатре? Или лучше на базе rails api mode делать сервис?

Alexander
29.08.2017
13:49:09
по мне так апи мод лучше. так как если ты возьмешь синатру, то будешь к ней лепить гемы на любой чих и в итоге получатся недорельсы. а внутри апи мода лучше пользоваться grape

Alex
29.08.2017
13:49:59

Alexander
29.08.2017
13:50:11

No
29.08.2017
13:50:36
чем grape так хорош?
скорость написания + автодоки к сваггеру + версионность + DSL как раз для json api

Dmitriy
29.08.2017
13:50:45
микросервис будет общаться с основным через rabbitmq. А апи будет только на один метод get

Alex
29.08.2017
13:51:10
а точно нужен отдельный микросервис - engine не подойдет?

EtoZheSlava
29.08.2017
13:51:18

Google

Alex
29.08.2017
13:51:22
> автодоки к сваггеру
неплохо. А как относишься к rspec_api_documentation?

Alexander
29.08.2017
13:51:28
чем grape так хорош?
заточен под апи, хороший дсл, сам вставляет нужные коды, если самому лень. перехват ошибок, валидация параметров, а если использовать grape entity то еще и swag докумментация отличная получается

Alex
29.08.2017
13:51:54
не очень понимаю почему все так носятся со сваггером когда из тестов можно построить документацию.

Alexander
29.08.2017
13:52:14
писать тесты

Alex
29.08.2017
13:52:15
потому что он няшный)

No
29.08.2017
13:52:18

Dmitriy
29.08.2017
13:52:23

Alex
29.08.2017
13:52:34
писать тесты
если ты не пишешь тесты на апишку то я хз как к этому относиться.

No
29.08.2017
13:53:20
rspec_api_documentation отчасти диктует ограничения для написания тестов, насколько я помню
тобишь, он пихает в доки каждый кейс, допустим

Alex
29.08.2017
13:53:30

Alexander
29.08.2017
13:53:34

Fedor
29.08.2017
13:53:37
на ногах, потому что если откусывать на руках - он не сможет писать тесты

Alex
29.08.2017
13:53:52

Alexander
29.08.2017
13:54:14

Alex
29.08.2017
13:54:19

No
29.08.2017
13:54:34
там есть ручной режим вполне себе.
возможно ) вполне себе заменяемый вариант ) но на grape писать апи всё-таки быстрее + DSL под json api. ты делаешь API из инструментов которые предназначены онли для API

Alex
29.08.2017
13:54:49
надо попробовать будет.

Google

No
29.08.2017
13:54:52
но ничего против написания апи на плэйн рельсе не имею
просто мне grape показался более удобным под эти нужды

Alex
29.08.2017
13:55:17
строго говоря, лучше когда есть выбор, да.

No
29.08.2017
13:55:53
хотя Grape Entities иногда вызывают боль, если нужно что-то закастомайзить, но это следствие того, что я искал в доках только то, что нужно без чтения всей документации по entity разом
когда прочел в целом как это работает - проблемы в этом плане исчезли

Admin
ERROR: S client not available

No
29.08.2017
13:56:49
иногда, правда, приходится скучать по jbuilder, он как по мне - одно из лучших, что есть для API

Alex
29.08.2017
13:57:01

Vasiliy
29.08.2017
13:57:27
а грейп разве не приложуха на синатре?
чет я его смотрел и как всё в одном файле не оч

Dmitriy
29.08.2017
13:57:57
grape можно монтировать к любому rack-приложению

No
29.08.2017
13:58:14
серьезно?
в нем есть тотальная гибкость для создания любого формата ответа
это и хорошо и плохо одновременно )

Alex
29.08.2017
13:58:25

Vasiliy
29.08.2017
13:58:36

Alex
29.08.2017
13:58:40
нет смысла задавать четкую структуру, даешь по endpoint'у на каждый запрос.

Dmitriy
29.08.2017
13:58:49

Vasiliy
29.08.2017
14:00:56
хотя может и удобно

Sergey
29.08.2017
14:04:46
Подскажите плз,
немного подзапутался с гемом protected_attributes
Он используется у меня в проекте с 4ми рельсами
Для 5х рельс достаточно его просто удалить, если permit параметров везде на уровне контроллера?
Или все attr_accessible по проекту нужно будет тоже удалить в моделях?

No
29.08.2017
14:12:34

Google

No
29.08.2017
14:12:59
но обычно гибкость == возможность шмальнуть себе в ногу
за редкими исключениями

Zamira
29.08.2017
14:20:20

Bob
29.08.2017
14:30:13
может кто-нибудь знает, почему после вызова all.update_all в методе для релейшена, all становится пустым релейшном?

Zamira
29.08.2017
14:32:04

Bob
29.08.2017
14:36:48
не совсем. я добавил метод в модель. в нем делаю all.update_all(attr1: value1), за тем снова хочу получить релейшн, но в all уже путсой релейшн

No
29.08.2017
14:37:06
ммм
не уверен
но есть вариант, что не MODEL.all.update_all, а просто MODEL.update_all
а не, сорри, я похоже гоню

Vasiliy
29.08.2017
14:38:31
а ты пробовал?
all.update_all(attr1: value1)
all

Zamira
29.08.2017
14:38:57
Наверное ты просто обновляешь какой-то параметр, который не входит в дефолтный скоуп) У меня так было.
Если не это, то выглядит как мистика.

No
29.08.2017
14:39:38
если есть дефолтный скоуп - это уже небольшой звоночек, кроме кейсов софт делита и прочих подобных
это если об общепринятом в сообществе мнении

Zamira
29.08.2017
14:39:57
Звоночек к чему?

Felix
29.08.2017
14:40:01
обычно из-за софт-делита и делается дефолтный скоуп :)