#grasp

🚀 Несерьёзный Выдумщик 👨‍🔬🛠grumb@shitpost.poridge.club
2025-11-24

Заплыв следует начинать всё же с #GRASP, про которой в массе своей люди слышали и не слышали. Широким массам знаком лишь #SOLID и то, когда к собеседованиям готовились или хотели и кого-то уделать\впечатлить из коллег.
Хотя есть даже на
швабре, где тоже рекомендуются как раз работа Крэга Лармана «Applying UML and Patterns: An Introduction to Object‑Oriented Analysis and Design and Iterative Development». Однако, не просто так, а разбирая на базе девяти шаблонов GRASP:
• Information Expert
• Creator
• Controller
• Low Coupling
• High Cohesion
• Polymorphism
• Pure Fabrication
• Indirection
• Protected Variations

И не важно о ком идёт речь — про молодых специалистов возрастом до 30-35 лет или же про седовласых «заслуженных» и авторитетных спецов 45+ лет.
Мозгов с компетенцией, в основной массе, нет ни у тех ни у других. Одни только понты и гонор, с попытками разношёрстных манипуляций. Им сложно и не нужно погружаться в такие материи как то:

Ларман дает процесс — от анализа требований до концептуального проектирования. Он показывает, как из пользовательских сценариев прийти к модели, выявить сущности, роли и поведение.
Эванс, в свою очередь, формализует язык и паттерны для работы с предметной областью. Он показывает тактические конструкции (агрегаты, фабрики, спецификации) и стратегические приёмы — ограниченные контексты, контекстные карты, Ubiquitous Language.
Хочется быть профессионалом? Не вот не ясно куда рыть и ковырять? Вот это тот свод принципов и литературы, что на полгода вперёд должно хватить.

#книги #softdev #softwaredevelopment #DDD

RE: https://hub.hubzilla.de/item/7c0fa19b-0454-4dea-aec7-2933cc2b7d56

2025-11-15

Do you find the majority of Linux documentation easy or hard?

By documentation I mean the info, man, and help files. In terms of finding, navigating, and developing uses beyond simple obvious tasks.

Sometimes I feel like it hasn't been written any better than mathematics. (In which most people need extensive lessons for grasp).

Meaning, maybe 10% is unreadable until you tease it out from other sources.

#Linux #Parsing #Grasp #Jargon #Esoteric

Panicz Maciej GodekPaniczGodek@functional.cafe
2025-06-11

This is how I add safety to my code:

#GRASP #scheme #lisp

A screenshot from GRASP's repository on github showing a recent change set.
The phrase (unless (animation:advance! delta) ...) has been replaced with the phrase (unless (safely (animation:advance! delta)) ...) 3 times (once per each GRASP client).

Fun fact: the code works, because:
- the protocol for "advance!" in the Animation interface is that it ought to return #true if the animation is still supposed to be playing, and #false if it has finished and should be removed from the system
- the form "safely" (defined long ago by me) evaluates to #!null (Java's NULL) if it catches an exception
- #!null is treated as #false in the context of "if" in Kawa Scheme (and, by extension, "unless")

So now the animation will stop playing if its "advance!" method will either return #false or raise an exception.

Previously raising an exception from the "advance!" method crashed the entire animation system - so clearly this is an improvement, no?
Panicz Maciej GodekPaniczGodek@functional.cafe
2025-06-10

I improved screen splitting/joining from keyboard and added some animatiions. It doesn't look that great on a phone, but is very satisfying with a desktop client

youtube.com/shorts/bGDX0xzqeJU

#GRASP

Panicz Maciej GodekPaniczGodek@functional.cafe
2025-06-06
2025-04-28

Разбираем архитектуру. Часть 1. Чистая архитектура и её корни: история и взаимосвязи

Предисловие Цель этой статьи - объединить и кратко изложить все базовые архитектурные подходы: их терминологию, концепции и отличительные черты. Собрать всё воедино, чтобы можно было относительно быстро вникнуть в основы. Я решил написать серию статей, посвящённых различным аспектам проектирования программных систем, но первоначальной идеей было показать архитектурное решение моего pet-проекта на FastAPI — пример реализации «чистой архитектуры» с использованием современного стека: Python3.13, FastAPI, Uvicorn, Nginx, PostgreSQL, Alembic, Celery, Redis, Pytest, Filebeat, Logstash, Elasticsearch, Kibana, Prometheus, Grafana, Docker и Docker Compose. Однако по мере проработки деталей стало очевидно: чтобы обсуждать структуру приложения предметно и аргументированно, необходимо сначала заложить общую теоретическую основу, чтобы читатель понимал, о чем речь. Так родилась идея вынести базовые концепции архитектуры и проектирования в отдельную публикацию — не перегружать материал сразу всем, а построить серию объёмных, но логично связанных статей.

habr.com/ru/articles/905148/

#чистая_архитектура #чистый_код #ооп #проектирование_систем #терминология #шаблоны_проектирования #луковичная_архитектура #гексагональная_архитектура #solid #grasp

Panicz Maciej GodekPaniczGodek@functional.cafe
2025-04-19
Panicz Maciej GodekPaniczGodek@functional.cafe
2025-04-14
2025-04-13

