en
Feedback
Developer's Sandbox

Developer's Sandbox

Open in Telegram

ΠžΠΏΡ‹Ρ‚ ΠΈ самообучСниС ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Бвязь с Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ: @alpa1479

Show more
1 059
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
#sandbox_java #lambda_expressions ВсСгда Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ рСфСрСнс ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈ лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅? Π’ случаС Ссли ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ рСфСрСнс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΏΡ€ΠΈ этом ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅. Но Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹: - Если ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вычислСния, Π° послС этого Π±Ρ€Π°Ρ‚ΡŒ Ρƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ рСфСрСнс, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ вычислСния Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌΠΈ - ΠœΠ΅Ρ‚ΠΎΠ΄ рСфСрСнс ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΡΠ·Π°Ρ‚ΡŒΡΡ Π½Π° ссылку, которая Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° - НСявно ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ capturing лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, вмСсто non-capturing Π­Ρ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ доступны ΠΏΠΎ ссылкС: https://github.com/alpa1479/sandbox-java/tree/main/examples/lambda-expressions/src/main/java/edu/sandbox/lambdaexpressions/methodreferences

#sandbox_java #lambda_expressions Как Capturing лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ влияСт Π½Π° GC? Π’ΠΎ врСмя выполнСния прилоТСния, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ‚ΠΎΠΊ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится capturing лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса, сгСнСрированного LambdaMetafactory, для выполнСния Π»ΠΎΠ³ΠΈΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ лямбда выраТСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΌΡ‹ часто выполняСм ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится capturing лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π±ΡƒΠ΄ΡƒΡ‚ часто ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ повлияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ GC. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ благодаря оптимизациям JVM Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ escape analysis ΠΈ method inlining. Однако Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ всСгда. НапримСр Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ достаточно большой, с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ JVM ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π·Π°ΠΈΠ½Π»Π°ΠΉΠ½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄. Как ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Ρ‹Π²ΠΎΠ΄Π° пустой строки Π½Π° консоль ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° GC Π² нСсколько Ρ€Π°Π·? ΠžΡ‚Π²Π΅Ρ‚ ΠΈ тСория Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅: https://github.com/alpa1479/sandbox-java/tree/main/examples/lambda-expressions/src/main/java/edu/sandbox/lambdaexpressions/gcimpact

#sandbox_java #lambda_expressions КакиС Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹ лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π² Ρ‡Π΅ΠΌ ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅? Non-Capturing: - ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ внСшниС статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π΅ зависит ΠΎΡ‚ нСстатичСского контСкста - НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ внСшниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ объявлСна ΠΈΠ»ΠΈ нСстатичСскиС поля класса ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ - Благодаря ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ JVM ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ лямбда выраТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создан 1 Ρ€Π°Π· ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ Capturing: - Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ внСшниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ нСстатичСскиС поля класса ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ - ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ оптимизация JVM, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±ΡƒΠ΄Π΅Ρ‚ создан Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сгСнСрированного класса, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π’Π΅ΠΎΡ€ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…: https://github.com/alpa1479/sandbox-java/tree/main/examples/lambda-expressions/src/main/java/edu/sandbox/lambdaexpressions/types

#sandbox_java #anonymous_classes_vs_lambda_expressions Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌ классом ΠΈ лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ особСнности? Анонимный класс: - ГСнСрируСтся компилятором - ΠœΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ с мноТСством ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² - ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ состояниС ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² - НС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ конструктор ΠΈΠ»ΠΈ Π±Ρ‹Ρ‚ΡŒ абстрактным ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ нСсколько интСрфСйсов - Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с внСшними Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ effectively final - Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ scope, Ссли ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΈ внСшняя, Ρ‚ΠΎ ΠΎΠ½Π° скроСт внСшнюю ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ - β€˜this’ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса Лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: - БоздаСтся Π² runtime Ρ‡Π΅Ρ€Π΅Π· LambdaMetafactory - ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ интСрфСйсами - НС ΠΈΠΌΠ΅Π΅Ρ‚ состояния, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ явно ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ Π·Π°Π²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π° состояниС внСшнСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· ссылку - ЯвляСтся Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, соотвСтствСнно Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π΅ΠΉ, конструкторов ΠΈ Ρ‚.Π΄. - Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с внСшними Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ effectively final - НС создаСт Π½ΠΎΠ²Ρ‹ΠΉ scope, Ссли ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΈ внСшняя, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ошибка компиляции - β€˜this’ Π²Π½ΡƒΡ‚Ρ€ΠΈ лямбда выраТСния обращаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ внСшнСго класса, Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ объявлСно Π² статичСском контСкстС Π’Π΅ΠΎΡ€ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…: https://github.com/alpa1479/sandbox-java/tree/main/examples/anonymous-classes-vs-lambda-expressions/src/main/java/edu/sandbox/anonymousclassesvslambdaexpressions

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΊΠ°Π½Π°Π»Π°: Π—Π΄Π΅ΡΡŒ я Π±ΡƒΠ΄Ρƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΎΡ€ΠΈΡŽ с Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° github ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ тСхнологиям ΠΈ вопросам с собСсСдований, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ fork ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· pull request. Π­Ρ‚ΠΎ пространство для ΠΎΠ±ΠΌΠ΅Π½Π° знаниями, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ, ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄Ρ‹. Π•ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ: - ΠŸΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Mock-ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ - Π”Π΅Π»Π°Ρ‚ΡŒ совмСстноС code review - Π£ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ сорСвнования с вознаграТдСниями Π½Π° самый Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос с собСсСдования, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° самоС Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ алгоритмичСской Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ±ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° систСмный Π΄ΠΈΠ·Π°ΠΉΠ½ По вопросам ΠΈ прСдлоТСниям ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ½Π΅ - @alpa1479 Π»ΠΈΠ±ΠΎ просто ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· постов