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

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

https://azhidkov.pro
Download Telegram
А вот и актуальный хэйтинг подоспел
Во всех бэках на спринге (со Spring Data Jpa), которые я видел, был репоз на каждую табличку (кроме свяазующей многое-ко-многому).

И не то, а чём думали авторы Spring Data: https://stackoverflow.com/questions/21265262/are-you-supposed-to-have-one-repository-per-table-in-jpa/21277087#21277087

А наткунлся я на это вот этой любопытной ссылке - https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates
походу, можно юзать спринг дату для бойлерплейтного кода, но не тащить при этом адовый проект.

а вот в эту ссылку я полез после того, как в своём петпроджекте на кторе и ебине проапгрейдил ктор 1.4.1 -> 1.4.2 (минор казалось бы), и у меня всё поотавливалось т.к. ебин юзает блокирующий jdbc, а ктор весь из себя на корутинах и не блокирующий и походу впилили туда проверку. И чёт я задумался, что мош спринг не так уж и плох:)

#posts@ergonomic_code #whynojpa@ergonomic_code #dd@ergonomic_code #spring_data_jdbc@ergonomic_code
Привет!

Сегодня я открываю рубрику "ИТ в лицах". Или "Хорошие люди" - не определился ещё:)

Представляю вам Эрика Мейера (Erik Meijer)

Этот мужик запилил LINQ и Rx* (ReactiveX, reactive extensions) - я думаю во многом именно ему мы должны быть благодарны за существование стрим апи во всех приличных языках в 20ом году:)

Сейчас он занимается диференциальным программированием - хз что такое, но кажись это что-то про подбор параметров функций на этапе компиляции. Ну и звучит круто

Наконец, он написал пару хороших статей, которые я так же планирую здесь опубликовать.

#posts@ergonomic_code
Хм, решил на всякий случай уточнить, знаете ли вы, что такое LINK и rx*
Anonymous Poll
22%
Знаю что такое LINK
13%
Знаю что такое rx
39%
Не знаю ни того, ни другого
26%
Знаю и то и то
Случайно (отсюда) наткнулся на статью, с той же идеей, что и у моего кубита (мой второй большой и смежный с ЭП проект) - в интересах пользователей переносить свои данные из облаков на локальные устройства, а наша (технарей) задача сделать так чтобы юзеры при этом в качестве сервиса не потеряли:)

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

#posts@ergonomic_code
Линкопост

Очередной лонг лонг рид (оценка сайта - 2 часа, но я кажись за час-полтора осилил).
https://fasterthanli.me/articles/aiming-for-correctness-with-types

Какой-то чувак чморит Go и node.js за АПИ (преимущественно хттп сервера), которые допускают кривое использование "во имя простоты в 90% случаев".

А потом показывает, как это надо делать на Rust.

Основной посыл - юзайте языки и их фичи, которые на уровне компиляции исключают логические ошибки.

#posts@ergonomic_code
Привет!

Чёт предновогодняя суета на меня напала и я не осилил чего-нить за эту неделю скреативить, так что будет линкопост:)

Вообще, я всю идею воркфловов (включая термин) умыкнул у этого чувака. Но справедливости ради, я его когда-то почитал, забыл всё, "придумал" часть ЭП про воркфловы (которые тада называл юз кейсами), и потом снова наткнулся на этого чувака:)

В этом же докладе он рассказывает, что воркфловы - это скрипты тразнакци из P of EAA
Но кроме того, он там же и ещё пару важных вопросов упоминает:
1) адовость графов зависимостей в "объектно-ориентированных" проектах
2) не надо покрывать юнит тестами каждый отдельный класс в изоляции. и тесты должны проверять контракты системы на её границах, а не то, как она реализована
3) код в первую очередь надо нарезать на вертикальные полносвязные кусочки, а не слои
4) способ деплоя (монолит, микросервисы, серверлес) не должен влиять на дизайн системы. т.е. куски хорошо спроектированной системы можно без больших усилий двигать между процессами и машинами

#talks@ergonomic_code
Я где-то по лету писал о парадигмах программирования и тогда не нашёл авторитетного источинка этого термина и что-то сам выдумал. А тут случайно натыкаюсь на The Paradigms of Programming - статью в авторитетном рецензируемом журнале.

Статью ещё не читал, так что пока не рекомендую

а вот за одну цитату я глазом зацепился, пока листал по диагонали:)
» The older schools gradually disappear. In part their disappearance is caused by their members’ conversion to the new paradigm. But there are always some men who cling to one or another of the older views, and they are simply read out of the profession, which thereafter ignores their work.

> In computing, there is no mechanism for reading such men out of the profession. I suspect they mainly become managers of software development

Мораль вырваной из контекста цитаты - учись, а то станешь менеджером:)

#papers@ergonomic_code #terminology@ergonomic_code
Привет!

Буду краток:)

С наступающим новым годом!:)

Спасибо, что вы всё ещё со мной, желаю, чтобы у вас в следующем году каждый день была хоть маленькая радость:) Ну и побольше эргономичного кода, конечно же:)

Вернусь 5-ого таки с постом про чистые функции:)
Single Responsibility Principle considered harmful

Привет!

Наткнулся тут на эту статью и чёт меня малёха бомбануло.

Теоретически, принцип (Single Responsibility Principle ) возможно хороший и правильный, ток с ним есть одна проблема - анкл Боб 20 (двадцать) лет его объясняет и ни как объяснить не может.

Мне удалось отследить следующую историю формулировок этого принципа самим Мартином:
- 19xx: чёт мне припоминается, что где-то он писал о то, что изначально публиковал эти принципы в каком-то журнале, но ссылок побырому я не нашёл
- 2003: "A class should have only one reason to change" - Agile Software Development, Principles, Patterns, and Practices
- 2008: "The Single Responsibility Principle (SRP) states that a class or module should have one, and only one, reason to change" - Clean Code
- 2014: "Gather together the things that change for the same reasons. Separate those things that change for different reasons." - The Single Responsibility Principle
- 2018: "A module should be responsible to one, and only one, actor" - Clean Architecture

И тем не менее, в статье с которой меня бомбануло написано: "That class itself should do one thing".
По моим ощущениям "one thing" - это самая распространённая интерпретация SRP.

Всё бы ничего, но "thing" - понятие растяжимое.
Сортировка, например - одна вещь?
А если один метод в зависимости от размера входных данных использует разные алгоритмы?
Это всё ещё одна вещь или несколько?
А если код поддерживает сортировку массивов превышающих размер памяти и работает с диском соотвественно?
О размере вещей можно спорить бесконечно.
На небесах программисты только и говорят о том, сколько вещей делает тот или иной кусок кода.

Но даже чёрт с ней с вещью.
Сам анкл Боб путается в показаниях.
В одной из статей он пишет:
> "We do not mix business rules with GUI code".

Так-то всё правильно пишет - действительно не мешаем и это хорошо.
Ток изменения в требованиях от одного источника зачастую требует изменений и в гуе, и в правилах и в БД.
Т.е. эти штуки (для одной фичи) должны быть в одном месте.

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

И ещё не много хейта SOLID-а в целом:
1) https://www.youtube.com/watch?v=tMW08JkFrBA - доклад от крутого во всех смыслах мужика. Можно его прям по имени по ютубить и смотреть всё подряд. Настоятельно рекомендую.
2) https://www.tedinski.com/2019/04/02/solid-critique.html - пост от другого крутого мужика, который начал (и не осилил, похоже :( ) писать книгу примерно о том же, о чём пишу я:)
Но он осилил сильно больше чем я пока что, так что настоятельно рекомендую:)
3) https://speakerdeck.com/tastapod/why-every-element-of-solid-is-wrong - просто слайды от неизвестного мужика, случайно попавшиеся под руку

На слайды из п. 3 Мартин даже ответил

#posts@ergonomic_code #solid@ergonomic_code
Продолжаем знакомиться:)
Как у вас дела с английским?
Anonymous Poll
4%
Не знаю
30%
Могу читать
65%
Могу смотреть видосы
Та-да-да-дааааааа!

Меня тут внезапно осенило, что в текущую тему вторничных постов (чистые функции, эффекты и сайдэффекты) надо добавить пункт "грязные функции". Интригует?:)
Привет!

Продолжаем разбирать тему чистых функций и эффектов. Сегодня пост о чистых функциях.

