@proRuby

Страница 581 из 1594
Anton
06.06.2017
12:23:40
ну а дальше просто пишешь что-то такое data = (1..100).map { [rand(10), 2, rand(10)] } GC.disable before = GC.stat(:total_allocated_objects) data.each_with_object({}) { |a, b, c, hash| hash[a] = c if b == 2 } p GC.stat(:total_allocated_objects) - before GC.start before = GC.stat(:total_allocated_objects) hash = {} data.each { |a, b, c| hash[a] = c if b == 2 } p GC.stat(:total_allocated_objects) - before

и в моем случае each_with_object создает на 2 объекта больше, это не сильно критично, и во всяких бенчмарках будет проскальзывать 10% разницы по выполнению

Roman
06.06.2017
12:25:05
ну на 2 объекта больше это конечно не разница. вот если бы на 2*n :)

Google
Roman
06.06.2017
12:25:33
просто есть понятие idiomatic ruby - код понятный и принимаемый большинством прогеров

Anton
06.06.2017
12:25:53
ну на 2 объекта больше это конечно не разница. вот если бы на 2*n :)
так ты не забывай, что код выше - это разница только между созданием одного хеша и вызовом each для него и вызовом другого метода, без данных и прочего

просто есть понятие idiomatic ruby - код понятный и принимаемый большинством прогеров
это просто пожелание, как стоит писать твой код. точно так же, как и рубокоп, который эти правила подводит под что-то

Roman
06.06.2017
12:26:36
интересно блин где ж там лишние аллокации. прям хз

Anton
06.06.2017
12:27:15
да, но разница статичная, не зависит от величины массива
да, но ты не забывай, что у тебя есть еще одна велечина, как часто вызывается какой-то код

Roman
06.06.2017
12:27:31
это да

Anton
06.06.2017
12:28:10
но это только для больших наборов данных

Anton
06.06.2017
12:32:52
Google
Anton
06.06.2017
12:33:35
там не совсем в си дело, а в том, как ты с данными работаешь

Lupsick
06.06.2017
12:38:11
кто-нибудь собирал kubernetes-кластер из docker-compose?

Alex
06.06.2017
12:40:30
Sergey
06.06.2017
12:58:50
@ru_docker

Ярослав
06.06.2017
13:02:38
#hanami Короче говоря, добил я в итоге пример, чтобы получить ошибку с i18n и dry-v. https://gist.github.com/jarosluv/b6868e13736fc4e1be1321a933adca92

Внёс ещё пару коррективов и стало ещё прикольнее puts FooSchema.(params[:foo]).errors # GOOD puts action.call(params) # FAIL

Если запрашиваем схему напрямую, то всё ок, если через контроллер, то схема не может найти перевод...

@flash_gordon @davydovanton мб вам будет интересно

Vasiliy
06.06.2017
13:13:41
пушто напами ни нужон

Anton
06.06.2017
13:22:51
пушто напами ни нужон
все так, но сколько проектов ты сделал (хотя бы для себя) на ханами? :)

Vasiliy
06.06.2017
13:23:51
0, он же не нужен

Anton
06.06.2017
13:26:08
0, он же не нужен
ну кстати, я бы на твоем месте попробовал все же. 20 минут времени всего, но посмотришь на рельсу по другому

Anton
06.06.2017
13:27:11
типа "ура, спасибо рельсы что вы есть"
ну, ты попробуй, а потом мне расскажешь :)

мне будет интересно, правда

ну собственно вот, не такой большой гайд

http://hanamirb.org/guides/getting-started/

за вечер реально осилить

из того, что может быть интересно: - валидация под каждый экшен, а не под контроллер - амбрелла архитектура (это как в фениксе, куча изолированных аппов) - репозиторий паттерн - ром - изолированные экшены (нет портянки из одного контроллера), поэтому "тоникие" контроллеры просто отпадают как класс - вью объекты вместо хелперов

Google
Anton
06.06.2017
13:32:01
как минимум, после гайда может появится понимание того, что можно улучшить в рельсе и как это делать

Alex
06.06.2017
13:32:15
например засунуть ненужный паттерн репозиторий, ага.

Vasiliy
06.06.2017
13:32:18
> - репозиторий паттерн вот это вот мне прям больше всего не нравится

Vasiliy
06.06.2017
13:32:48
??

Anton
06.06.2017
13:32:52
ну, кроме того, что это не привычный АР?

Alex
06.06.2017
13:32:54
а в чём его преимущества?

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

