diff --git a/.drone.yml b/.drone.yml index 88835409..3783de76 100644 --- a/.drone.yml +++ b/.drone.yml @@ -17,7 +17,7 @@ steps: - name: build site # https://hub.docker.com/r/library/docker pull: always - image: docker.struchkov.dev/quartz:develop + image: docker.struchkov.dev/quartz:v.4.4.7 environment: GITHUB_SSH: from_secret: GITHUB_SSH @@ -66,6 +66,6 @@ steps: # drone sign --save upagge/digital-garden --- kind: signature -hmac: 136d4effa27f318fb6ff0cf16bc1bf7b20b428610832f7bdd8224c164a804e69 +hmac: fd5326b43706588aa4b35e24e551954df3dba6fc88e94c462ab91b9384ba0d6d ... diff --git a/dev/Mapped Diagnostic Context.md b/dev/Mapped Diagnostic Context.md new file mode 100644 index 00000000..e029a9a6 --- /dev/null +++ b/dev/Mapped Diagnostic Context.md @@ -0,0 +1,39 @@ +--- +aliases: + - MDC +tags: + - maturity/🌱 +date: 2025-02-24 +--- +MDC β€” это структура Π΄Π°Π½Π½Ρ‹Ρ…, основанная Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ThreadLocal, которая позволяСт ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ [[fundamental/ΠŸΠΎΡ‚ΠΎΠΊ процСсса ОБ|ΠΏΠΎΡ‚ΠΎΠΊΡƒ]] выполнСния. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² записи Π»ΠΎΠ³Π°. + +НапримСр, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MDC ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π»ΠΎΠ³ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ запроса, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ сСссии. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ впослСдствии ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ событий, относящихся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ запросу ΠΈΠ»ΠΈ сСссии, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ диагностику ΠΈ Π°Π½Π°Π»ΠΈΠ· Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния. + +**Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ MDC** +- **Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°:** Благодаря MDC Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сообщСнии Π»ΠΎΠ³Π° оказываСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, request ID, user ID). Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ быстро ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ связанныС события ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ обрабатываСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ запрос. +- **Анализ Π² распрСдСлённых систСмах:** Π’ [[../../../wiki/zero/00 ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°|микросСрвисных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…]] запрос ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· нСсколько сСрвисов. ИспользованиС MDC позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π° протяТСнии всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ρ‡Ρ‚ΠΎ сущСствСнно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ трассировку. +- **Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈ поиск Π»ΠΎΠ³ΠΎΠ²:** Π‘ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π»ΠΎΠ³ΠΈ становятся Π±ΠΎΠ»Π΅Π΅ структурированными. Π­Ρ‚ΠΎ позволяСт Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ записи ΠΏΠΎ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ, ускоряя процСсс Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ². + +**ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности MDC** +- **Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ контСкста:** Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Ρ€ΠΎΠ΄Π΅ `MDC.put(key, value)` ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ автоматичСски Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись Π»ΠΎΠ³Π°, Ссли Π»ΠΎΠ³Π³Π΅Ρ€ настроСн Π½Π° ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. +- **ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ контСкста:** ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ `MDC.get(key)` ΠΈ `MDC.remove(key)` ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ для избСТания ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². +- **АвтоматичСская интСграция с Π»ΠΎΠ³Π³Π΅Ρ€Π°ΠΌΠΈ:** МногиС соврСмСнныС Π»ΠΎΠ³ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Logback, Log4j ΠΈΠ»ΠΈ SLF4J, ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ MDC. Π­Ρ‚ΠΎ позволяСт Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π»ΠΎΠ³ΠΎΠ² Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ автоматичСски Π²ΠΊΠ»ΡŽΡ‡Π°Π» ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· MDC. + +**ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΈ Π½ΡŽΠ°Π½ΡΡ‹ использования** +- **ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ:** ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ MDC Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‡Π΅Ρ€Π΅Π· ThreadLocal, Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ привязаны ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ. Π’ асинхронных ΠΈ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… систСмах, Π³Π΄Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ осущСствляСтся динамичСски, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ MDC ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. + - [[java/quarkus/ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ асинхронного выполнСния Π² Quarkus|ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ асинхронного выполнСния Π² Quarkus]] +- **Π ΡƒΡ‡Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅:** Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, рСкомСндуСтся всСгда ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ MDC послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции `try-finally`. + +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../meta/zero/00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-24]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/NanoId.md b/dev/NanoId.md new file mode 100644 index 00000000..f8630919 --- /dev/null +++ b/dev/NanoId.md @@ -0,0 +1,32 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2024-10-30 +--- +NanoID β€” это Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… [[Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности|ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²]], Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° [[Universal Unique IDentifier|UUID]]. Он отличаСтся ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ, высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ криптографичСской ΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒΡŽ. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NanoID, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π°Π»Ρ„Π°Π²ΠΈΡ‚ ΠΈΠ· бСзопасных символов ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ настроСны ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅. + +**ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ характСристики NanoID** +- ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ NanoID Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π΄Π»ΠΈΠ½ΠΎΠΉ 21 символ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… ΠΊΠΎΡ€ΠΎΡ‡Π΅ UUID (36 символов) ΠΏΡ€ΠΈ схоТСм ΡƒΡ€ΠΎΠ²Π½Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. +- Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ. ГСнСрация NanoID происходит быстрСС, Ρ‡Π΅ΠΌ UUID, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ слоТных вычислСний. +- ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΡΡ‚ΠΎΠΉΠΊΠΎΡΡ‚ΡŒ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², NanoID ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ криптографичСски бСзопасный Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ подходящим для Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ прСдсказуСмости. +- ΠΠ°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»Ρ„Π°Π²ΠΈΡ‚ ΠΈ Π΄Π»ΠΈΠ½Ρƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² зависимости ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ систСмы. + +NanoID идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для: +- Π“Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² Π²Π΅Π±-прилоТСниях ΠΈ API. +- Боздания ссылок с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ, Π½ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями. +- Использования Π² систСмах, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ. +- ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ прСдсказуСмости ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../meta/zero/00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2024-10-30]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- ΠŸΠΎΡ€Ρ‚ для Java [GitHub - aventrix/jnanoid: A unique string ID generator for Java.](https://github.com/aventrix/jnanoid) + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/Time-Sorted Identifier.md b/dev/Time-Sorted Identifier.md new file mode 100644 index 00000000..73d09f4f --- /dev/null +++ b/dev/Time-Sorted Identifier.md @@ -0,0 +1,31 @@ +--- +aliases: + - TSID +tags: + - maturity/🌱 +date: 2024-10-30 +--- +TSID (Time-Sorted Identifier) β€” это Ρ‚ΠΈΠΏ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ [[Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности|ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°]], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ гСнСрируСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ создания. Он сочСтаСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для распрСдСлённых систСм ΠΈ [[../meta/zero/00 HighLoad|высоконагруТСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ]]. + +**ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ характСристики TSID:** +- Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ отсутствиС ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ высокой скорости Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π² распрСдСлённых срСдах. +- Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ВрСмСнная ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² структурС TSID позволяСт автоматичСски ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² хронологичСском порядкС, упрощая Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π»ΠΎΠ³Π°ΠΌΠΈ. +- ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ [[Universal Unique IDentifier|UUID]], TSID Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ мСньшС мСста, Ρ‡Ρ‚ΠΎ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. +- Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ГСнСрация TSID происходит быстро ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ сСрвСра, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ этот Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² эффСктивным для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… систСм. + +**ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ TSID:** +- [[Universal Unique IDentifier|Universal Unique IDentifier]] β€” ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π½ΠΎ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. +- [[NanoId]] β€” ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ Π±Π΅Π· встроСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ сортировки ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../meta/zero/00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: [[Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности]] +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2024-10-30]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- [The best UUID type for a database Primary Key - Vlad Mihalcea](https://vladmihalcea.com/uuid-database-primary-key/) + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/Universal Unique IDentifier.md b/dev/Universal Unique IDentifier.md index a4c55ec2..81027c92 100644 --- a/dev/Universal Unique IDentifier.md +++ b/dev/Universal Unique IDentifier.md @@ -4,9 +4,6 @@ aliases: tags: - maturity/🌱 date: 2023-11-12 -zero-link: -parents: -linked: --- **UUID (Universal Unique IDentifier)** β€” это 128-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, прСдставлСнный Π² Π²ΠΈΠ΄Π΅ строки. Однако для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 122 Π±ΠΈΡ‚Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ 6 Π±ΠΈΡ‚ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ: - 4 Π±ΠΈΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для указания вСрсии UUID; @@ -135,13 +132,13 @@ UUID V7 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ‚ΠΈΠΏΠΎΠ² Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ, *** ## ΠœΠ΅Ρ‚Π° информация **ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../meta/zero/00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] -**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: [[Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности|Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности]] **Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: **Автор**:: **Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2023-11-12]] ### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ - [ID-Π±Π°Ρ‚Ρ‚Π»: UUID vs Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π£Π΄Π°Π»ΡŒΡ†ΠΎΠ² - YouTube](https://www.youtube.com/watch?v=Xr_SNd9LIng&t=1762s) - [Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ UUID Π² Java. ВсС вСрсии](https://github.com/f4b6a3/uuid-creator) -- [[../../../_inbox/АвтоинкрСмСнт|АвтоинкрСмСнт]] +- [[database/other/АвтоинкрСмСнт Π² Π‘Π”|АвтоинкрСмСнт Π² Π‘Π”]] ### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ diff --git a/dev/database/other/АвтоинкрСмСнт Π² Π‘Π”.md b/dev/database/other/АвтоинкрСмСнт Π² Π‘Π”.md new file mode 100644 index 00000000..57c22520 --- /dev/null +++ b/dev/database/other/АвтоинкрСмСнт Π² Π‘Π”.md @@ -0,0 +1,51 @@ +--- +aliases: + - Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ + - sequence +tags: + - maturity/🌱 +date: 2025-02-18 +--- +АвтоинкрСмСнт β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ [[../../../meta/zero/00 РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…|Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…]], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ числового ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ записи. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. + +Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ==трСбуСтся мСсто, Π³Π΄Π΅ хранится послСднСС сгСнСрированноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.== Π’ Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π£Π‘Π” это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π·: +- **Sequences** (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `CREATE SEQUENCE` Π² PostgreSQL, Oracle); +- **Auto-increment fields** (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `AUTO_INCREMENT` Π² MySQL, `IDENTITY` Π² SQL Server); +- **Π’Π°Π±Π»ΠΈΡ†Ρ‹-счСтчики** (Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ способ, Ссли Π‘Π£Π‘Π” Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ). + +ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π‘Π” ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ доступноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ³ΠΎ счСтчика ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. + +**ΠŸΠ»ΡŽΡΡ‹ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°** +- **Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ**. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ значСния ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, записи автоматичСски ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ вставки. +- **Π›Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΡ‹ΠΉ**. ЧисловыС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Π΅ΠΌ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ [[../../Universal Unique IDentifier|UUID]]. +- **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ индСксов**. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС Π² [[../ИндСкс Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…|индСксах]], ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ† индСкса, Π° Π½Π΅ Π² случайныС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ (Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для [[../../fundamental/structure/B-tree|B-Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π²]]). +- **ΠŸΡ€ΠΎΡ‰Π΅ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ**. Π’ Π»ΠΎΠ³Π°Ρ… Π»Π΅Π³Ρ‡Π΅ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ записи с ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. + +**ΠœΠΈΠ½ΡƒΡΡ‹ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°** +- **МоТно ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ количСство записСй**. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ систСмы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, количСство Π·Π°ΠΊΠ°Π·ΠΎΠ² Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅. +- **Π›Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° записСй**. Зная ΠΎΠ΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. +- **ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ**. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `BIGINT` Π² PostgreSQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ максимум `9,223,372,036,854,775,807` записСй). +- **НС Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ**. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ UUID, Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ содСрТат ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ создания ΠΈΠ»ΠΈ сСрвСрС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ… сгСнСрировал. + +Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ количСство записСй ΠΈΠ»ΠΈ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ID, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: +- [[../../Universal Unique IDentifier|UUID]]. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ прСдсказуСмости, Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ индСксов. +- **Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹Π΅ ID**. ВмСсто Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ случайныС числа. +- **ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ID**. НапримСр, Ρ‡Π΅Ρ€Π΅Π· Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (`SHA-256`) ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (`Base62`). +- **Salted-ΠΊΠ»ΡŽΡ‡ΠΈ**. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфикса ΠΊ числам (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `ORD-1001`). +### ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° Π² UUID +![](../../../meta/files/images/Pasted%20image%2020231112135724.png) + + +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../../meta/zero/00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: [[../../Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности|Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности]] +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-18]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/database/other/ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ с UUID Π½Π° Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚.md b/dev/database/other/ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ с UUID Π½Π° Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚.md new file mode 100644 index 00000000..ea0db46e --- /dev/null +++ b/dev/database/other/ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ с UUID Π½Π° Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚.md @@ -0,0 +1,108 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2025-02-18 +--- +Π’ этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ описываСтся процСсс ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с [[../../Universal Unique IDentifier|UUID]] Π½Π° [[АвтоинкрСмСнт Π² Π‘Π”]] + +ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΈ Π°Π½Π°Π»ΠΈΠ· зависимостСй +- НСт Π»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (FK), ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ UUID. +- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ прилоТСния, API, скрипты: Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ старый Ρ‚ΠΈΠΏ ΠΊΠ»ΡŽΡ‡Π° ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. + +Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ столбца +- Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ с Ρ‚ΠΈΠΏΠΎΠΌ `BIGINT` (ΠΈΠ»ΠΈ `BIGSERIAL`, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ PostgreSQL). +- Если трСбуСтся, создайтС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: + +```sql +CREATE SEQUENCE your_table_id_seq; +``` + +ΠΠ°Π·Π½Π°Ρ‡ΡŒΡ‚Π΅ этой ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ `DEFAULT`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ вставкС Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ автоматичСски: + +```sql +ALTER TABLE your_table + ALTER COLUMN temp_id SET DEFAULT nextval('your_table_id_seq'); +``` + +Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ `NOT NULL` (Ссли ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ пропусков): + +```sql +ALTER TABLE your_table + ALTER COLUMN temp_id SET NOT NULL; +``` + +Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ (бэкфил). ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ записи, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки появилось ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: +```sql +UPDATE your_table + SET temp_id = nextval('your_table_id_seq'); +``` + +> [!WARNING] +> Если Π²Π°ΠΆΠ΅Π½ порядок (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ Π΄Π°Ρ‚Π΅ создания), ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТный запрос с сортировкой. + +ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ +- Π£Π΄Π°Π»ΠΈΡ‚Π΅ внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ, Ссли ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ-ΠΊΠ»ΡŽΡ‡. +- Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ: + +```sql +ALTER TABLE your_table DROP COLUMN old_uuid_column; +``` +ΠΈΠ»ΠΈ: +```sql +ALTER TABLE your_table RENAME COLUMN old_uuid_column TO uuid_backup; +``` + +ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ `temp_id` Π² `id`: +```sql +ALTER TABLE your_table + RENAME COLUMN temp_id TO id; +``` + +Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡: +```sql +ALTER TABLE your_table + ADD CONSTRAINT your_table_pkey PRIMARY KEY (id); +``` + +- Если Π±Ρ‹Π»ΠΈ внСшниС ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° старый UUID, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΈΡ… ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²Ρ‹Π΅, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ. +- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ прилоТСния: Ρ‚Π°ΠΌ, Π³Π΄Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ оТидался UUID, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ число. ΠŸΡ€ΠΈ нСобходимости скоррСктируйтС схСмы, DTO, сСрвисы ΠΈ Ρ‚. ΠΏ. +### ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с Liquibase +Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ столбца с Π°Π²Ρ‚ΠΎΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ +```xml + + + + + +``` + +Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ столбца значСниями +```xml + + UPDATE your_table SET temp_id = nextval('your_table_id_seq'); + +``` + +Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ старого UUID ΠΈ установка Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° +```xml + + + + + + +``` +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../../meta/zero/00 РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…|00 РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-18]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/database/ИндСкс Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….md b/dev/database/ИндСкс Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….md index 02c92c74..03cb9b06 100644 --- a/dev/database/ИндСкс Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….md +++ b/dev/database/ИндСкс Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….md @@ -5,6 +5,7 @@ aliases: - индСксы - индСксирования - индСкса + - индСксах tags: - maturity/🌱 date: 2024-10-11 diff --git a/dev/devops/other/АвтоматичСская диагностика Π² Gitea.md b/dev/devops/other/АвтоматичСская диагностика Π² Gitea.md new file mode 100644 index 00000000..c366316d --- /dev/null +++ b/dev/devops/other/АвтоматичСская диагностика Π² Gitea.md @@ -0,0 +1,27 @@ +--- +aliases: + - самодиагностику Gitea +tags: + - maturity/🌱 +date: 2025-02-05 +--- +```shell +gitea doctor check +``` + +```shell +docker exec -it gitea su git -c "gitea doctor check" +``` +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../../meta/zero/00 Gitea|00 Gitea]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-05]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/devops/other/ВысокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Gitea.md b/dev/devops/other/ВысокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Gitea.md new file mode 100644 index 00000000..3d199fd9 --- /dev/null +++ b/dev/devops/other/ВысокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Gitea.md @@ -0,0 +1,80 @@ +--- +aliases: +tags: + - maturity/🌱 + - content/problem +date: 2025-02-04 +--- +Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ сСрвСр (ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€:Β 2 coreΒ  ΠŸΠ°ΠΌΡΡ‚ΡŒ:Β 4 GbΒ Β Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅:Β 60 Gb) Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Gitea стал ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ рСсурсов. + +``` +top -o %CPU -b -n 1 | head -20 +``` + +Cудя ΠΏΠΎ top, основным ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΌ CPU являСтся Gitea, которая Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 22,7% CPU ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 61,6% ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π’Π°ΠΊΠΆΠ΅ ΡƒΠ²ΠΈΠ΄Π΅Π» нСсколько Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… процСссов git, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Gitea для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², ΠΈ ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ CPU. + +Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» Π»ΠΎΠ³ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° + +``` +docker logs --tail 50 gitea +``` + +По Π»ΠΎΠ³Π°ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Π», Ρ‡Ρ‚ΠΎ Ρƒ мСня ΠΌΠ½ΠΎΠ³ΠΎ **ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… запросов (slow GET)**, связанных с: +1. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ blame (история ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²) +2. Доступом ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π² рСпозиториях +3. Π Π°Π±ΠΎΡ‚ΠΎΠΉ с RSS ΠΈ raw-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ +4. Запросами Π½Π° поиск ΠΈ скачиваниС ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° + +ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ 404-ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° частыС обращСния ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ рСсурсам. + +Π”Π°Π»Π΅Π΅ я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ процСссы Gitea + +``` +docker exec -it gitea top -b -n 1 +``` + +Gitea Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ выполняла ΠΌΠ½ΠΎΠ³ΠΎ процСссов Git, связанных с read-tree, rev-list, cat-file, check-attr ΠΈ batch-check. Π­Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Gitea Π»ΠΈΠ±ΠΎ индСксируСт Ρ„Π°ΠΉΠ»Ρ‹, Π»ΠΈΠ±ΠΎ выполняСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, связанныС с доступом ΠΊ рСпозиториям: +- read-tree β†’ Π§Ρ‚Π΅Π½ΠΈΠ΅ структуры рСпозитория. +- log -1 β†’ ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ послСднСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° для Ρ„Π°ΠΉΠ»Π°. +- cat-file --batch β†’ Доступ ΠΊ содСрТимому Ρ„Π°ΠΉΠ»ΠΎΠ². + +Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ΠΎ: +1. [[Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Gitea|Π€ΠΎΠ½ΠΎΠ²Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Gitea]]. +2. **Запросами ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ** β€” Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Gitea Ρ‡Π΅Ρ€Π΅Π· UI. Но Ρƒ мСня ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Git хостинг, Π½ΠΈΠΊΡ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ мСня ΠΈΠΌ Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. +3. **Запросы ΠΎΡ‚ Π±ΠΎΡ‚ΠΎΠ²** - ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ парсСры, особСнно Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Gitea Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ. +4. **Webhooks ΠΈΠ»ΠΈ интСграциями** β€” Ссли ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ сСрвисы Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с Gitea. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Ρƒ мСня Π±Ρ‹Π»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Drone CI, которая вряд Π»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. + + + +ΠŸΠ΅Ρ€Π΅Π΄ дальнСйшими дСйствиям, я Ρ€Π΅ΡˆΠΈΠ» провСсти [[АвтоматичСская диагностика Π² Gitea|самодиагностику Gitea]]. Но всС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Ρ‹Π»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Ρ‹. +## ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ пСрСодичСских Π·Π°Π΄Π°Ρ‡ +Π― Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² [[Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Gitea|Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… Gitea]]. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Ρ‡Ρ‚ΠΎ Ρƒ мСня Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² Π·Π΅Ρ€ΠΊΠ°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‚ΡΠ³ΠΈΠ²Π°Π»ΠΈΡΡŒ с GitHub. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Gitea. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ запросом, ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· панСль управлСния Π² UI. + +``` +curl -X GET "http://localhost:3000/api/v1/admin/cron" -H "Authorization: token YOUR_ACCESS_TOKEN" +``` + +Π”Π°Π»Π΅Π΅ я ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ» сначала всС Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ оставил Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅. И Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд показалось, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. + +Однако спустя час Gitea снова потрСбляла CPU (41,2%) ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ (13,7%). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, снова Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ процСсс git (17,6% CPU), Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Gitea выполняСт ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с рСпозиториями. Π₯отя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² это врСмя Π½Π΅ Π±Ρ‹Π»ΠΎ. +## Запросы ΠΎΡ‚ Π±ΠΎΡ‚ΠΎΠ² +Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» это ΠΌΠΎΠΉ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Git хостинг, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ я. Но ΠΎΠ½ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ, ΠΈ я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ парсСры ΠΌΠΎΠ³ΡƒΡ‚ постоянно ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ случайно ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ доступа. + +Π― Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ эту Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ. + + + + +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../../meta/zero/00 Gitea|00 Gitea]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-04]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/devops/other/ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° get запросов ΠΊ Gitea.md b/dev/devops/other/ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° get запросов ΠΊ Gitea.md new file mode 100644 index 00000000..cb7cb39c --- /dev/null +++ b/dev/devops/other/ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° get запросов ΠΊ Gitea.md @@ -0,0 +1,68 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2025-02-05 +--- +Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Gitea происходят Ρ‡Π°Ρ‰Π΅ всСго Π·Π° послСдниС 8 часов. + +```shell +docker logs gitea --since "8h" | grep "router: completed GET" | awk '{print $NF}' | sort | uniq -c | sort -nr | head -20 +``` + +ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°: +``` +grep: (стандартный Π²Π²ΠΎΠ΄): Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» совпадаСт + 6933 repo/view_home.go:314(repo.Home) + 1332 repo/commit.go:44(repo.RefCommits) + 860 :1(WebNotFound) + 824 repo/download.go:111(repo.SingleDownload) + 805 repo/blame.go:42(repo.RefBlame) + 531 context/repo.go:401(context.RepoAssignment) + 88 repo/issue_list.go:750(repo.Issues) + 56 repo/commit.go:279(repo.Diff) + 23 repo/commit.go:410(repo.RawDiff) + 21 auth/auth.go:179(auth.SignIn) + 9 repo/download.go:123(repo.SingleDownloadOrLFS) + 9 feed/render.go:11(feed.RenderBranchFeed) + 7 repo/milestone.go:244(repo.MilestoneIssuesAndPulls) + 6 misc/misc.go:36(misc.RobotsTxt) + 5 repo/find.go:19(repo.FindFiles) + 4 repo/compare.go:708(repo.CompareDiff) + 3 repo/milestone.go:34(repo.Milestones) + 1 web/goget.go:20(web.goGet) + 1 repo/treelist.go:17(repo.TreeList) + 1 repo/repo.go:469(repo.Download) +``` + +- **repo/view_home.go:314(repo.Home) β†’ 6933 запросов** + - Главная страница рСпозитория (ΠΎΠ±Π·ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ², README). + - ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ΠΎ частым ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ страниц ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈΠ»ΠΈ Π±ΠΎΡ‚Π°ΠΌΠΈ. +- **repo/commit.go:44(repo.RefCommits) β†’ 1332 запросов** + - ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ списка ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. + - ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ парсСрами. +- **\:1(WebNotFound) β†’ 860 ошибок 404** + - ΠšΡ‚ΠΎ-Ρ‚ΠΎ (ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ) Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ страницы. + - Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹: + - Π‘ΠΎΡ‚Ρ‹, ΡΠΊΠ°Π½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ сайт (поиск уязвимостСй). + - ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, пСрСходящиС ΠΏΠΎ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ссылкам. + - ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ссылки Π² ΠΊΠΎΠ΄Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, старыС ΠΈΠ»ΠΈ сломанныС URL). +- **repo/download.go:111(repo.SingleDownload) β†’ 824 запросов** + - Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· рСпозитория. + - Если это **LFS-Ρ„Π°ΠΉΠ»Ρ‹**, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ **ΠΎΡ‡Π΅Π½ΡŒ большими**, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° CPU ΠΈ ΡΠ΅Ρ‚ΡŒ. +- **repo/blame.go:42(repo.RefBlame) β†’ 805 запросов** + - ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ (git blame). + - ΠžΡ‡Π΅Π½ΡŒ тяТёлая опСрация, особСнно для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ². +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-05]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/devops/other/Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Gitea.md b/dev/devops/other/Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Gitea.md new file mode 100644 index 00000000..c2d14de6 --- /dev/null +++ b/dev/devops/other/Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Gitea.md @@ -0,0 +1,90 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2025-02-04 +--- +Π’ΠΎΡ‚ список основных Π·Π°Π΄Π°Ρ‡ (cron-Π·Π°Π΄Π°Ρ‡), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Gitea выполняСт ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ: +### Π—Π°Π΄Π°Ρ‡Π° `start_schedule_tasks` +Π—Π°Π΄Π°Ρ‡Π° `start_schedule_tasks` Π² Gitea ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° **запуск всСх Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡**, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Она запускаСтся **ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ**. + +### Π—Π°Π΄Π°Ρ‡Π° `update_mirrors` +- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ обновлСния Π² Π·Π΅Ρ€ΠΊΠ°Π»Π°Ρ… (mirror repositories) ΠΈ синхронизируСт ΠΈΡ…. +- Если Ρƒ тСбя Π΅ΡΡ‚ΡŒ Π·Π΅Ρ€ΠΊΠ°Π»Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ. +### Π—Π°Π΄Π°Ρ‡Π° `repo_health_check` +- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° поврСТдСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹). +- Если Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Π½ΠΎ Π² долгосрочной пСрспСктивС ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ β€œΠ±ΠΈΡ‚Ρ‹Π΅β€ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сломаСтся. +### Π—Π°Π΄Π°Ρ‡Π° `check_repo_stats` +- ΠŸΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ΠΎΠ². +### Π—Π°Π΄Π°Ρ‡Π° `archive_cleanup` +- УдаляСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΠ²Ρ‹ (.zip, .tar.gz), созданныС ΠΏΡ€ΠΈ скачивании Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π². +- Π‘Π΅Π· этой Π·Π°Π΄Π°Ρ‡ΠΈ дисковоС пространство ΠΌΠΎΠΆΠ΅Ρ‚ постСпСнно Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. +### Π—Π°Π΄Π°Ρ‡Π° `deleted_branches_cleanup` +- УдаляСт ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Π΅Ρ‚ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. +- Π‘Π΅Π· этой Π·Π°Π΄Π°Ρ‡ΠΈ дисковоС пространство ΠΌΠΎΠΆΠ΅Ρ‚ постСпСнно Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. +### Π—Π°Π΄Π°Ρ‡Π° `cleanup_packages` +- ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ· Gitea Package Registry. +- Если Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΡˆΡŒ Gitea для хранСния Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Docker-ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Maven-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²), ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π² систСмС навсСгда. + +### Π—Π°Π΄Π°Ρ‡ΠΈ `stop_zombie_tasks` ΠΈ `stop_endless_tasks` +- ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависли ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ бСсконСчно. +- Если Π² Gitea зависнСт процСсс (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Git-ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ»ΠΈ индСксация), ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ навсСгда ΠΈ ΠΆΡ€Π°Ρ‚ΡŒ рСсурсы. +### Π—Π°Π΄Π°Ρ‡Π° `cleanup_hook_task_table` +- УдаляСт старыС увСдомлСния ΠΎ систСмных событиях. +- Если Ρƒ тСбя ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ расти ΠΈΠ·-Π·Π° Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π»ΠΎΠ³ΠΎΠ². +### Π—Π°Π΄Π°Ρ‡Π° `git_gc_repos` +- ЗапускаСт git gc (сборщик мусора) для Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€. +- Если Ρ‚Ρ‹ часто ΠΏΡƒΡˆΠΈΡˆΡŒ большиС Ρ„Π°ΠΉΠ»Ρ‹, Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΌΠΎΠΆΠ΅Ρ‚ расти быстрСС, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ. +### Π—Π°Π΄Π°Ρ‡Π° `gc_lfs` +- УдаляСт ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Git LFS (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ). +- Если Ρƒ тСбя Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Git LFS, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС мСста, Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ. + +## Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ +Для экономии рСсурсов процСссора ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ + +```shell +nano /data/gitea/conf/app.ini +``` + +```toml +[cron] +ENABLED = false + +[cron.cleanup_packages] +ENABLED = true +SCHEDULE = @midnight + +[cron.archive_cleanup] +ENABLED = true +SCHEDULE = @midnight + +[cron.deleted_branches_cleanup] +ENABLED = true +SCHEDULE = @midnight + +[cron.cleanup_hook_task_table] +ENABLED = true +SCHEDULE = @midnight + +[cron.git_gc_repos] +ENABLED = true +SCHEDULE = @midnight +``` + +``` +docker restart gitea +``` + +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../../meta/zero/00 Gitea|00 Gitea]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-04]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².md b/dev/efficiency/Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².md similarity index 98% rename from dev/Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².md rename to dev/efficiency/Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².md index f9dc03f7..0e792b4c 100644 --- a/dev/Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².md +++ b/dev/efficiency/Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².md @@ -1,5 +1,8 @@ --- -aliases: +aliases: + - сСниор + - ΠΌΠΈΠ΄Π» + - Π΄ΠΆΡƒΠ½ tags: - maturity/🌱 date: 2024-10-22 @@ -29,7 +32,7 @@ date: 2024-10-22 Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΡΠΈΠ½ΡŒΠΎΡ€Π° максимальна. Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π°Π΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ участиС Π² стратСгичСском ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠΈΠ΄Π»Π°, ΡΠΈΠ½ΡŒΠΎΡ€ способСн Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ тСхничСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, выбирая Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡƒΡ‚ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Для Π½Π΅Π³ΠΎ Π²Π°ΠΆΠ΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΈ ΠΎΠ½ ΡƒΠΌΠ΅Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ Π΅Π³ΠΎ достиТСния с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ рСсурсов. *** ## ΠœΠ΅Ρ‚Π° информация -**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../meta/zero/00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../meta/zero/00 ЭффСктивная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 ЭффСктивная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] **Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: **Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: **Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2024-10-22]] diff --git a/dev/efficiency/ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° сСрвисы.md b/dev/efficiency/ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° сСрвисы.md new file mode 100644 index 00000000..a77dc725 --- /dev/null +++ b/dev/efficiency/ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° сСрвисы.md @@ -0,0 +1,58 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2025-02-13 +--- +Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвисС Π΅ΡΡ‚ΡŒ Π΄Π²Π° отвСтствСнных: это обСспСчиваСт баланс Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π²Π·Π°ΠΈΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² случаС отсутствия ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…. ==Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ отвСтствСнныС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС сСрвис прСвращаСтся Π² "Π½ΠΈΡ‡Π΅ΠΉ" ΠΈ становится лСгаси.== + +- **Π‘Ρ‚Π°Ρ€ΡˆΠΈΠΉ отвСтствСнный** β€” ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΡ€Π°Π²Π°ΠΌΠΈ maintainer-Π°, Π½ΠΎ ΠΏΡ€ΠΈ этом Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это [[Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²|сСниор]] ΠΈΠ»ΠΈ ΠΊΡ€Π΅ΠΏΠΊΠΈΠΉ [[Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²|ΠΌΠΈΠ΄Π»]]. +- **Младший отвСтствСнный** β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ основного отвСтствСнного ΠΈ замСняСт Π΅Π³ΠΎ Π² случаС отсутствия. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это [[Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²|Π΄ΠΆΡƒΠ½]] ΠΈΠ»ΠΈ [[Π“Ρ€Π΅ΠΉΠ΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²|ΠΌΠΈΠ΄Π»]], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π° сСбя Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ учится Ρƒ своСго ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ. + +**ΠžΠ±Ρ‰ΠΈΠ΅ обязанности отвСтствСнных:** +- Π—Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ [[Π‘hangelog ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ сСрвисов|changelog]] для всСх ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² сСрвисС. +- ΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² тСхничСских встрСчах для обсуТдСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΏΠ»Π°Π½ΠΎΠ² ΠΏΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ сСрвиса. +- Π Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ сСрвиса. + +**ΠžΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ отвСтствСнного:** +- ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ сСрвиса, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ исправлСниС ошибок. +- ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ основной тСхничСский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ качСства ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ. +- ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎ вопросам Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса. + +**ΠŸΠΎΠ»Π½ΠΎΠΌΠΎΡ‡ΠΈΡ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ отвСтствСнного:** +- Π’ случаС нСобходимости ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ ΠΌΠ»Π°Π΄ΡˆΠ΅ΠΌΡƒ отвСтствСнному. +- ΠœΠ΅Ρ€ΠΆΠΈΡ‚ΡŒ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² сСрвис послС прохоТдСния Ρ€Π΅Π²ΡŒΡŽ + +**ΠžΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΠΈ младшСго отвСтствСнного:** +- Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ обязанности основного отвСтствСнного Π² Π΅Π³ΠΎ отсутствиС. +- ΠŸΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ. +- Π£Ρ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ исправлСнии ошибок. +- ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎ вопросам Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса. + +**ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² сСрвисС** +- Младший отвСтствСнный Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π° Ρ€Π΅Π²ΡŒΡŽ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ β€” младшСго. +- Если Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ выполняСт Π½Π΅ отвСтствСнный Π·Π° сСрвис, Ρ‚ΠΎ Ρ€Π΅Π²ΡŒΡŽ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ отвСтствСнный. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π²ΡŒΡŽ ΠΌΠ»Π°Π΄ΡˆΠ΅ΠΌΡƒ отвСтствСнному. +- ВсС измСнСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄-Ρ€Π΅Π²ΡŒΡŽ отвСтствСнных Π·Π° сСрвис, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½Ρ‹Ρ… Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ. +- Π’ случаС разногласий ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ ΠΈ младшим отвСтствСнными измСнСния ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ/ΠΈΠ»ΠΈ Ρ‚Π΅Ρ…Π»ΠΈΠ΄ΠΎΠΌ. + +**ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ отвСтствСнности** +- Если ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ отвСтствСнный ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠ»ΠΈ пСрСводится Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ модуля опрСдСляСт Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ отвСтствСнного. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ младшСго Π½Π° эту Ρ€ΠΎΠ»ΡŒ ΠΈΠ»ΠΈ поиск Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°. +- Π”ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ младший Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ выполняСт Π΅Π³ΠΎ обязанности. +- Π’ систСмС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ список сСрвисов с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ отвСтствСнных Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². + +**ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ сСрвиса** +- РСшСния ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… измСнСниях ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π½Π° тСхничСских обсуТдСниях с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ модуля. +- Π’ качСствС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ€Π³Π°Π½Π° выступаСт Ρ‚Π΅Ρ…Π»ΠΈΠ΄ ΠΈ/ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€. +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../meta/zero/00 ЭффСктивная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 ЭффСктивная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-13]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/efficiency/Π‘hangelog ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ сСрвисов.md b/dev/efficiency/Π‘hangelog ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ сСрвисов.md new file mode 100644 index 00000000..398e48ab --- /dev/null +++ b/dev/efficiency/Π‘hangelog ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ сСрвисов.md @@ -0,0 +1,113 @@ +--- +aliases: + - changelog +tags: + - maturity/🌱 +date: 2025-02-13 +--- +Changelog (ΠΆΡƒΡ€Π½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ) β€” это большС, Ρ‡Π΅ΠΌ просто список исправлСний ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡. Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ мост ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ участниками ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями систСмы. Π­Ρ‚ΠΎ способ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ прСдсказуСмым ΠΈ понятным, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ хаоса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ наступаСт, ΠΊΠΎΠ³Π΄Π° измСнСния Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ Π² Π³Π»ΡƒΠ±ΠΈΠ½Π°Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΈΠ»ΠΈ устных обсуТдСний. + +Changelog β€” это структурированный ΠΆΡƒΡ€Π½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² сСрвисС ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ сhangelog ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° Ρ‚Ρ€ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… вопроса: +1. **Π§Ρ‚ΠΎ измСнилось?** (Π½ΠΎΠ²Ρ‹Π΅ возмоТности, исправлСния, ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, Π΄Π΅ΠΏΡ€Π΅ΠΊΠ΅ΠΉΡˆΠ΅Π½Ρ‹) +2. **ΠŸΠΎΡ‡Π΅ΠΌΡƒ это измСнилось?** (ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π΅ΡˆΠ΅Π½Ρ‹, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ стояли) +3. **Как это влияСт Π½Π° систСму ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ?** (Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ, Π΅ΡΡ‚ΡŒ Π»ΠΈ [[../other/Backward compatibility|backward compatibility]]) + +**Π—Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ?** +- **ΠŸΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ**. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, DevOps-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит с систСмой ΠΈ ΠΊΠ°ΠΊ это влияСт Π½Π° ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ. +- **Π˜ΡΡ‚ΠΎΡ€ΠΈΡ развития**. Changelog фиксируСт Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. +- ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. ПониманиС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ вСрсий. +- **ВзаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ**. Π₯ΠΎΡ€ΠΎΡˆΠΎ написанный changelog ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ вСрсиям, Π° Ρ‚Π°ΠΊΠΆΠ΅ слуТит ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ΠΎΠ²Ρ‹ΠΌ инструмСнтом, дСмонстрируя Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. + +**ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹** +- **Блабая структура ΠΈ хаос**. Если changelog вСдСтся нСрСгулярно ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ нСпослСдоватСлСн, ΠΎΠ½ тСряСт свою ΠΏΠΎΠ»ΡŒΠ·Ρƒ. +- **Π˜Π·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ**. Если changelog прСвращаСтся Π² ΠΏΠΎΡ‚ΠΎΠΊ тСхничСских подробностСй, понятных Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΎΠ½ пСрСстаСт Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. +- **НСдостаточная дСтализация**. Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° Β«Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π±Π°Π³ΠΈΒ» ΠΈΠ»ΠΈ Β«Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΒ» Π½Π΅ Π΄Π°Π΅Ρ‚ читатСлям Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. + +**Виповая структура** +- **ИзмСнСния API**. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС измСнСния, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° взаимодСйствиС с внСшними систСмами ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ API: + - Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ: Π½ΠΎΠ²Ρ‹Π΅ эндпоинты, Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запросов/ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². + - ИзмСнСно: измСнСния ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² API, измСнСния ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ API. + - Π£Π΄Π°Π»Π΅Π½ΠΎ: ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ эндпоинты ΠΈΠ»ΠΈ вСрсии API, ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запросов/ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². + - Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ (rate-limiting, авторизация ΠΈ Ρ‚. Π΄.). +- **ИзмСнСния мСТсСрвисных взаимодСйствий**. Π€ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ измСнСния Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ сСрвисы Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° ΠΈ Π·Π°Ρ‡Π΅ΠΌ. Бюда Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ измСнСния API. + - Начали Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ сСрвис. + - ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ сСрвис + - ИзмСнСна схСма Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами + - billing Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вызываСтся асинхронно Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ вмСсто синхронного REST-запроса. +- **ИзмСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ**. ЀиксируСт измСнСния, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° настройки систСмы: + - НовыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния. + - ИзмСнСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². + - Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΡ‡-Ρ„Π»Π°Π³ΠΎΠ². + - ИзмСнСния Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². +- **Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π³ΠΎΠ²**. Бписок устранСнных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы: + - ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ фиксы, Π²Ρ‹Π·Ρ‹Π²Π°Π²ΡˆΠΈΠ΅ падСния ΠΈΠ»ΠΈ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти. + - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ расчСтов, Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок. + - Π‘Π°Π³ΠΈ, связанныС с интСграциями ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ. + - ОбновлСния зависимостСй, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ извСстныС уязвимости. +- **Новый Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»**. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС Π½ΠΎΠ²Ρ‹Π΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² систСмС: + - **Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ**. НовыС возмоТности, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ измСнСния Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса. + - **НовыС сцСнарии использования**, появившиСся послС обновлСния. + - **ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΉ**. +- **ВСхничСскиС измСнСния**. ИзмСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π° API, Π½ΠΎ Π²Π°ΠΆΠ½Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы: + - ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. + - Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. + - Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ логирования (Π½ΠΎΠ²Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ Π»ΠΎΠ³ΠΎΠ², Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ). + - ОбновлСния зависимостСй. + - ИзмСнСния Π² CI/CD, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ дСплоя, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅. +- **Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ**. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ сроков ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²: + - Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ API ΠΈ ΠΈΡ… Π·Π°ΠΌΠ΅Π½Ρ‹. + - УдаляСмыС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. + - Π€ΠΈΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. +- **ДСйствия ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ**. Π§Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ»ΠΈ послС обновлСния: + - Запуск ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. + - ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° кэша ΠΈΠ»ΠΈ пСрСсборка индСксов. + - ОбновлСниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ окруТСния. + - Π ΡƒΡ‡Π½ΠΎΠΉ запуск скриптов ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов. + +**Как ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ changelog?** +1. **Π‘ΠΎΠ±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ структуру** +2. **Changelog Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ** + 1. Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ±Ρ€Π°Π»ΠΈ Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°, этого Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ сущСствовало для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. + 2. НС Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” changelog фиксируСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Π΅ измСнСния. +3. **ΠŸΠΈΡˆΠΈΡ‚Π΅ понятно**. Π’Π°ΡˆΠ° цСлСвая аудитория это люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π² ваш сСрвис. + 1. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ тСхничСского ΠΆΠ°Ρ€Π³ΠΎΠ½Π°, Ссли это Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ. + 2. ΠžΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ измСнСния Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ устройством систСмы. + 3. Π£ΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ контСкст: Ρ‡Ρ‚ΠΎ исправлСно ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ. +4. ЀиксируйтС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ + 4. НС просто Β«ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ APIΒ», Π° Β«ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ API для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° XΒ». + 5. ДобавляйтС ссылки Π½Π° Ρ‚ΠΈΠΊΠ΅Ρ‚Ρ‹, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. +5. **ΠžΠ±Π½ΠΎΠ²Π»ΡΠΉΡ‚Π΅ changelog ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ, Π° Π½Π΅ послС.** Changelog Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Π½Π΅ постфактум-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. +6. **Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ с вСрсиями.** + 1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вСрсионированиС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, [[../other/БСмантичСскоС вСрсионированиС|Semantic Versioning]]). + 2. Если выпускаСтся ΠΏΠ°Ρ‚Ρ‡, changelog Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исправлСния ошибок, Π° Π½Π΅ всС измСнСния Π·Π° послСдниС мСсяцы. + +**ΠŸΡ€ΠΎΡ†Π΅ΡΡ вСдСния changelog** +Π§Ρ‚ΠΎΠ±Ρ‹ changelog Π±Ρ‹Π» ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΡ‚ΠΈΡΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… строгого процСсса: +5. **Changelog фиксируСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ измСнСния** + 1. Π’ changelog Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вошли Π² Ρ€Π΅Π»ΠΈΠ· + 2. Если Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Π΄ΠΎ выпуска вСрсии, Ρ‚ΠΎ это **Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ слСдов Π² changelog**. НапримСр, Ссли Π² SNAPSHOT-вСрсии Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ API, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°, Ρ‚ΠΎ запись ΠΎ Π½Π΅ΠΌ просто удаляСтся, Π° Π½Π΅ замСняСтся Π½Π° Β«ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ APIΒ». +6. **Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ записСй Π² changelog**. ИзмСнСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ β€” каТдая Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ зафиксирована Π² changelog, Π° Π½Π΅ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°Ρ…. +7. **Π Π΅Π²ΡŒΡŽΠ²Π΅Ρ€ обязан ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ записСй Π² changelog**. + - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° changelog становится Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ code review, ΠΊΠ°ΠΊ ΠΈ сам ΠΊΠΎΠ΄. + - Π—Π°ΠΏΠΈΡΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ понятной, ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΡΡƒΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π±Ρ‹Ρ‚ΡŒ написана простым языком. + - Π Π΅Π²ΡŒΡŽΠ²Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ измСнСния, Π½Π΅ вошСдшиС Π² Ρ€Π΅Π»ΠΈΠ·. + +**Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ совСты** +- МоТно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сбор changelog Π½Π° основС PR-описаний, Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ changelog ΠΏΠΎΠΏΠ°Π΄Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ измСнСния. ГСнСрация changelog ΠΈΠ· commit history (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Conventional Commits) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ТСсткой дисциплины. +- Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° часто Π·Π°Π΄Π°ΡŽΡ‚ вопросы ΠΏΠΎ changelog, это сигнал, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ стоит Π΄Π΅Π»Π°Ρ‚ΡŒ понятнСС. +- МоТно Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎΡΡ‚ΡŒ changelog, давая Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ, Π½Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠΌ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ измСнСния. +- Changelog старых вСрсий Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ послС ΠΈΡ… выпуска. + +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../meta/zero/00 ЭффСктивная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 ЭффСктивная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-13]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/fundamental/structure/B-tree.md b/dev/fundamental/structure/B-tree.md index a0bef8d2..c6458071 100644 --- a/dev/fundamental/structure/B-tree.md +++ b/dev/fundamental/structure/B-tree.md @@ -1,5 +1,6 @@ --- -aliases: +aliases: + - B-Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² tags: - maturity/🌱 date: 2024-01-29 diff --git a/dev/java/quarkus/ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Ρ‹ Π² Quarkus ΠΈ Vert.x.md b/dev/java/quarkus/ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Ρ‹ Π² Quarkus ΠΈ Vert.x.md new file mode 100644 index 00000000..96bc09da --- /dev/null +++ b/dev/java/quarkus/ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Ρ‹ Π² Quarkus ΠΈ Vert.x.md @@ -0,0 +1,64 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2025-02-24 +--- +Допустим, ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π²Π΅Π±-сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ входящиС HTTP-запросы. ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ запросу назначаСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π½Π° протяТСнии всСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: +- ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, +- Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²Π½Π΅ΡˆΠ½ΠΈΡ… API, +- запись Π»ΠΎΠ³ΠΎΠ², +- ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° событий Π² Kafka ΠΈΠ»ΠΈ RabbitMQ. + +Π’ синхронных прилоТСниях всС просто: Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊ [[../../fundamental/ΠŸΠΎΡ‚ΠΎΠΊ процСсса ОБ|ΠΏΠΎΡ‚ΠΎΠΊΡƒ]], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обслуТиваСт запрос, ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° протяТСнии всСго выполнСния. + +Но Π² асинхронных систСмах Π·Π°Π΄Π°Ρ‡Π° услоТняСтся. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ синхронных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос выполняСтся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, Π² асинхронных систСмах Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ мноТСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π’ ΠΈΡ‚ΠΎΠ³Π΅: +- **ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ** β€” ΠΎΠ΄Π½Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° выполняСтся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ запроса пСрСдаСтся Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π”Π°Π½Π½Ρ‹Π΅, связанныС с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ. +- **Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ** β€” Ссли ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ запроса Π½Π΅ пСрСдаСтся автоматичСски, Π»ΠΎΠ³ΠΈ окаТутся нСсвязанными, ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° систСмы станСт слоТной. +- **Настройки ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ запроса ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ** β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Β«ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡΒ» ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ. + +Π’ Ρ‚Π°ΠΊΠΈΡ… условиях Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹ΠΉ вопрос: ==ΠΊΠ°ΠΊ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ состояниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ?== НапримСр, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ запроса для логирования, ΠΊΠ°ΠΊ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ потСряСтся ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ управлСния ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ частями ΠΊΠΎΠ΄Π°? + +Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² [[../../../meta/zero/00 Quarkus|Quarkus]] ΠΈ Vert.x ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ контСксты. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ асинхронными Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ. Однако сущСствуСт нСсколько Π²ΠΈΠ΄ΠΎΠ² контСкстов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅ΡˆΠ°Π΅Ρ‚ свои Π·Π°Π΄Π°Ρ‡ΠΈ. Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. + +==Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Quarkus ΠΈ Vert.x автоматичСски ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ контСкстами==, Π½ΠΎ Ссли ваш ΠΊΠΎΠ΄ выполняСтся Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ контСкст. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ [[ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ асинхронного выполнСния Π² Quarkus|Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ… ошибок]] ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ систСму Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΈ прСдсказуСмой. + +Π’ Quarkus ΠΈ Vert.x Π΅ΡΡ‚ΡŒ нСсколько Π²ΠΈΠ΄ΠΎΠ² контСкстов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт свою Ρ€ΠΎΠ»ΡŒ. +## ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ контСкст +ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ контСкст β€” это самый Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ процСссами, выходящими Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ запроса. + +ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ контСкста: +- Он ΠΎΠ±Ρ‰ΠΈΠΉ для всСх процСссов, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ нСбСзопасным для хранСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. +- Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ случайно ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ запросы. +- Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ `UnsupportedOperationException`. + + +> [!DANGER] НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ +> НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ контСкст для хранСния ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… запроса. ВмСсто этого Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с **ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ контСкстом**. +## ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ (основной) контСкст +Π­Ρ‚ΠΎ контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски создаСтся систСмой ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запроса. Он содСрТит: +- ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ [[../../architecture/Event Loop|event loop]], +- Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ настройки, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ для логирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MDC), +- ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСской ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ асинхронными Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ event loop. + +Когда Π²Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ HTTP-запрос ΠΈΠ»ΠΈ сообщСниС ΠΈΠ· Kafka, Quarkus автоматичСски создаСт основной контСкст ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ для выполнСния всСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. + +Однако ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запроса ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, этот контСкст ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ. +## Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ контСкст +ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ контСкст автоматичСски пСрСдаСтся ΠΌΠ΅ΠΆΠ΄Ρƒ асинхронными Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ event loop. Если Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пСрСдаСтся Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ), контСкст ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ. + +РСшСниС β€” ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ контСкст. Π­Ρ‚ΠΎ копия Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ контСкста, которая остаСтся доступной Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². + +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../../meta/zero/00 Quarkus|00 Quarkus]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-24]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/java/quarkus/ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ асинхронного выполнСния Π² Quarkus.md b/dev/java/quarkus/ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ асинхронного выполнСния Π² Quarkus.md new file mode 100644 index 00000000..fe91f5d6 --- /dev/null +++ b/dev/java/quarkus/ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ асинхронного выполнСния Π² Quarkus.md @@ -0,0 +1,56 @@ +--- +aliases: +tags: + - maturity/🌱 + - content/problem +date: 2025-02-24 +--- +Π’ процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· сСрвисов я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ асинхронной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра Ρ‚Π΅Ρ€ΡΠ»Π°ΡΡŒ диагностичСская информация, пСрСдаваСмая Ρ‡Π΅Ρ€Π΅Π· [[../../Mapped Diagnostic Context|MDC]]. + +ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ΄ выглядСл ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ‚Π°ΠΊ: + +```java +Unis.voidItem() + .chain(() -> mailService.process(msg)); +``` + +**Π’ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:** +- **ΠŸΠΎΡ‚Π΅Ρ€Ρ MDC:** MDC хранится Π² ThreadLocal, Π° асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Из-Π·Π° этого Π΄Π°Π½Π½Ρ‹Π΅, установлСнныС Π² MDC, Ρ‚Π΅Ρ€ΡΠ»ΠΈΡΡŒ ΠΈΠ»ΠΈ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎ услоТняло диагностику. +- **ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ изоляции:** ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Π·ΠΎΠ² выполнялся Π² ΠΎΠ±Ρ‰Π΅ΠΌ контСкстС, отсутствовало явноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ выполнСния. Π­Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ привСсти ΠΊ состояниям Π³ΠΎΠ½ΠΊΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ нСпрСдсказуСмым ошибкам. +- Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° [[../../architecture/Event Loop|event loop]]: Если ΠΌΠ΅Ρ‚ΠΎΠ΄ `mailService.process` выполнял Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, это ΠΌΠΎΠ³Π»ΠΎ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. + +Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π±Ρ‹ запрос поступал Ρ‡Π΅Ρ€Π΅Π· стандартныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ [[../../../meta/zero/00 Quarkus|Quarkus]] (gRPC, GraphQL, Kafka), Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ контСкстом ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ Π±Ρ‹ систСмой, ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±Ρ‹ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ. Однако Π² нашСм случаС Π²Ρ‹Π·ΠΎΠ² инициировался Ρ‡Π΅Ρ€Π΅Π· `org.apache.camel.Processor`, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий ΠΏΠΎ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ контСкстной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. + +Анализ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π² ΠΏΠΎΡ‚Π΅Ρ€Π΅ MDC ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Π’ условиях асинхронного выполнСния Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· Camel, Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ контСкста, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ логирования ΠΈ диагностики. + +==Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ явно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ контСкст ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅Π³ΠΎ.== Код Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: + +```java +final Context duplicateContext = Context.newInstance( + VertxContext.getOrCreateDuplicatedContext(vertx.getDelegate()) +); +Unis.voidItem() + .emitOn(duplicateContext::runOnContext) + .chain(() -> mailService.process(msg)); +``` + +**ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:** +- **Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ MDC:** Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ контСкст позволяСт пСрСнСсти всС Π΄Π°Π½Π½Ρ‹Π΅, связанныС с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ MDC), Ρ‡Ρ‚ΠΎ обСспСчиваСт ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ асинхронном Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. +- **Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ выполнСния:** ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ контСкст Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². +- УстранСниС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ [[../../architecture/Event Loop|event loop]]: Если ΠΌΠ΅Ρ‚ΠΎΠ΄ `mailService.process` содСрТит Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ»ΠΈ рСсурсоёмкиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ контСкстС ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ влияниС Π½Π° основной event loop. + +Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ваши асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· нСстандартныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Apache Camel, ΠΈ Quarkus Π½Π΅ управляСт контСкстом Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, созданиС Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ контСкста становится Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. + +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../../meta/zero/00 Quarkus|00 Quarkus]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-24]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/other/Бинхронизация ΠΏΠ°ΠΏΠΎΠΊ Π² MacOS.md b/dev/other/Бинхронизация ΠΏΠ°ΠΏΠΎΠΊ Π² MacOS.md new file mode 100644 index 00000000..dd5cdc60 --- /dev/null +++ b/dev/other/Бинхронизация ΠΏΠ°ΠΏΠΎΠΊ Π² MacOS.md @@ -0,0 +1,44 @@ +--- +aliases: +tags: + - maturity/🌱 + - content/problem +date: 2025-02-11 +--- +Π£ мСня Π΅ΡΡ‚ΡŒ ТСсткий диск, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я пСрСодичСски Π±ΡΠΊΠ°ΠΏΠΈΡ€ΡƒΡŽ Π½Π° MacOS. Под бэкапом я понимаю ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ структуры ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². НуТно ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появились. + +Для этого я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ `rsync` : + +```shell +rsync -av --delete /ΠΏΡƒΡ‚ΡŒ/ΠΊ/ΠΏΠ΅Ρ€Π²ΠΎΠΉ_ΠΏΠ°ΠΏΠΊΠ΅/ /ΠΏΡƒΡ‚ΡŒ/ΠΊΠΎ/Π²Ρ‚ΠΎΡ€ΠΎΠΉ_ΠΏΠ°ΠΏΠΊΠ΅/ +``` + +> [!WARNING] +> Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡƒΡ‚ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ (/ΠΏΡƒΡ‚ΡŒ/ΠΊ/ΠΏΠ΅Ρ€Π²ΠΎΠΉ_ΠΏΠ°ΠΏΠΊΠ΅/) Π΅ΡΡ‚ΡŒ **слэш /**. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ: rsync Π² этом случаС ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ **содСрТимоС** ΠΏΠ°ΠΏΠΊΠΈ, Π° Π½Π΅ саму ΠΏΠ°ΠΏΠΊΡƒ. + +**Π Π°Π·Π±ΠΎΡ€ Ρ„Π»Π°Π³ΠΎΠ²:** +- -a β€” Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ (сохраняСт ΠΏΡ€Π°Π²Π°, Π΄Π°Ρ‚Ρ‹, символичСскиС ссылки ΠΈ ΠΏΡ€.) +- -v β€” Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ, Ссли Π½Π΅ Π½ΡƒΠΆΠ΅Π½ список Ρ„Π°ΠΉΠ»ΠΎΠ²) +- --delete β€” удаляСт Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Ссли ΠΈΡ… большС Π½Π΅Ρ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ + +Если Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ моТСшь ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сухой ΠΏΡ€ΠΎΠ³ΠΎΠ½: + +```shell +rsync -av --delete --dry-run ~/Documents/source/ ~/Documents/backup/ +``` + +Он ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сдСлано, Π½ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ„Π°ΠΉΠ»Ρ‹. + +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../meta/zero/00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°|00 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-11]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности.md b/dev/Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности.md new file mode 100644 index 00000000..74146f96 --- /dev/null +++ b/dev/Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сущности.md @@ -0,0 +1,39 @@ +--- +aliases: + - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ + - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° + - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² +tags: + - maturity/🌱 +date: 2025-02-18 +--- +Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (ID) β€” это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ для ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ опрСдСлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² систСмС. Он ΠΈΠ³Ρ€Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² [[architecture/БизнСс-Π»ΠΎΠ³ΠΈΠΊΠ°|бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ΅]], связывая сущности ΠΈ обСспСчивая ΠΈΡ… ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅. + +**Π’ΠΈΠΏΡ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²** +- [[database/other/АвтоинкрСмСнт Π² Π‘Π”|АвтоинкрСмСнт Π² Π‘Π”]] +- [[Universal Unique IDentifier|UUID]] +- [[Time-Sorted Identifier]] +- [[NanoId|NanoId]] +- Π₯Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ +- ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹. Иногда ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ для удобства ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: + - UUID + порядковый Π½ΠΎΠΌΠ΅Ρ€ (для удобства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ). + - ΠžΡΠΌΡ‹ΡΠ»Π΅Π½Π½Ρ‹Π΅ ID (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ORD-20240218-1234 для Π·Π°ΠΊΠ°Π·ΠΎΠ²). + - Π₯Сш-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ([[cryptography/SHA-256|SHA-256]], Base62), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ прСдсказуСмыС ID. +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2025-02-18]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + +- [[Universal Unique IDentifier]] +- [[АвтоинкрСмСнт Π² Π‘Π”]] +- [[Time-Sorted Identifier]] + + diff --git a/meta/zero/00 Gitea.md b/meta/zero/00 Gitea.md new file mode 100644 index 00000000..a8cba922 --- /dev/null +++ b/meta/zero/00 Gitea.md @@ -0,0 +1,17 @@ +--- +aliases: + - Gitea +tags: + - type/zero-link +date: 2025-02-04 +title: Gitea +--- +- [[../../dev/devops/other/Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Gitea|Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Gitea]] + + +Диагностика: +- [[../../dev/devops/other/АвтоматичСская диагностика Π² Gitea|АвтоматичСская диагностика Π² Gitea]] +- [[../../dev/devops/other/ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° get запросов ΠΊ Gitea|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° get запросов ΠΊ Gitea]] + +РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: +- [[../../dev/devops/other/ВысокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Gitea|ВысокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Gitea]] \ No newline at end of file diff --git a/meta/zero/00 HighLoad.md b/meta/zero/00 HighLoad.md index 187bf8bc..1e3b459d 100644 --- a/meta/zero/00 HighLoad.md +++ b/meta/zero/00 HighLoad.md @@ -11,6 +11,7 @@ aliases: - высоконагруТСнных систСм - систСм с высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ - высокой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ + - высоконагруТСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ --- ## Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ HighLoad? НапримСр, ΠΎΠ΄ΠΈΠ½ запрос Π² сСкунду – это Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° явно Π½Π΅ highload, любой сСрвСр, Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹, справится. Но, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠΈ, Ρ‚ΠΎ Ρ‚ΡƒΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ highload. diff --git a/meta/zero/00 РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ….md b/meta/zero/00 РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ….md index 100d359b..97c08415 100644 --- a/meta/zero/00 РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ….md +++ b/meta/zero/00 РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ….md @@ -10,6 +10,7 @@ aliases: - РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… - Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… - Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… + - Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… linked: - "[[../../../../_inbox/00 In-memory Π‘ΡƒΠ‘Π”|00 In-memory Π‘ΡƒΠ‘Π”]]" ---