И заодно хочу поделиться радостью - моя задумка с каналом как песочницей для книги похоже работает:) Я несколько месяцев не мог ничего толком написать поэтой теме в книгу, а в канал нормально пишется и по ходу дела я сам всё глужбе понимаю тему. Думаю венцом этой серии постов станет черновик ещё одного раздела книги:) Ещё раз спасибо, что вы со мной - даже просмотры без комментов дают мне мотивацию продолжать эту работу:)

https://telegra.ph/CHistye-i-gryaznye-funkcii-ehffekty-i-obrabotka-signalov-sajdehffekty-chistye-funkcii-01-12

#posts@ergonomic_code #fp@ergonomic_code
This media is not supported in your browser
VIEW IN TELEGRAM
О, и сегодня нашему канальчику ровно месяц🥳:)
Мне кажется это был не плохой месяц и в будущее этого канала я смотрю с оптимизмом:)
Channel photo updated
А знаете ли вы, что джетбрейнс ещё и научным ресёчем занимается?:)
https://research.jetbrains.org/annual-report/2020

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

ну и заодно призываю всех, кто юзает в коммерческих целях кряканые идеи - таки купить её. это, возможно, лучшая инвестиция в 10-20 баксов в месяц, которую вы можете сделать:)
Рич Хикки

Привет!

Сегодняшний линкопост будет о хорошем человеке - Ричи Хикки.
На мой взгляд это один из самых крутых чуваков современного ИТ.

Я поленился искать пруфы, поэтому вот спекулятивная версия его биографии, на основе моих обрывочных воспоминаний:)

Когда-то закончил стендфорд. Потом писал какой-то софт на С++ для радиостанций. Потом плюсы его окончательно доканали и он в счёт своих пенсионных сбережений в 2005 взял отпуск, чтобы написать Кложуру - на мой взгляд очень интересный язык о котором я ещё напишу - которую зарелизал 2007.

Потом в 2012 на своей Кложуре запилил Datomic - на мой взгляд очень интересную СУБД, о которой я ещё напишу:) - которую невозможно было написать ни на каком другом языке,

Потом где-то в районе 2018 на своих Кложуре и Датомики запилил Datomic Ions - с этой штукой я не разбирался подробно, на кажись она тотально решает проблему персистанса в информационных системах. А персистанс, по моим ощущениям - это самя большая жопа в информационных системах, если не всём ИТ.

Так вот если он держал в голове Ions, когда уходил в отпуск в 2005 году - я просто снимаю шляпу, это дичайший респект и уважуха.

Ну и судя по ценам на Датомик (от $5K в год) пенсионные накопления ему не сильно пригодятся:)

Наконец, самый известный и популярный его доклад, который рекомендуют, все кто его видел - Simple Made Easy. Доклад о том, что лёгкое и прывычное != простое и что современная индустриях тяготеет к лёгкому, хотя простое даёт лучшие результаты.

Ну и ваще он прикольный докладчик и ему есть что сказать в целом об ИТ - его видосы можно смотреть все подряд

#posts@ergonomic_code #clojure@ergonomic_code
Эргономичный код
Хорошие книги: Designing Data-Intensive Applications Привет! Четверговые посты начну с рубрики "хорошие книги". А рубрику "хорошие книги" начну с актуального - Designing Data-Intensive Applications. Эту книгу я читаю сейчас и прочитал пока только треть…
Привет!

Осилил наконец эту книгу. Крута книга:)
Особенно раздел "Doing the Right Thing". Очень советую прочитать хотя бы эти 10 страниц.
Там первый раздел о последствия хпередачи власти машинам (смотрю на тебя, Руслан:) ), а второй о последствиях установки шпинского ПО от гугла на какое-либо устройство в каждом доме плаенты:)

А как прочитаете - приходите делать кубит - вместе мы сделаем лучший мир для наших детей:)
Привет!

Сегодня подготовил вам лонгрид на 1.7К слов (обычно в районе 500) об эффектах. Если вы думаете, что его будет долго читать, то представьте, сколько его было писать:) девять часов, я замерял:)

Пока не уверен, но возможно это потому, что в этом посте изложен Самый Главный Принцип Эргономичного Подхода. Поэтому в этот раз отдельно прошу вас написать что думаете по этой теме, можно в личку, если в комменты стрёмно.

#fp@ergonomic_code