GRASP: почему настоящая архитектура начинается не с SOLID

Хочу начать с личной предыстории. Давным‑давно, как и многие из вас, я читал умные книжки: «Чистый код» и «Чистая архитектура» Роберта Мартина, «Совершенный код» Стива Макконнелла и другие. Также не обошли меня и классические принципы проектирования — SOLID , KISS , DRY — и, думаю, каждый читатель добавит сюда свои. Безусловно, это всё важные и фундаментальные вещи. Но однажды на горизонте появилось DDD — предметно‑ориентированное проектирование в изложении Эрика Эванса. Именно его «синяя книга» стала культовой и задала язык для архитектурного мышления. Позже я открыл и «красную книгу» Вона Вернона, где DDD уже рассматривался с точки зрения практической имплементации: архитектура, код, реальные подходы в проектах. Читая Эванса, рассматривая его диаграммы классов и примеры кода, я всё думал: как он это делает? Самым большим открытием для меня стало то, что книга DDD хоть и показывает стратегические и тактические приёмы — агрегаты, объекты‑значения, спецификации, фабрики и т. д. — но не учит проектировать саму предметную область . Складывалось ощущение, что мы это уже откуда‑то должны были знать . А откуда — остаётся загадкой.

habr.com/ru/articles/900140/

#GRASP #паттерны_проектирования #архитектура #DDD #SOLID #OOP #чистая_архитектура #чистый_код

2025-04-13

GRASP: почему настоящая архитектура начинается не с SOLID

Хочу начать с личной предыстории. Давным-давно, как и многие из вас, я читал умные книжки: «Чистый код» и «Чистая архитектура» Роберта Мартина, «Совершенный код» Стива Макконнелла и другие. Также не обошли меня и классические принципы проектирования — SOLID , KISS , DRY — и, думаю, каждый читатель добавит сюда свои. Безусловно, это всё важные и фундаментальные вещи. Но однажды на горизонте появилось DDD — предметно-ориентированное проектирование в изложении Эрика Эванса. Именно его «синяя книга» стала культовой и задала язык для архитектурного мышления. Позже я открыл и «красную книгу» Вона Вернона, где DDD уже рассматривался с точки зрения практической имплементации: архитектура, код, реальные подходы в проектах. Читая Эванса, рассматривая его диаграммы классов и примеры кода, я всё думал: как он это делает? Самым большим открытием для меня стало то, что книга DDD хоть и показывает стратегические и тактические приёмы — агрегаты, объекты-значения, спецификации, фабрики и т.д. — но не учит проектировать саму предметную область . Складывалось ощущение, что мы это уже откуда-то должны были знать . А откуда — остаётся загадкой.

habr.com/ru/articles/900140/

#GRASP #паттерны_проектирования #архитектура #DDD #SOLID #OOP #чистая_архитектура #чистый_код

Panicz Maciej GodekPaniczGodek@functional.cafe
2025-03-05
Panicz Maciej GodekPaniczGodek@functional.cafe
2025-02-18

Ok maybe collisions don't yet work the way they should, but the physics engine that I've been developing for #GRASP is slowly getting into shape:

youtube.com/shorts/H0T7SpjNhW8

2025-02-17

Good morning and welcome to DailyChatPix!

Today’s word is #Grasp

Post a personal photo and explain how it represents the word #Grasp to you

Tag it #DailyChatPix and #Grasp

Tomorrow's word will be #Appetizer

Creative interpretations are encouraged!

A painted bluebird with an orange breast is depicted in mid-flight, grasping a cherry in its claws against a light background. Painting by Matthew Rucker.
2025-02-16

Good morning and welcome to DailyChatPix!

Today’s word is #Shovel

Post a personal photo and explain how it represents the word #Shovel to you

Tag it #DailyChatPix and #Shovel

Tomorrow's word will be #Grasp

Creative interpretations are encouraged!

A person in winter attire is shoveling snow on a set of stairs in a snowy outdoor setting. The background features a fenced area with trees.
Panicz Maciej GodekPaniczGodek@functional.cafe
2025-02-07

I wrote about this before, but I think it needs more consideration.

When I work on #GRASP, I have a TODO file, wherein I make notes (almost) every day, writing at the top the today's date and then I begin a sort of a dialogue with myself, which sometimes consists only of a list of things to make, sometimes of certain design considerations, and sometimes of actual code which can afterwards (sometimes after many days) be moved elsewhere. And sometimes - conversely - I bring a lot of existing code pieces into one place to figure out how a particular feature works.

I wonder if other programmers also have similar workflows, and whether they use some tools that would support them?

(I only found out about Mylyn for Eclipse, but I've never used it. It seems to have a lot of good ideas though)

Panicz Maciej GodekPaniczGodek@functional.cafe
2025-01-15
Panicz Maciej GodekPaniczGodek@functional.cafe
2025-01-15

@budsofstone I don't know, but @flatwhatson started a PreScheme restoration project (at prescheme.org), and there's rash-lang.org

I suspect there might be some people to whom scsh never went away.

Also, I think of #GRASP - a thing of my own making - to be a kind of a shell, but two-dimensional and optimized for tactile input

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst