
Lupsick
24.06.2017
19:17:15
ну вообще реально можно же просто имя константы генерировать

Nikita
24.06.2017
19:17:17
ты делаешь запросы в базу, в зависимости от того, сколько полей тебе возвращает, у тебя в результате структуры разных типов

ojab
24.06.2017
19:18:35
А щаз им какие имена назначаются и что мешает держать это в константах?

Google

Nikita
24.06.2017
19:19:25
всем дается имя Entities::User, но в сути это разные классы с одинаковым базовым классом
условно рандомное, но вот добавил еще поле в табличку, оно поменялось, на кой фиг такая константа?

Lupsick
24.06.2017
19:21:03
слишком надо глубоко погрузиться в проблему чтобы тралиться на должном уровне

Nikita
24.06.2017
19:21:23
угу

ojab
24.06.2017
19:21:30
А что мешает использовать инстансы вместо классов?

Nikita
24.06.2017
19:22:38

ojab
24.06.2017
19:23:07
А что мешает использовать эйгенклассы у инстансов?

Nikita
24.06.2017
19:23:41
это тоже будет медленно и совсем уж неожиданно для пользователя
представь, дергаешь ты пару тысяч объектов из бд и для каждого делается extend

ojab
24.06.2017
19:24:57
зачем делать extend, когда можно напрямую дёрнуть .singleton_class?

Nikita
24.06.2017
19:25:38
и что там там будешь делать?

ojab
24.06.2017
19:25:46
class_eval, whatever

Google

ojab
24.06.2017
19:25:52
я не знаю что у вас там делается
но, в общем-то, это именно то для чего эйгенклассы сделаны
вы это переделали на стандартные классы и боретесь с созданной проблемой

Nikita
24.06.2017
19:26:58
ха, а чем это от extend отличается? даже еще хлеще будет, если ты в каждом class_eval будешь методы определять. А если будешь делать include, то это то же самое, что и extend, по определению

ojab
24.06.2017
19:27:16
ну то есть класс создать быстрее?
бенчмарки есть?

Nikita
24.06.2017
19:27:27
а, понял тебя
он один раз создается, потом переиспользуется. То есть условно под каждый набор колонок один класс
в итоге в приложении их вполне конечное количество
да, извиняюсь, не объяснил
выглядело как дичь, понимаю)

ojab
24.06.2017
19:32:28
А зачем разные аттрибуты объектам из одного и того же набора колонок?
не, получается что у каждого набора колонок один и тот же класс
Тогда я не понимаю зачем потомки Entities::User не являются подклассами, например

Nikita
24.06.2017
19:35:46
смотри, там делаешь выборку, выбираешь там только id и name, это будет один класс, если добавишь created_at, будет еще один

ojab
24.06.2017
19:36:10
ох
сомнительной полезности мероприятие
меня вполне устраивает что любая модель в той же AR является одним и тем же классом вне зависимости от .select'a

Nikita
24.06.2017
19:36:58

Google

ojab
24.06.2017
19:38:12
непонятно зачем делать как-то иначе
если даже это и быстрее — я сомневаюсь что есть задачи где это бы являлось узким местом

Nikita
24.06.2017
19:40:14
вообще это детали реализации, структуры удобнее в работе, чем просто хэш, а из коробки у нас нет каких-то моделей или их аналогов. А вот если у тебя уже есть в приложении, можешь замаппить в них

ojab
24.06.2017
19:41:28
в стандартной библиотеке для этого есть Struct

Nikita
24.06.2017
19:42:24
он же кривой, у нас dry-struct используется, он хэш в конструктор принимает

Тёма
24.06.2017
19:45:29
OpenStruct тоже принимает.

Nikita
24.06.2017
19:46:15
http://blog.honeybadger.io/how-openstruct-and-hashes-can-kill-performance/
да, кстати, у нас структуры немутабельны, можно только сделать новую из старой

Тёма
24.06.2017
19:51:08
Ну а бенчмарки на dry-struct есть?
Я уверен, что он шустрее ostruct-а в инициализации, но всё же...

Nikita
24.06.2017
19:55:11
Ну а бенчмарки на dry-struct есть?
хороший вопрос, не припомню, поэтому точных цифр нету, пока не до этого, но доберемся, когда ром будем профилировать. В сути там можно получить производительность как у хэша примерно
но нужно мерять

Nikita
24.06.2017
19:56:45
там не очень честно сравнивать. Структуры они типизированы. Если же сравнивать просто инициализацию без проверок типов, то будет как оборачивание хэша в объект. В духе MyClass.new(a: 1, b: 2)
а, не, там еще присвоение переменных объекта
плюс смотрите не только на инициализацию, а еще и на чтение

Тёма
25.06.2017
04:05:12
плюс смотрите не только на инициализацию, а еще и на чтение
Спасибо большое. Я просто думал стоит ли мне использовать dry-struct заместо Hashie::Mash. Мои юзкейсы целиком в тестах, так что... ну можно попробовать. Относительно структур, есть пропоузал создания оных через kwargs
https://bugs.ruby-lang.org/issues/11925
Как только это имплементируют, нам станет жить проще.

Artem
25.06.2017
07:40:22
Есть ли учебник,книга ,про моделирование пользователей ?

Fedor
25.06.2017
07:58:39
чего?

Admin
ERROR: S client not available

Fedor
25.06.2017
07:58:47
моделирование поведения?

Google

Тёма
25.06.2017
09:42:50

Artem
25.06.2017
09:43:58
Да крч бд моделирование
В другой беседе уже ответили

Тёма
25.06.2017
09:45:35
Что посоветовали?

Lupsick
25.06.2017
20:35:58
в рубях есть нативный парсинг хтмл?

Alexander
25.06.2017
20:36:55
что значит "нативный"? core или stdlib? нет
если ты про си-реализацию — есть

Lupsick
25.06.2017
20:37:51

Alexander
25.06.2017
20:38:09

Lupsick
25.06.2017
20:40:00
ПОЧЕМУ?
только что посмотрел в го – там есть

Alexander
25.06.2017
20:40:23

v
25.06.2017
20:41:29

Alexander
25.06.2017
20:41:30
веб был слабо развит, и руби не для него создавался, насколько я помню, так что не странно

v
25.06.2017
20:41:33
или 93-й?

Alexander
25.06.2017
20:41:42

Alex
25.06.2017
20:42:27

Lupsick
25.06.2017
22:08:42
кто-нибудь ебался с telegra.ph API?

Денис
26.06.2017
12:40:27
а гема нет ещё?

Google

Alex
26.06.2017
13:07:39
хм, в новом телеграме можно удалять сообщения о том что пользователь зашел в группу

Sergey
26.06.2017
14:30:31
парни, у меня проблема, надо в базе umi.cms обновить данные из приложения rails(парсер), пробую менять phpmyadmin данные в базе, а на сайте и в админке cms ничего не меняется, при этом кэш отключен, в чем может быть дело?

Alex
26.06.2017
14:34:29
не ту базу редактируешь?
через рельсовую консоль посмотри обновились данные или нет

Vasiliy
26.06.2017
14:34:57
и попробуй рельсу в верном окружении запускать