Эргономичный код
819 subscribers
81 photos
3 videos
20 files
401 links
Канал о разработке поддерживаемых бакэндов - про классическую школу TDD, прагматичное функциональное программирование и архитектуру и немного DDD.

Группа: https://t.me/+QJRqaHI8YD

https://azhidkov.pro
Download Telegram
Привет!

Занят тушинем пожара, в виде смены требований в последний момент, так что пока ток линко-посты. И на этот раз даже боян скорее всего, но меня заинтерсовало:)

Джетбрейнс запили тул для локального дева: https://blog.jetbrains.com/blog/2021/03/11/projector-is-out/

Надо потестить, и если реально не сильно тормозит, то можно не менять ноут на 15шку:) Надо ток решить вопрос, кто будет включать комп, после выключения электричества, если я при этом буду где-нить за бугром:)

#tools@ergonomic_code
Привет!

Тихой сапой осилил эту книгу: https://www.amazon.com/Design-Programmer-Architect-Pragmatic-Programmers/dp/1680502093

Не то чтобы прям маст рид, но несколько интересных мыслей и техник там есть. И размер вполне гуманный - 300 страниц по сути:)

#books@ergonomic_code
Привет!

Вы не поверите №1: я в текущем этапе дважды облажался в аналитике и эта неделька снова была тяжёлой:)

Вы не поверитре №2: но я отдал этап на приёмку, так что следующая неделька будет лёгкой:) Откуда я знаю что на приёмке не будет проблем? Потому что...

... Вы не поверите №3: я написал пост, о том как я так организовал тестирование проекта, что за два месяца дева мне прилетел 1 (один) баг и 0 (ноль) регрессий:)

#case@ergonomic_code #project_l@ergonomic_code #ergo_testing
Привет!

Небольшая статейка о вреде временнОй связности и побочных эффектов: https://proandroiddev.com/stop-crafting-your-time-bomb-39f2d26987e0

Единственное что, я бы часть про Элегантные Объекты пропустил - уважаю Бугаенко за его продуктивность, принципиальность и масштабность, но работать с кодом в его стиле я бы не хотел:)

#posts@ergonomic_code #why_no_side_effects@ergonomic_code
Наконец-то, не за долго до четырёхлетия своего индивидуального предприятия, я запилил себе личный сайт:)

https://azhidkov.pro/

Теперь посты я буду выкладывать на 15 минут раньше, и вы можете легко запомнить где можно перечитать любимые:)
Привет!

Малёха солида вам в ленту с утра пораньше:)

Я уже как-то давал ссылку на критику SOLID-а.

А сегодня я подслушал в радиоте ссылку на более развёрнутый пост этого же мужика.
И там он даёт ссылку на критику своей критики:)

Когда-нибудь я обязательно накатаю собственный развёрнутый пост на эту тему:)
А пока у меня на подходе разгромный пост о JPA - уже отлёживается, завтра-после завтра опубликую:)

#posts@ergonomic_code #solid@ergonomic_code
Рад представить вам анонсированный разгромный пост о том почему JPA лучше не использовать в серьёзных проектах:)
Это новый рекордсмен моего блога по объёму - закрыл гештальт:)

Ну и если я вдруг налажал с технической точки зрения - пишите. Может я, наконец, 15 лет спустя открою страшную тайну как правильно готовить JPA:)

#posts@ergonomic_code #whynojpa@ergonomic_code #spring_data_jdbc@ergonomic_code
Думаю опубликовть пост о JPA на Хабре в "Я пиаюрсь". Как думаете какой будет исход?
Anonymous Poll
37%
Слава и +50 читателей
11%
Бан
53%
Линч
Привет!

Мне не хватает 9 единиц кармы, для публикации в "Я пиарюсь", а публиковать в хаб Java я боюсь - вдруг и правда забанят.

Накрутите мне пожалуйста кармы авансом: https://habr.com/ru/users/jdev/ :)
Ох, знаете, что Лёша сейчас сделал?

Случайно забацал бесконечную рекурсию в функции инициализации контейнера для тестов. Как думаете, что было дальше?
Anonymous Poll
24%
Переполнился стек
4%
Кончилось место на корневом разделе
8%
Какая-то гномья приблуда для мониторинга разделов захавала весь процессор
64%
Всё выше перечисленное
Ну и раз уж я вас сегодня заспамил, то вот ещё немного:)
Запилил оператор terminateOn для Kotlin sequence&flow
Предполагаемый юзкейс - функциональное описание эффективной операции до получения терминального значения - считай ретрай

юзается примерно так:
    val res = sequnceOf(1, 2, 3)
.map { delay(it) ; getEntityStatusOnServer() }
.take(15)
.terminateOn { it.isSuccess() || it.isFailed }
.last()
when (res.status) {
success -> println("success")
pending -> println("timeout")
failure-> println("process failed on server")
network_failure-> println("status fetch failed")
}


#tools@ergonomic_code #kotlin@ergonomic_code
Привет!

Наткунлся на прикольную статью об объектах и абстрактных типах данных. Не особо практичная, именно прикольная - автор приходит к выводу, что функции высших порядков чаще используются в ОО, чем ФП программах, и что лямбда исчесления были "untyped λ-calculus was the first object-oriented language.":)

Более практично же обеъекты и АДТ рассмотрены в этой статье.

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

А иногда надо вообще запретить расширение клиентами, и в этом случае используются Абстрактные типы данных.

#papers@ergonomic_code #oop@ergonomic_code #fp@ergonomic_code
Привет!

Пыль от поста на Хабре улеглась и пришло время подводить итоги:)

1) +4 к карме (+5 -1)
2) +13 рейтинг поста (+19 -6)
3) +1 предложение писать за деньги в один из топовых блогов на Хабре
4) 67 закладок
5) 0 конструктивной критики в комментах (по данным разведки)
6) +26 (+80%) подписчиков канала

Я считаю, что авантюра стала успешной.

Самым важным результатом для меня стали новые читатели - рад вас приветствовать в своём канале и спасибо за доверие.

Такой рост аудитории - хороший повод ещё раз написать, что я за движуху вообще здесь затеял.

Если коротко - то в последние несколько лет у меня стало получаться писать код, который поддерживать и развивать чуть менее больно, чем код, написанный в "стандартном" (для бэков на Java) стиле.
В книге, блоге и канале я пишу что я делаю по другому, почему я это делаю по другому и как я это делаю.

В итоге я хочу получить "методичку", следуя которой другие разработчики смогут без моего участия писать код, который им самим (и возможно мне) будет проще поддерживать.
И вопрос куда пойдём дальше.

С одной стороны я несколько месяцев прокрастинирую финальный пост про виды функций. С другой стороны у меня сейчас критческий настрой и хочется покритиковать слоёную архитектуру. Что вам было бы интереснее в первую очередь?
Anonymous Poll
15%
Виды функций
85%
Слоёная архитектура
0%
Написал в комментах свой вариант
Привет!

Дочитал Just Enough Software Architecture: A Risk-Driven Approach

Она прекрасна - пожалуй лучшая книга по архитектуре и роли архитектора, что я прочитал, рекомендую:)

#books@ergonomic_code #design@ergonomic_code
Привет!

Хотел написать небольшую заметку о SRP, OCP и дизайне типов и залип на 3 часа:)

Представляю вам пост ... <барабанная дробь>... Анкл Боб не всегда прав - критичное настроение всё ещё со мной:) В отпуск мне надо:)

#posts@ergonomic_code #solid@ergonomic_code