Anton
06.06.2017
13:33:32
изолируется 2 разных логики

Alex
06.06.2017
13:33:35
т.е я получил модель и совсем не факт что в базе оно так лежит.

Anton
06.06.2017
13:33:48
т.е я получил модель и совсем не факт что в базе оно так лежит.
так что мешает указать как оно лежит явно?

Alex
06.06.2017
13:33:49
изолируется 2 разных логики
ну т.е в базе трэш и неявное хранение данных, но разработчик этого не видит.

Vasiliy
06.06.2017
13:33:55
на каждый чих портянку сиквела херачить и вызывать как прослойку лишний слой - зачем?

Alex
06.06.2017
13:34:09
а зачем эта прослойка? почему база не отображает бизнес логику?

Anton
06.06.2017
13:34:13
Vasiliy
06.06.2017
13:34:21
я её не пишу

Alex
06.06.2017
13:34:22
по мне так это заталкивание проблем поглубже.

Anton
06.06.2017
13:34:49
а зачем эта прослойка? почему база не отображает бизнес логику?
потому что у тебя есть логика "достать/положить" в базу, есть логика "посчитать что-то, показать данные"

Google
Anton
06.06.2017
13:34:53
это так то разные вещи

Alex
06.06.2017
13:35:05
как я в отрыве от базы буду считать большие данные?

Anton
06.06.2017
13:35:10
я её не пишу
ну, я могу сказать так же, никаких портянок кода нет

ты говоришь про какой-то отрыв от базы данных

можешь пояснить?

Vasiliy
06.06.2017
13:35:43
Admin
ERROR: S client not available

Alex
06.06.2017
13:36:16
можешь пояснить?
ну как я понимаю ты сначала достаешь из базы данные, делаешь их них модели и уже по моделям считаешь что нужно, верно?

Anton
06.06.2017
13:36:17
ну ты можешь так же в АР вытащить в методы модели/квери обжекта это
да, только чем это будет отличаться от того, что ты стараешься изолировать 2 разные логики?

у тебя есть репозиторий, который отдает тебе энтити (дата объекты)

Vasiliy
06.06.2017
13:36:51
тем что совсем банальщину не херачишь в репо это

Alex
06.06.2017
13:37:21
у тебя есть репозиторий, который отдает тебе энтити (дата объекты)
ну т.е у меня в памяти получается мульон дата объектов да?

Anton
06.06.2017
13:37:32
ну, у тебя АР маппит данных больше

потому что там еще в кишках ты валидацию вызвать можешь и кучу всего

Vasiliy
06.06.2017
13:38:05
в общем, я думаю это спор в никуда, я попробовал подход с репозитори(в симфони2) и мне он не понравился(понравилось только что миграции генерятся автоматом)

Alex
06.06.2017
13:38:09
ну в случае с AR у меня нет промежуточной прослойки, я точно знаю текущую схему базы

Google
Alex
06.06.2017
13:38:23
она не заизолирована, она часть приложения. Надо - выполнил голый или полуголый SQL.

Anton
06.06.2017
13:38:28
что мешает сделать релейшен явный?

Vasiliy
06.06.2017
13:38:44
с АР проблемы что оно всё нахуй грузит при запросе

Alex
06.06.2017
13:38:54
подожди, зачем мне репозиторий если я могу сделать голый SQL запрос?

Anton
06.06.2017
13:38:57
например такое



это то, что забирается из таблицы, т.е. маппинг явный таблицы на твою модель

ты можешь еще замапить энтити на нужные данные из таблицы

Alex
06.06.2017
13:40:06
давай проще, тебе надо посчитать медианное значение какого то поля в базе, в базе мульон записей. Есть эффективный способ сделать это в ром?

Alex
06.06.2017
13:40:32
ты можешь еще замапить энтити на нужные данные из таблицы
т.е я обхожу изоляцию логики и оно снова у меня все связано?

Anton
06.06.2017
13:40:38
какой-нибудь Use.exec_sql('...'), так?

Nikita
06.06.2017
13:40:44
че-то какой-то набор суеверий)

Alex
06.06.2017
13:40:54
ну, как ты это в АР делать будешь?
Post.select('count views()') псевдокод

Anton
06.06.2017
13:40:56
Alex
06.06.2017
13:41:41
в чатике наверное для того и сидят чтобы делиться знаниями и разговаривать о подходах.

я же не скрываю что я с ром не работал.

Потому и интересуюсь как оно там устроено.

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