Как по мне - анемичность - это какой-то миф. Сделали модели Клиентов, Заказов, Товаров... Добавили луковую архитектуру (сделали сервисный слой). Мы слишком заигрались в абстракции.
И зачем мы постоянно пытаемся как можно сильнее абстрагироваться от БД? Она же наш друг, хранилище данных, консистентность, атомарость, транзакции и общая благодать. Так то на заре интернета именно база данных была одним из валидаторов данных (ну, когда на перле\пхп писали без всяких типов).
А как в дух словах описать сложную систему? Типа, был процедурный подход, спаггети-код... Сделали через ООП в парадигме DDD, но проблема с уровнем абстракции.
Но вот чего не понимаю, почему мы все стараемся так сильно абстрагироваться от БД?
Смело-смело! Раньше за такое на костёр отправляли. Проблема в том, что Программирование - довольно юная наука, по сравнению с Физикой и Математикой, мы ещё не разобрались до конца, что хорошо и что плохо и в каких пропорциях.
Плюс, примеры Дядюшка Боб писал на Java, а адепты бросились слепо тянуть не только идеи, но и синтаксис, причём для других языков. Вон, в Си до сих пор нормально goto сделать в конец функции для освобождения памяти. Или в JS можно пяток функций вспомогательных сделать, а в джаве сразу класс, методы... а давайте наперёд подумаем, при том, что Хрустального шара предсказаний обычно у программистов нет. В питоне используют множественное наследие для Миксинов (примесей) - классический пример sorl.thumbnail для django-админки - подставляет превьюшки для изображений.
Когда-нибудь мы напишем учебники, которые на хороших примерах будут рассказывать про ООП, подходы, когда использовать, а когда - нет.
А, кто теперь занимается оптимизацией? Сейчас Tailwind+React+туча плюшек весит больше, чем сам смысловой текст\картинки. И ты такой: "Но ведь писать тучу классов внутри одного тега - это то же самое, что inline-css", - ты не понимаешь, это стандарт, удобно и вот эти тоже так делают...
При правильном использовании делает код проще и надежнее.
При правильном... Вот мы в конкретном примере видели, как простой массив action обрастает сложностью сразу и быстро. А ведь это просто /user/get-by-id - а мы так всё усложнили. Чего ради? Вместо 10 строк кода нам надо написать 150+ и помнить о наследовании, юнификации... А чтобы изменить-расширить - придётся делать наследование или юнион. Через год разобраться в этом будет нереально, а ведь именно для этого вроде всю историю с абстракциями затеяли.
А у нас просто страница. Просто обычное действие. Но мы сделали сложно, что развалится через 3 года,. Да-да... вы всё равно всё перепишите. Просто возьмите историю с 95 года - ничего не осталось.
Задачу бы описали, для чего это всё делалось. Но пока выглядит, как овер-инжиниринг. Зачем забивать канал связи? Зачем данные за 1 секунду назад после перезагрузки?
Рассматриваю робота не как основной источник дохода, а как возможность дополнительного канала дохода (по возможности
Рынок не терпит факультативности. Потратил более 2-х лет своей жизни на всех этих роботов (со свечным анализом, уровнями поддержки и сопротивления, фибоначи, мани-менеджментом...) стратегии и пр. Это всё работает очень нестабильно, сколько на исторических данных не учи. Как только начнёте торговать на реальных деньгах - быстрее поседеете и сольёте несколько депозитов, чем что-то заработаете. И даже если даже получится урвать - прибыть испарится быстрее.
Собственно, все эти "успешные" трейдеры больше заработали на книгах, курсах и продаже сигналов. А самый успешный трейдер - это муж Ненси Пелосси, который вовремя прикупил Nvidia.
Сам старый бек-ендер (ну, или фулл-стек), и проходил путь выбора js-front-framework пару лет назад.
Реакт, при своём названии не имеет из коробки реактивности (mobx vs redux). Путь развития хаотичный - то классы, то хуки, то usestate не так используем. Теперь еще серверные компоненты внутри клиентских компонентов - "такое удовольствие" это будет отлаживать. Плюс в jsx мы смешивает код, и стили, и логику (пусть и не много её). Словно на перле писали какой-нить wwwboard.pl в 1997 году. И туча пакетных менеджеров, сборщиков, конкурирующих библиотек. И ведь всё тащит за собой зависимости. Короче, это как играть в Драконий Покер (где очень много правил). Зато самый популярный, и сбоку там ещё react-native есть.
Ангуляр самый продуманный, и должен зайти java и net программерам. Расвесистый и основательный. Как по мне - хорошо подходит именно для больших и долгих проектов. Но сложный. Видел код, где функция возвращала тип, состоящий из пары строк разных типов с пересечением и объединением. Сложно.
Вю, поскольку появился позже всех, сразу из коробки предлагает разделение на код-шаблоны-стили, и он html-first - т.е. написал условный калькулятор, встроил в часть страницы, подключил vue.min.js и всё. Зато можно наткнуться на библиотеку с документацией только на китайском языке. Переход со 2-й на 3-ю версию (с приходом Composition API) тоже добавило чехарды.
Не нашёл идеального решения. Сам использую из-за простоты Vue, но иногда тупо генерирую код на сервере + htmx.js
Странная статья, начало и конец писали как будто 2 разных человека. Начали с GetBook, а потом переключились на Product. Использование double для цены (вместо decimal) - прекрасный способ выстрелить себе в ногу.
Это да. Но у эира есть пассивное охлаждение. Для не ресурсо-ёмких задач вполне себе. Код писать - не надо даже М3про. Прикупил недавно Эир15 на М3+24гб+1тб - лёгкий, большой экран, можно и на коленях держать, и на кровать поставить (читать или видео смотреть). Звук заметно хуже, чем на Про, зато нет гриля, который со временем затирается пылью.
И Эир тоньше - не так врезается в запястья. А вот клавиатура на 4 с минусом. Впрочем, я в офисе подключаю внешний монитор, клаву и вертикальную мышь (60% времени). Тачпад же, как по мне, лучший до сих пор. И остальные 40% времени большой экран, удобно таскать\держать, а для тяжёлых задач (ML) есть десктоп с rtx-картой.
Вообщем, не буду идеализировать эир - но вполне себе нормальный ноут. Только не берите с 8гб - он больше будет греться гоняя туда-сюда данные в своп, чем работать. Мой практически всегда прохладный.
Ну так уже давно производители окон узнали, что надо продавать не окна, а выезд к заказчику. Но Ваша история тоже показательна
Очень хорошо, прям очень. Просто, доступно, с примерами. Спасибо! И Хабр — торт!
Очень хорошая статья! Действительно, подсказки убивают обучение - надо самому допереть что да как, тогда и будет собственное развитие
Как по мне - анемичность - это какой-то миф. Сделали модели Клиентов, Заказов, Товаров... Добавили луковую архитектуру (сделали сервисный слой). Мы слишком заигрались в абстракции.
И зачем мы постоянно пытаемся как можно сильнее абстрагироваться от БД? Она же наш друг, хранилище данных, консистентность, атомарость, транзакции и общая благодать. Так то на заре интернета именно база данных была одним из валидаторов данных (ну, когда на перле\пхп писали без всяких типов).
А как в дух словах описать сложную систему? Типа, был процедурный подход, спаггети-код... Сделали через ООП в парадигме DDD, но проблема с уровнем абстракции.
Но вот чего не понимаю, почему мы все стараемся так сильно абстрагироваться от БД?
Это ужасно. Всё больше фальшивого становится в нашей жизни
Это Вы про rust? Разве Фаерфокс не переписан на расте?
Смело-смело! Раньше за такое на костёр отправляли. Проблема в том, что Программирование - довольно юная наука, по сравнению с Физикой и Математикой, мы ещё не разобрались до конца, что хорошо и что плохо и в каких пропорциях.
Плюс, примеры Дядюшка Боб писал на Java, а адепты бросились слепо тянуть не только идеи, но и синтаксис, причём для других языков. Вон, в Си до сих пор нормально goto сделать в конец функции для освобождения памяти. Или в JS можно пяток функций вспомогательных сделать, а в джаве сразу класс, методы... а давайте наперёд подумаем, при том, что Хрустального шара предсказаний обычно у программистов нет. В питоне используют множественное наследие для Миксинов (примесей) - классический пример sorl.thumbnail для django-админки - подставляет превьюшки для изображений.
Когда-нибудь мы напишем учебники, которые на хороших примерах будут рассказывать про ООП, подходы, когда использовать, а когда - нет.
А, кто теперь занимается оптимизацией? Сейчас Tailwind+React+туча плюшек весит больше, чем сам смысловой текст\картинки. И ты такой: "Но ведь писать тучу классов внутри одного тега - это то же самое, что inline-css", - ты не понимаешь, это стандарт, удобно и вот эти тоже так делают...
Статья о рефакторинге без единого примера и строчки кода?
При правильном... Вот мы в конкретном примере видели, как простой массив action обрастает сложностью сразу и быстро. А ведь это просто /user/get-by-id - а мы так всё усложнили. Чего ради? Вместо 10 строк кода нам надо написать 150+ и помнить о наследовании, юнификации... А чтобы изменить-расширить - придётся делать наследование или юнион. Через год разобраться в этом будет нереально, а ведь именно для этого вроде всю историю с абстракциями затеяли.
А у нас просто страница. Просто обычное действие. Но мы сделали сложно, что развалится через 3 года,. Да-да... вы всё равно всё перепишите. Просто возьмите историю с 95 года - ничего не осталось.
Ну не знаю... как по мне - открыли ящик Пандоры. Теперь логику размазываем и в коде и в типах.
Задачу бы описали, для чего это всё делалось. Но пока выглядит, как овер-инжиниринг. Зачем забивать канал связи? Зачем данные за 1 секунду назад после перезагрузки?
Так ещё можно zig посмотреть. Он, правда молодой и меняется, зато компилирует Си сам из коробки.
Не статья - золото!
Рынок не терпит факультативности. Потратил более 2-х лет своей жизни на всех этих роботов (со свечным анализом, уровнями поддержки и сопротивления, фибоначи, мани-менеджментом...) стратегии и пр. Это всё работает очень нестабильно, сколько на исторических данных не учи. Как только начнёте торговать на реальных деньгах - быстрее поседеете и сольёте несколько депозитов, чем что-то заработаете. И даже если даже получится урвать - прибыть испарится быстрее.
Собственно, все эти "успешные" трейдеры больше заработали на книгах, курсах и продаже сигналов. А самый успешный трейдер - это муж Ненси Пелосси, который вовремя прикупил Nvidia.
Сам старый бек-ендер (ну, или фулл-стек), и проходил путь выбора js-front-framework пару лет назад.
Реакт, при своём названии не имеет из коробки реактивности (mobx vs redux). Путь развития хаотичный - то классы, то хуки, то usestate не так используем. Теперь еще серверные компоненты внутри клиентских компонентов - "такое удовольствие" это будет отлаживать. Плюс в jsx мы смешивает код, и стили, и логику (пусть и не много её). Словно на перле писали какой-нить wwwboard.pl в 1997 году. И туча пакетных менеджеров, сборщиков, конкурирующих библиотек. И ведь всё тащит за собой зависимости. Короче, это как играть в Драконий Покер (где очень много правил). Зато самый популярный, и сбоку там ещё react-native есть.
Ангуляр самый продуманный, и должен зайти java и net программерам. Расвесистый и основательный. Как по мне - хорошо подходит именно для больших и долгих проектов. Но сложный. Видел код, где функция возвращала тип, состоящий из пары строк разных типов с пересечением и объединением. Сложно.
Вю, поскольку появился позже всех, сразу из коробки предлагает разделение на код-шаблоны-стили, и он html-first - т.е. написал условный калькулятор, встроил в часть страницы, подключил vue.min.js и всё. Зато можно наткнуться на библиотеку с документацией только на китайском языке. Переход со 2-й на 3-ю версию (с приходом Composition API) тоже добавило чехарды.
Не нашёл идеального решения. Сам использую из-за простоты Vue, но иногда тупо генерирую код на сервере + htmx.js
Странная статья, начало и конец писали как будто 2 разных человека. Начали с GetBook, а потом переключились на Product. Использование double для цены (вместо decimal) - прекрасный способ выстрелить себе в ногу.
Это прекрааааааасно!
Это да. Но у эира есть пассивное охлаждение. Для не ресурсо-ёмких задач вполне себе. Код писать - не надо даже М3про. Прикупил недавно Эир15 на М3+24гб+1тб - лёгкий, большой экран, можно и на коленях держать, и на кровать поставить (читать или видео смотреть). Звук заметно хуже, чем на Про, зато нет гриля, который со временем затирается пылью.
И Эир тоньше - не так врезается в запястья. А вот клавиатура на 4 с минусом. Впрочем, я в офисе подключаю внешний монитор, клаву и вертикальную мышь (60% времени). Тачпад же, как по мне, лучший до сих пор. И остальные 40% времени большой экран, удобно таскать\держать, а для тяжёлых задач (ML) есть десктоп с rtx-картой.
Вообщем, не буду идеализировать эир - но вполне себе нормальный ноут. Только не берите с 8гб - он больше будет греться гоняя туда-сюда данные в своп, чем работать. Мой практически всегда прохладный.