diff --git a/dev/java/Java Virtual Machine.md b/dev/java/Java Virtual Machine.md new file mode 100644 index 00000000..397fdd66 --- /dev/null +++ b/dev/java/Java Virtual Machine.md @@ -0,0 +1,28 @@ +--- +aliases: + - JVM +tags: + - maturity/🌱 +date: "[[2023-11-07]]" +--- +JVM (Java Virtual Machine) β€” это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, которая выполняСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° языкС Java, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Java, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Kotlin ΠΈ Scala. Π•Ρ‘ основная Π·Π°Π΄Π°Ρ‡Π° β€” Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ [[Java Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄|Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°]], ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ прСдставлСния ΠΌΠ΅ΠΆΠ΄Ρƒ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ устройства. JVM Ρ‚Π°ΠΊΠΆΠ΅ управляСт ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, сборкой мусора, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, создавая Π½Π°Π΄Ρ‘ΠΆΠ½ΡƒΡŽ срСду для выполнСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. + +**ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JVM** +- **ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ**. Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° любой систСмС с установлСнной JVM, Ρ‡Ρ‚ΠΎ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. +- **Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ**. JVM управляСт ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠΊΡƒΡ‡Ρƒ (heap), автоматичСски выдСляя ΠΈ освобоТдая ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ устраняСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния ΠΈ сниТаСт риск ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ. +- [[gc/Garbage Collector|Π‘Π±ΠΎΡ€ΠΊΠ° мусора]] (Garbage Collection). JVM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сборщик мусора для автоматичСского освобоТдСния памяти, занятой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния. +- **Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ**. JVM обСспСчиваСт бСзопасноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмы управлСния доступом, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰Π΅ΠΉ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для выполнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ доступ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ врСдоносного ΠΊΠΎΠ΄Π°. +- **ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ**. JVM ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ [[../fundamental/Multithreading|ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ]], позволяя Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Π΅ прилоТСния Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ языка. Она управляСт созданиСм, синхронизациСй ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². +- **Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ**. JVM прСдоставляСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Java Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки Π²ΠΎ врСмя выполнСния, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. + +**Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ JVM** +1. **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ исходного ΠΊΠΎΠ΄Π° Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄** + Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (.java Ρ„Π°ΠΉΠ»Ρ‹) компилируСтся компилятором Java (javac) Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (.class Ρ„Π°ΠΉΠ»Ρ‹), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся платформонСзависимым ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ прСдставлСниСм. +2. **Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°** + Класс-Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ JVM (Class Loaders) Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Bootstrap Class Loader, Extension Class Loader ΠΈ Application Class Loader. +3. **ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°** + JVM провСряСт Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для обСспСчСния Π΅Π³ΠΎ коррСктности ΠΈ бСзопасности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ врСдоносного ΠΊΠΎΠ΄Π°. +4. **Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΈΠ»ΠΈ компиляция JIT** + JVM ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Just-In-Time (JIT) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, которая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²ΠΎ врСмя выполнСния, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. +5. **Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°** + ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° JVM выполняСт Π΅Π³ΠΎ, управляя ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ, обСспСчивая Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. diff --git a/dev/java/ДинамичСскоС связываниС Π² Java.md b/dev/java/ДинамичСскоС связываниС Π² Java.md index 90ff1dc2..4c83d435 100644 --- a/dev/java/ДинамичСскоС связываниС Π² Java.md +++ b/dev/java/ДинамичСскоС связываниС Π² Java.md @@ -9,7 +9,7 @@ linked: --- Π’Π°ΠΆΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ [[../../../../garden/ru/dev/other/ДинамичСскоС связываниС|динамичСского связывания]] Π² Java являСтся использованиС **Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²** β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² наслСдуСмых классах, ΠΈ Π²Ρ‹Π±ΠΎΡ€ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° происходит Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π½Π΅ ссылки Π½Π° Π½Π΅Π³ΠΎ. -ДинамичСскоС связываниС Π² Java обСспСчиваСтся [[../../../../knowledge/dev/java/JVM|JVM]] Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (vtable). Когда создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, JVM строит Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π² подклассС, JVM замСняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚ΠΎ позволяСт JVM Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎ врСмя выполнСния, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° фактичСском Ρ‚ΠΈΠΏΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. +ДинамичСскоС связываниС Π² Java обСспСчиваСтся [[Java Virtual Machine|Java Virtual Machine]] Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (vtable). Когда создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, JVM строит Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π² подклассС, JVM замСняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚ΠΎ позволяСт JVM Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎ врСмя выполнСния, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° фактичСском Ρ‚ΠΈΠΏΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выполняСт JVM: 1. Когда вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· ссылку, JVM провСряСт vtable для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. diff --git a/dev/java/ΠšΡƒΡ‡Π°.md b/dev/java/ΠšΡƒΡ‡Π°.md index 53e519bf..1355d084 100644 --- a/dev/java/ΠšΡƒΡ‡Π°.md +++ b/dev/java/ΠšΡƒΡ‡Π°.md @@ -2,12 +2,10 @@ aliases: - ΠΊΡƒΡ‡Π΅ - ΠΊΡƒΡ‡Π΅ΠΉ + - heap tags: - maturity/🌱 date: 2024-10-19 -zero-link: -parents: -linked: --- ΠšΡƒΡ‡Π° β€” это ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для динамичСского распрСдСлСния Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стСка,Β ==Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΡƒΡ‡Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ дольшС, Ρ‡Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° ΠΎΠ±ΡŠΡ‘ΠΌΡ‹ памяти, выдСляСмой Π² ΠΊΡƒΡ‡Π΅, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ Π² стСкС.== diff --git a/dev/java/НативныС сборки Π² Java.md b/dev/java/НативныС сборки Π² Java.md index 81c21cfb..d639c455 100644 --- a/dev/java/НативныС сборки Π² Java.md +++ b/dev/java/НативныС сборки Π² Java.md @@ -9,7 +9,7 @@ zero-link: parents: linked: --- -НативныС сборки Π² контСкстС Java относятся ΠΊ процСссу компиляции Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, спСцифичный для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссора. Π­Ρ‚ΠΎ отличаСтся ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Java, Π³Π΄Π΅ прилоТСния ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° Java Virtual Machine ([JVM](JVM.md)). ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ инструмСнтом для создания Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… сборок Π² Java являСтся GraalVM Native Image. +НативныС сборки Π² контСкстС Java относятся ΠΊ процСссу компиляции Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, спСцифичный для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссора. Π­Ρ‚ΠΎ отличаСтся ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Java, Π³Π΄Π΅ прилоТСния ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° Java Virtual Machine ([Java Virtual Machine](Java%20Virtual%20Machine.md)). ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ инструмСнтом для создания Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… сборок Π² Java являСтся GraalVM Native Image. **ΠŸΠ»ΡŽΡΡ‹:** 1. **Быстрый Π‘Ρ‚Π°Ρ€Ρ‚ ΠΈ НизкоС РасходованиС РСсурсов**: НативныС сборки ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ врСмя запуска прилоТСния ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, памяти), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ запуска JVM ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов ([Class Loader Subsystem](Class%20Loader%20Subsystem.md)) Π²ΠΎ врСмя выполнСния. diff --git a/dev/linux/iptables.md b/dev/linux/iptables.md new file mode 100644 index 00000000..af843c3e --- /dev/null +++ b/dev/linux/iptables.md @@ -0,0 +1,64 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2024-11-03 +--- + +**ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»** +- `iptables -L` β€” ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ΠΏΡ€Π°Π²ΠΈΠ»Π°. +- `iptables -L -v -n` β€” ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ числовыми адрСсами. +- `iptables -S` β€” ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всС ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. + +**ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»** +- `iptables -F` β€” ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ всС ΠΏΡ€Π°Π²ΠΈΠ»Π° Π²ΠΎ всСх Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°Ρ…. +- `iptables -X` β€” Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ. +- `iptables -Z` β€” ΠžΠ±Π½ΡƒΠ»ΠΈΡ‚ΡŒ счСтчики ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ². + +**Установка ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ** +- `iptables -P INPUT ACCEPT` β€” Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ INPUT. +- `iptables -P FORWARD ACCEPT` β€” Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ FORWARD. +- `iptables -P OUTPUT ACCEPT` β€” Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ OUTPUT. + +**Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°** +- `iptables -A INPUT -p tcp --dport <ΠΏΠΎΡ€Ρ‚> -j ACCEPT` β€” Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚. +- `iptables -A INPUT -s -j ACCEPT` β€” Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ IP-адрСса +- `iptables -A INPUT -p tcp --dport <ΠΏΠΎΡ€Ρ‚> -j DROP` β€” Π—Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚. +- `iptables -A INPUT -s -j DROP` β€” Π—Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ IP-адрСса. + +**УсловныС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‚Ρ‹ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°** +- `iptables -A INPUT -p tcp -s --dport <ΠΏΠΎΡ€Ρ‚> -j ACCEPT` β€” Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ с IP Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚. +- `iptables -A INPUT -p tcp -s --dport <ΠΏΠΎΡ€Ρ‚> -j DROP` β€” Π—Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ с IP Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚. + +**Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»** +- `iptables -D INPUT <Π½ΠΎΠΌΠ΅Ρ€-ΠΏΡ€Π°Π²ΠΈΠ»Π°>` β€” Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΠΎ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ. +- `iptables -D INPUT -p tcp --dport <ΠΏΠΎΡ€Ρ‚> -j ACCEPT` β€” Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. + +**Π Π°Π±ΠΎΡ‚Π° с Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°ΠΌΠΈ** +- `iptables -N <имя-Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ>` β€” Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. +- `iptables -X <имя-Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ>` β€” Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. +- `iptables -A INPUT -j <имя-Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ>` β€” ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅. + +**NAT ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚ΠΎΠ²** +- `iptables -t nat -A POSTROUTING -o <интСрфСйс> -j MASQUERADE` β€” Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ NAT Π½Π° интСрфСйсС. +- `iptables -t nat -A PREROUTING -p tcp --dport <ΠΏΠΎΡ€Ρ‚> -j DNAT --to-destination :<ΠΏΠΎΡ€Ρ‚>` β€” ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. + +**Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ восстановлСниС ΠΏΡ€Π°Π²ΠΈΠ»** +- `iptables-save > /etc/iptables/rules.v4` β€” Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° IPv4 Π² Ρ„Π°ΠΉΠ». +- `iptables-restore < /etc/iptables/rules.v4` β€” Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° IPv4 ΠΈΠ· Ρ„Π°ΠΉΠ»Π°. + +**Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅** +- `iptables -A INPUT -p tcp --dport <ΠΏΠΎΡ€Ρ‚> -j LOG --log-prefix "IPTables-Dropped: " --log-level 4` β€” Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../../meta/zero/00 Linux|00 Linux]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2024-11-03]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + + diff --git a/dev/Π§ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.md b/dev/Π§ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.md index f851a846..ed583e3c 100644 --- a/dev/Π§ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.md +++ b/dev/Π§ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.md @@ -6,17 +6,14 @@ tags: - maturity/🌱 - content/opinion date: 2024-10-20 -zero-link: -parents: -linked: --- -Код β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±ΠΎΡ€ инструкций для ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½ΠΎ ΠΈ срСдство общСния ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ. Π‘ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ программисты проводят, читая Ρ‡ΡƒΠΆΠΎΠΉ ΠΊΠΎΠ΄, поэтому ==ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ понятСн Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π²Ρ‚ΠΎΡ€Ρƒ, Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹==. Удобство чтСния ΠΈ понимания ΠΊΠΎΠ΄Π° ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ [[../productivity/ЭффСктивная ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ|ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹]]. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ написанию ΠΊΠΎΠ΄Π°: Π²Π°ΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сСбя, Π½ΠΎ ΠΈ для своих ΠΊΠΎΠ»Π»Π΅Π³. +Код β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±ΠΎΡ€ инструкций для ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½ΠΎ ΠΈ ==срСдство общСния ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.== Π‘ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ программисты проводят, читая Ρ‡ΡƒΠΆΠΎΠΉ ΠΊΠΎΠ΄, поэтому ==ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ понятСн Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π²Ρ‚ΠΎΡ€Ρƒ, Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹==. Удобство чтСния ΠΈ понимания ΠΊΠΎΠ΄Π° ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ [[../productivity/ЭффСктивная ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ|ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹]]. -Если ваш ΠΊΠΎΠ΄ понятСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΌ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, это сигнал Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ нСдостаточно эффСктивный Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. +==Π›ΡŽΠ±ΠΎΠΉ Π΄ΡƒΡ€Π°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, понятный ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ. Π₯ΠΎΡ€ΠΎΡˆΠΈΠ΅ программисты ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄, понятный людям==. Если ваш ΠΊΠΎΠ΄ понятСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΌ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ, это сигнал Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ посрСдствСнный Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. **Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ**: - **ΠŸΠΈΡˆΠΈΡ‚Π΅ просто ΠΈ ясно**. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ понятныС ΠΈ распространённыС конструкции языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ. -- **НС услоТняйтС**. НС ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТныС ΠΈΠ»ΠΈ малоизвСстныС возмоТности языка, Ссли ΠΎΠ½ΠΈ Π½Π΅ приносят ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·Ρ‹. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅. +- **НС услоТняйтС**. НС ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТныС ΠΈΠ»ΠΈ малоизвСстныС возмоТности языка, Ссли ΠΎΠ½ΠΈ Π½Π΅ приносят ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·Ρ‹. ==ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.== - **ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹**. Π’Π°ΠΌ, Π³Π΄Π΅ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ Ρ†Π΅Π»ΡŒ ΠΈΠ»ΠΈ обоснованиС Π²Π°ΡˆΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. - **Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ соглашСниям ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ**. Π‘ΠΎΠ±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ Π΅Π΄ΠΈΠ½Ρ‹Π΅ стандарты кодирования, принятыС Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ соглашСния ΠΎ стилС, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. - **Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ осмыслСнныС ΠΈΠΌΠ΅Π½Π°**. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ названия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ сокращСний, Ссли ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСпонятны Π΄Ρ€ΡƒΠ³ΠΈΠΌ. diff --git a/productivity/Story Points.md b/productivity/Story Points.md new file mode 100644 index 00000000..ba3405a8 --- /dev/null +++ b/productivity/Story Points.md @@ -0,0 +1,49 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2024-11-03 +--- +## ВСзисы +- Π‘Ρ‚ΠΎΡ€ΠΈ ΠΏΠΎΠΈΠ½Ρ‚Ρ‹ (Story Points) β€” Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ слоТности для ΠΎΡ†Π΅Π½ΠΊΠΈ трудоёмкости Π·Π°Π΄Π°Ρ‡. +- ΠžΡ†Π΅Π½ΠΊΠ° Π·Π°Π΄Π°Ρ‡ Π² чСловСкочасах Π½Π΅ всСгда Ρ‚ΠΎΡ‡Π½Π° ΠΈΠ·-Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ людСй, ΠΈΡ… ΠΎΠΏΡ‹Ρ‚Π° ΠΈ состояния. +- Π‘Ρ‚ΠΎΡ€ΠΈ ΠΏΠΎΠΈΠ½Ρ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ. +- Команда Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ эталонныС Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ присваиваСт значСния ΠΏΠΎ шкалС Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ (1, 2, 3, 5, 8, 13). +- Π—Π°Π΄Π°Ρ‡ΠΈ, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ 13 стори ΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ², слСдуСт Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅. +*** +ΠžΡ†Π΅Π½ΠΊΠ° Π² чСловСкочасах ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ сотрудник Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ быстрСС Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π°Π΄Π°Ρ‡ Π² чСловСкочасах ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Ρ‹. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ стори ΠΏΠΎΠΈΠ½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ. + +Π‘Ρ‚ΠΎΡ€ΠΈ ΠΏΠΎΠΈΠ½Ρ‚Ρ‹ β€” это Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ слоТности для ΠΎΡ†Π΅Π½ΠΊΠΈ трудоёмкости Π·Π°Π΄Π°Ρ‡, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ различия Π² скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ условиях выполнСния. + +ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ: ΠΎΠΏΡ‹Ρ‚, состояниС Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ, Π»ΠΈΡ‡Π½Ρ‹Π΅ особСнности ΠΈ внСшниС Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹. +## Как ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π² стори ΠΏΠΎΠΈΠ½Ρ‚Π°Ρ…? + +Для ΠΎΡ†Π΅Π½ΠΊΠΈ Π·Π°Π΄Π°Ρ‡ Π² стори ΠΏΠΎΠΈΠ½Ρ‚Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ эталонныС Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСния 1, 2, 3, 5, 8 ΠΈ 13 ΠΏΠΎ шкалС Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Π­Ρ‚ΠΈ эталонныС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. + +> [!NOTE] Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ +> Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ (1, 2, 3, 5, 8, 13) ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ слоТности ΠΈ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π½Π΅Π΄ΠΎΠΎΡ†Π΅Π½ΠΊΠΈ слоТных Π·Π°Π΄Π°Ρ‡. + +ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ эталонных Π·Π°Π΄Π°Ρ‡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: +- **1 БП** β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ настройку Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. +- **5 БП** β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ простой CRUD. +- **13 БП** β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ бизнСс-сцСнария. + +Если Π·Π°Π΄Π°Ρ‡Π° оцСниваСтся Π²Ρ‹ΡˆΠ΅ 13 стори ΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ², Π΅Ρ‘ слСдуСт Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ части, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС усилий ΠΈ нСсёт высокий риск. +## Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ +- **ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ эталонных Π·Π°Π΄Π°Ρ‡**: Команда Π΄ΠΎΠ»ΠΆΠ½Π° совмСстно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ эталонныС Π·Π°Π΄Π°Ρ‡ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ слоТности ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ языкС ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅. +- **ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹**: НСобходимо провСсти ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ использованию стори ΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ процСсс ΠΎΡ†Π΅Π½ΠΊΠΈ. +- **ИспользованиС рСтроспСктив**: ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ спринта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, насколько Ρ‚ΠΎΡ‡Π½ΠΎ Π±Ρ‹Π»ΠΈ ΠΎΡ†Π΅Π½Π΅Π½Ρ‹ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² процСсс ΠΎΡ†Π΅Π½ΠΊΠΈ. +- **ИспользованиС историчСских Π΄Π°Π½Π½Ρ‹Ρ…**: ИспользованиС Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… спринтах ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΡ‚ΠΎΡ‡Π½ΡΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΈΡ… Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ. +*** +## ΠœΠ΅Ρ‚Π° информация +**ΠžΠ±Π»Π°ΡΡ‚ΡŒ**:: [[../meta/zero/00 Командная ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ|00 Командная ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ]] +**Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ**:: +**Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ**:: +**Π‘ΠΎΠ·Π΄Π°Π½Π°**:: [[2024-11-03]] +**Автор**:: +### Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ +- + +### Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ + +