тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π’ΠΎΡ‚ ΡƒΠΆΠ΅ Π½Π° протяТСнии Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ Π’ΠΈΠΌΠΎΡ„Π΅ΠΉ, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ МЀВИ, Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ свои Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° своём Youtube ΠΊΠ°Π½Π°Π»Π΅ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ доступом.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° python

217 постов 7.5K подписчика

ΠŸΡ€Π°Π²ΠΈΠ»Π° сообщСства

ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ с Π»ΡŽΠ±Ρ‹ΠΌ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠΌ. Однако!

β€’ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊ читатСлям ΠΈ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ

β€’ простота ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ повСствования

β€’ Ρ‚Π΅Π³ python2 ΠΈΠ»ΠΈ python3, Ссли Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ

β€’ ΠΊΠΎΠ΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΡ‚Π°Ρ‚Ρ‹, Π»ΠΈΠ±ΠΎ ссылкой Π½Π° спСциализированный сайт

β€’ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ оскорблСния ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠΊΠ°Ρ†ΠΈΠΈ

β€’ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ врСдоносноС ПО

β€’ ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π·Π° вас

ΠšΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΠΎΡ€Π° ΠΎΡ‚Π΄ΠΎΡ…Π½ΡƒΡ‚ΡŒ

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Какой ΠΊΠ°Ρ€Π°Π½Ρ‚ΠΈΠ½, Π²Ρ‹ Ρ‡Π΅Π³ΠΎ?

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π’ 2020 наткнулся Π½Π° Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π»Π΅ΠΊΡ†ΠΈΡŽ.

Π“Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ ΠΈ интСрСсно ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚.

НС знаю, ΠŸΠΈΡ‚ΠΎΠ½ Π½Π΅ ΡƒΡ‡ΠΈΠ», Π½ΠΎ курсы посмотрСл с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π·Π°Ρ‡Π΅ΠΌ я это ΡΠΌΠΎΡ‚Ρ€ΡŽ я ΠΆΠ΅ Π΄Π°Π»Π΅ΠΊ ΠΎΡ‚ программирования.

Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ интСрСсно=)

Π° Π²Π·Π»Π°ΠΌΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Π½Ρ‚Π°Π³ΠΎΠ½ Π½Π°ΡƒΡ‡Π°Ρ‚?)))

МСня ΠΏΠΎΡ€Π°Π·ΠΈΠ»ΠΎ, ΠΊΠΎΠ³Π΄Π° я послС Π²ΠΈΠ΄Π΅ΠΎ ΠΏΡ€ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ спонсорства Π½Π° ΠΊΠ°Π½Π°Π»Π΅, Π½Π΅ нашСл ΠΊΠ½ΠΎΠΏΠΊΡƒ ΡΡ‚Π°Ρ‚ΡŒ спонсором))

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Английский с нуля. Π‘Π»ΡƒΡ‡Π°ΠΉΠ½ΠΎ благодаря. Π£Ρ€ΠΎΠΊ 53 ΠΈΠ· 60

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ by accident ΠΈ by chance, owing to ΠΈ due to.

Π’ΠΈΠ΄Π΅ΠΎ взяты ΠΈΠ· прилоТСния Английский с Анной (Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ слова, Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° устный ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄, ΠΏΠΈΡΡŒΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄).

Как ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠΌΠΎΠ³ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ

Как ΠΈ ΠΎΠ±Π΅Ρ‰Π°Π», ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ #comment_214455065 ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ клишС #comment_213570081

Когда я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ поступил Π² ΡƒΠ½ΠΈΠ²Π΅Ρ€, Ρƒ нас Π±Ρ‹Π» ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚, Π³Π΄Π΅ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π’ΠΎΡ‡Π½ΠΎΠ³ΠΎ названия Π½Π΅ помню.

На ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΈΠ· занятий ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π΄Π°Π» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ сайт.

Π›Π΅Ρ‚ с 14-15 я Π½Π°Ρ‡Π°Π» ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ Ρ‚ΠΎΠΌΡƒ стало, Ρ‡Ρ‚ΠΎ я устал ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сСрвСрС ΠΈΠ³Ρ€Ρ‹, Ρ‚.ΠΊ. ΠΊΠ°ΠΊ всСгда всё зависСло ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Ρ‚Ρ‹ Ρ‚ΡƒΠ΄Π° Π΄Π΅Π½Π΅Π³ влоТишь.

Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠ½Π΅ Π½Π°Π΄ΠΎΠ΅Π»ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ² Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ я стал ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ сами Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ. Π’ΡƒΡ‚-Ρ‚ΠΎ я ΠΈ Π½Π°Ρ‡Π°Π» ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π’ послСдствии, Π³ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· 2 я написал красивый сайт, с большим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ(Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ для мСня это Π±Ρ‹Π»ΠΎ прямо ВАУ).

Π­Ρ‚ΠΎΡ‚ сайт я ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŽ. Он Π½Π° мСня Ρ‚Π°ΠΊ искоса посмотрСл, Ρ‚ΠΈΠΏΠ° «ΠΠ³Π°, сам написал». И Π½Π°Ρ‡Π°Π» Ρ€Π°ΡΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚. Вопросов 5-6 Π±Ρ‹Π»ΠΎ, всё объяснил. Он посмотрСл Π½Π° мСня с ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ сказал: МоТСшь большС Π½Π° ΠΌΠΎΠΈ занятия Π½Π΅ Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Π’Ρ‹ Ρ‚ΡƒΡ‚ Π½ΠΈΡ‡Π΅ΠΌΡƒ Π½ΠΎΠ²ΠΎΠΌΡƒ Π½Π΅ Π½Π°ΡƒΡ‡ΠΈΡˆΡŒΡΡ. А Ссли Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΠΎΠ΄Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‚ΠΎ Ρƒ ΡƒΠ½ΠΈΠ²Π΅Ρ€Π° Π΅ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π΄Π°Π» ΠΌΠ½Π΅ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Π΄Π°Π» ΠΌΠ½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² сСбС ΠΈ своих умСниях.

Π’ ΠΈΡ‚ΠΎΠ³Π΅, Π·Π°Π΄Π°Ρ‡Ρƒ я Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ», ΠΎΠ½ Π΅Ρ‘ принял. ΠžΠΏΠ»Π°Ρ‚ΠΈΠ»ΠΈ ΠΌΠ½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этой Π·Π°Π΄Π°Ρ‡ΠΈ(14 Ρ‚.Ρ€., Ρ‡Ρ‚ΠΎ для студСнта ΠΎΠ³ΠΎ-Π³ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСньги). Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ я Π½Π°Ρ‡Π°Π» ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ программист ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽ Π½Π° своём Ρ…ΠΎΠ±Π±ΠΈ.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо, Π’Π°Π»Π΅Ρ€ΠΈΠΉ АлСксандрович ΠΈΠ· Π‘ΠŸΠ±Π“Π£Π’

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° систСмы Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ с нуля. Π§Π°ΡΡ‚ΡŒ 2: REST API для RESTful API Service + JWT + Swagger

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠ΅Ρ€ΠΈΡŽ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΏΡ€ΠΎ созданиС систСмы Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ. Π’ этой части ΠΌΡ‹ спроСктируСм ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ RESTful API Service Π½Π° Go cΠΎ Swagger ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π΅Ρ‰Ρ‘ большС Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΠΌΡ‹ спроСктировали систСму ΠΈ посмотрСли, ΠΊΠ°ΠΊΠΈΠ΅ сСрвисы Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для построСния микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π² Π²ΠΈΠ΄Π΅ΠΎ ΠΈ тСкстовой Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ΅ ΠΏΠΎΠ΄ Π½ΠΈΠΌ.

Начнём с ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ² интСрфСйса. Нам Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ€ΡƒΡ‡ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρƒ нашСго API ΠΈ ΠΊΠ°ΠΊΠΎΠΉ состав Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ. ΠœΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ сущности, поля ΠΈ эндпоинты Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для этого ΠΎΠ½Π»Π°ΠΉΠ½-сСрвис NinjaMock. Он ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Ссли ΠΌΠ°ΠΊΠ΅Ρ‚ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ быстро ΠΈ Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… дСйствий.

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρƒ рСгистрации сдСлаСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ, с Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ полями: Name, Email, Password ΠΈ Repeat Password. Π›Π΅ΠΉΠ±Π»Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, обойдСмся плСйсходСрами. ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ сдСлаСм ΠΏΠΎ ΡŽΠ·Π΅Ρ€Π½Π΅ΠΉΠΌΡƒ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŽ.

ПослС Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ список Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρƒ нашСго Π²Π΅Π±-прилоТСния:

— Π‘Π»Π΅Π²Π° β€” список ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ любой влоТСнности.

— Π‘ΠΏΡ€Π°Π²Π° β€” список Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСлится Π½Π° Π΄Π²Π° списка: ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ.

— КаТдая ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° состоит ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ урСзаСтся, Ссли ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ.

— Π‘ΠΏΡ€Π°Π²Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ, сколько сСкунд/ΠΌΠΈΠ½ΡƒΡ‚/часов/Π΄Π½Π΅ΠΉ Π½Π°Π·Π°Π΄ Π±Ρ‹Π»Π° создана Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°.

— Π’Π΅Π»ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° β€” ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ Markdown.

— ПанСль инструмСнтов. Π§Π΅Ρ€Π΅Π· Π½Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ.

Π’ΡƒΡ‚ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΌΡ‹ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρƒ API для списка Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ.

Полная ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ° открываСтся ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ Π½Π° Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ. Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. Высота Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ зависит ΠΎΡ‚ количСства тСкста. Для Ρ„Π°ΠΉΠ»ΠΎΠ² появляСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ сСкция. ΠœΡ‹ ΠΈΡ… Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ асинхронным запросом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ. Π€Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎ ссылкС, Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ².

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π’Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ открытая Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°

Π’ Ρ…ΠΎΠ΄Π΅ прототипирования стало понятно, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΠΌΡ‹ Π·Π°Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ микросСрвис β€” TagsService. Он Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π΅Π³Π°ΠΌΠΈ.

Для страниц Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ рСгистрации Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ эндпоинты Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ рСгистрации соотвСтствСнно. Π’ качСствС Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ сСссий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JWT. Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·Π΄Π½Π΅Π΅. Пока просто Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ эти 3 Π±ΡƒΠΊΠ²Ρ‹.

Для страницы списка Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ эндпоинты /api/categories для получСния Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ³ΠΎ списка ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΠΈ /api/notes?category_id=? для получСния списка Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡΡΡŒ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ катСгориям, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ, Π° Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅ сдСлаСм кэш Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅. Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ POST Π½Π° URL /api/categories. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Π΅Π³ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° POST Π½Π° URL /api/tags.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ PATCH Π½Π° URL /api/notes/:uuid с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ полями. Π”Π΅Π»Π°Π΅ΠΌ PATCH, Π° Π½Π΅ PUT, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ PUT Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ всСх ΠΏΠΎΠ»Π΅ΠΉ сущности ΠΏΠΎ спСцификации HTTP, Π° PATCH ΠΊΠ°ΠΊ Ρ€Π°Π· Π½ΡƒΠΆΠ΅Π½ для частичного обновлСния. Для отобраТСния Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π°ΠΌ Π΅Ρ‰Ρ‘ Π½ΡƒΠΆΠ΅Π½ эндпоинт /api/notes/:uuid/files с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ POST ΠΈ GET. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», поэтому сдСлаСм ΠΌΠ΅Ρ‚ΠΎΠ΄ GET Π½Π° URL /api/files/:uuid.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° рСпозитория систСмы

Π•Ρ‰Ρ‘ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° рСпозитория всСй систСмы Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ app Π±ΡƒΠ΄Π΅Ρ‚ исходный ΠΊΠΎΠ΄ сСрвиса (Ссли ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚). На ΡƒΡ€ΠΎΠ²Π½Π΅ с app Π±ΡƒΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ с этим сСрвисом, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MongoDB ΠΈΠ»ΠΈ ELK. ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ всСй систСмы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Consul, Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… дирСкториях Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ с сСрвисами.

ΠŸΠΈΡΠ°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ Π½Π° Go

— Π˜Π΄Ρ‘ΠΌ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт.

— ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ссылку Π΄ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π°, скачиваСм, провСряСм Ρ…Π΅Ρˆ-сумму.

— РаспаковываСм ΠΈ добавляСм Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΎΠ² Go

— ПишСм нСбольшой тСст ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности, собираСм Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ ΠΈ запускаСм.

Установка Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создаём ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° стандартная:

— cmd β€” Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅,

— internal β€” внутрСнняя бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° прилоТСния,

— pkg β€” для ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π― ΠΎΡ‡Π΅Π½ΡŒ люблю Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния, поэтому пСрСнСсу свою ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ Π»ΠΎΠ³Π΅Ρ€ΠΎΠΌ logrus ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Основная функция здСсь Init, которая создаСт Π»ΠΎΠ³Π΅Ρ€, ΠΏΠ°ΠΏΠΊΡƒ logs ΠΈ Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ» all.log со всСми Π»ΠΎΠ³Π°ΠΌΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ„Π°ΠΉΠ»Π° Π»ΠΎΠ³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² STDOUT. Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° логирования Π² Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ логирования, Π½ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ.

APIService Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° сокСтС. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ€ΠΎΡƒΡ‚Π΅Ρ€, Π·Π°Ρ‚Π΅ΠΌ Ρ„Π°ΠΉΠ» с сокСтом ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚ систСмы сигналы Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹. НапримСр, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡˆΠ»Ρ‘Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ сигнал SIGHUP, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ, Π·Π°ΠΊΡ€Ρ‹Π² всС Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ соСдинСния ΠΈ сСссии. Π₯ΠΎΡ‚Π΅Π» ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС сигналы, Π½ΠΎ Π»ΠΈΠ½Ρ‚Π΅Ρ€ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ os.Kill ΠΈ SIGSTOP ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ получится, поэтому ΠΈΡ… удаляСм ΠΈΠ· этого списка.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ сразу стандартный handler для ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. Π― Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ pkg, Π΄Π°Π»Π΅Π΅ добавляю Π² Ρ€ΠΎΡƒΡ‚Π΅Ρ€. ВсС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅.

Π”Π°Π»Π΅Π΅ создаём Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ cmd создаём Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ main, Π° Π² Π½Π΅ΠΉ β€” Ρ„Π°ΠΉΠ» app.go. Π’ Π½Ρ‘ΠΌ ΠΌΡ‹ создаём Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ создаём Π»ΠΎΠ³Π΅Ρ€. Π ΠΎΡƒΡ‚Π΅Ρ€ создаём Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово defer, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ Init Ρƒ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π° вызвался Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ функция main. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ очистку рСсурсов, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ контСкстов ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ запуск ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ЗапускаСм, провСряСм Π»ΠΎΠ³ΠΈ ΠΈ сокСт, всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Но для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ, Π° Π½Π΅ Π½Π° сокСтС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ запуск прилоТСния Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ Π² наш Ρ€ΠΎΡƒΡ‚Π΅Ρ€. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ для прилоТСния контСкст. Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ синглтоном ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° sync.Once. Пока Ρ‡Ρ‚ΠΎ Π² Π½Ρ‘ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Π² Π²ΠΈΠ΄Π΅ синглтона создаю ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… цСлях, впослСдствии ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΈΠ»Π΅Π½. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв синглтоны β€” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π·Π»ΠΎ, Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΎΠ½ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Π”Π°Π»Π΅Π΅ создаём ΠΊΠΎΠ½Ρ„ΠΈΠ³. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ YAML-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ Π² структуру.

Π’ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π΅ ΠΌΡ‹ вытаскиваСм ΠΈΠ· контСкста ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ Π½Π° основании listen.type Π»ΠΈΠ±ΠΎ создаСм сокСт, Π»ΠΈΠ±ΠΎ вСшаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ€Ρ‚. Код graceful shutdown выдСляСм Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π½Π° Π²Ρ…ΠΎΠ΄ список сигналов ΠΈ список интСрфСйсов io.Close, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ. ЗапускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ провСряСм наш эндпоинт heartbeat. Всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ сдСлаСм синглтоном Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ sync.Once, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создавался Π² ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… цСлях.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ API. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ эндпоинты, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² интСрфСйса. Π’ΡƒΡ‚ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ нас всС Π΄Π°Π½Π½Ρ‹Π΅ привязаны ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, всС Ρ€ΡƒΡ‡ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° /api/users/:uuid. Но Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ авторизация, ΠΈΠ½Π°Ρ‡Π΅ любой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Basic Auth, Digest Auth, JSON Web Token, сСссии ΠΈ OAuth2. Π£ всСх способов Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы. Для этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΡ‹ Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ JSON Web Token.

Π Π°Π±ΠΎΡ‚Π° с JSON Web Token

JSON Web Token (JWT) β€” это JSON-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ стандартС RFC 7519. Он считаСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· бСзопасных способов ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя участниками. Для Π΅Π³ΠΎ создания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (header) с ΠΎΠ±Ρ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ‚ΠΎΠΊΠ΅Π½Ρƒ, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (payload), Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ id ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π΅Π³ΠΎ Ρ€ΠΎΠ»ΡŒ ΠΈ Ρ‚.Π΄., Π° Ρ‚Π°ΠΊΠΆΠ΅ подписи (signature).

JWT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ прСимущСства ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи JWS (Signature) ΠΈ кодирования JWE (Encrypting). Подпись Π½Π΅ Π΄Π°Ρ‘Ρ‚ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ Π±Π΅Π· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сСкрСтном ΠΊΠ»ΡŽΡ‡Π΅, Π° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ прочтСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌΠΈ Π»ΠΈΡ†Π°ΠΌΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

АутСнтификация β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности. ΠœΡ‹ провСряСм, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ связкой Π»ΠΎΠ³ΠΈΠ½-ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² нашСй систСмС.

Авторизация β€” прСдоставлСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€Π°Π² Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… дСйствий, Π° Ρ‚Π°ΠΊΠΆΠ΅ процСсс ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ (подтвСрТдСния) Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π°Π² ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ выполнСния этих дСйствий.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, аутСнтификация провСряСт Π»Π΅Π³Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ становится Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, Ссли ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Π΅ дСйствия.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС JWT Π½Π΅ скрываСт ΠΈ Π½Π΅ маскируСт Π΄Π°Π½Π½Ρ‹Π΅ автоматичСски. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° использования JWT β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ источником. Π”Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ JWT Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈ подписаны, Π½ΠΎ Π½Π΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Ρ‹. ЦСль кодирования Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ структуры. ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ источника Π΄Π°Π½Π½Ρ‹Ρ….

РСализация JWT Π² нашСм APIService:

— Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ middleware ΠΈ jwt, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ» jwt.go.

— ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ кастомныС UserClaims ΠΈ сам middlware.

— ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Authorization, ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚ΠΎΠΊΠ΅Π½.

— Π‘Π΅Ρ€Ρ‘ΠΌ сСкрСт ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°.

— Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ HMAC.

— ΠŸΠ°Ρ€ΡΠΈΠΌ ΠΈ провСряСм Ρ‚ΠΎΠΊΠ΅Π½.

— ΠΠ½ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² модСль UserClaims.

— ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΊΠ΅Π½ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

ΠŸΡ€ΠΈ любой ошибкС ΠΎΡ‚Π΄Π°Ρ‘ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ с ΠΊΠΎΠ΄ΠΎΠΌ 401 Unauthorized. Если ошибок Π½Π΅ Π±Ρ‹Π»ΠΎ, Π² контСкст сохраняСм ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ user_id, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎ всСх Ρ…Π΅Π½Π΄Π»Π΅Ρ€Π°Ρ… Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ этот Ρ‚ΠΎΠΊΠ΅Π½ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ…Π΅Π½Π΄Π»Π΅Ρ€ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ POST ΠΈ эндпоинтом /api/auth. Он ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»Π΅ΠΉ username ΠΈ password, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ описываСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ структурой user. Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ взаимодСйствиС с UserService, Π½Π°ΠΌ Π½Π°Π΄ΠΎ Ρ‚Π°ΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. Если Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ создаём для Π½Π΅Π³ΠΎ UserClaims, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ для нас Π΄Π°Π½Π½Ρ‹Π΅. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ врСмя ΠΆΠΈΠ·Π½ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ExpiresAt β€” Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя ΠΈ добавляСм 15 сСкунд. Π‘ΠΈΠ»Π΄ΠΈΠΌ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ ΠΎΡ‚Π΄Π°Ρ‘ΠΌ Π² Π²ΠΈΠ΄Π΅ JSON Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ token. ΠšΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ UserService Ρƒ нас ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚, поэтому Π΄Π΅Π»Π°Π΅ΠΌ Π·Π°Π³Π»ΡƒΡˆΠΊΡƒ.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² Ρ…Π΅Π½Π΄Π»Π΅Ρ€ с heartbeat Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ тСстовый Ρ…Π΅Π½Π΄Π»Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ПишСм нСбольшой тСст. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ инструмСнт sketch, встроСнный Π² IDE. Π”Π΅Π»Π°Π΅ΠΌ POST-запрос Π½Π° /api/auth, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ подставляСм Π΅Π³ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ эндпоинта /api/heartbeat, ΠΏΠΎ истСчСнии 5 сСкунд ΠΌΡ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ с ΠΊΠΎΠ΄ΠΎΠΌ 401 Unauthorized.

Наш Ρ‚ΠΎΠΊΠ΅Π½ дСйствитСлСн ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ врСмя. БСйчас это 15 сСкунд, Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΡƒΡ‚ 30. Но этого всё Ρ€Π°Π²Π½ΠΎ ΠΌΠ°Π»ΠΎ. Когда Ρ‚ΠΎΠΊΠ΅Π½ ΠΏΡ€ΠΎΡ‚ΡƒΡ…Π½Π΅Ρ‚, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΎΠ²ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² систСмС. Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅. Если Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΡƒΠΊΡ€Π°Π΄Π΅Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большой ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ бСссрочно, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π°Π».

Π§Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΠΌ refresh-Ρ‚ΠΎΠΊΠ΅Π½. Он ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ основной Ρ‚ΠΎΠΊΠ΅Π½ доступа Π±Π΅Π· запроса Π΄Π°Π½Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’Π°ΠΊΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΆΠΈΠ²ΡƒΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ бСссрочно. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ старый JWT истСкаСт ΠΌΡ‹ большС Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ API. Π’ΠΎΠ³Π΄Π° отправляСм refresh-Ρ‚ΠΎΠΊΠ΅Π½. Нам ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ новая ΠΏΠ°Ρ€Π° Ρ‚ΠΎΠΊΠ΅Π½Π° доступа ΠΈ refresh-Ρ‚ΠΎΠΊΠ΅Π½Π°.

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ refresh-Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π½Π° сСрвСрС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π² кэшС. Π’ качСствС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ FreeCache. Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ свою ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ кэшСм ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, которая позволяСт Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ FreeCache Π½Π° Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π°Π΅Ρ‚ интСрфСйс Repository с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ связаны с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ.

Пока рассуТдал ΠΏΡ€ΠΎ кэш, Ρ€Π΅ΡˆΠΈΠ» Π·Π°Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅ΠΉ ΠΏΡ€ΠΎΠΊΠΈΠ΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Π΅Π· dependency injection ΠΈ синглтонов. ΠžΠ±Π΅Ρ€Π½ΡƒΠ» Ρ…Π΅Π½Π΄Π»Π΅Ρ€Ρ‹ ΠΈ Ρ€ΠΎΡƒΡ‚Π΅Ρ€ Π² структуры. Π’ Ρ…Π΅Π½Π΄Π»Π΅Ρ€Π°Ρ… сдСлал интСрфСйс с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Register, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π΅Π³ΠΎ Π² Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π΅. ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² main, вСсь Ρ€ΠΎΡƒΡ‚Π΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Π» Π² ΠΌΠ΅ΠΉΠ½. Π‘Ρ‚Π°Ρ€Ρ‚ прилоТСния Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ Π² main-Ρ„Π°ΠΉΠ»Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Ρ…Π΅Π½Π΄Π»Π΅Ρ€Ρƒ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, я Π΅Π³ΠΎ просто Π±ΡƒΠ΄Ρƒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² конструктор структуры Ρ…Π΅Π½Π΄Π»Π΅Ρ€Π°, Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² main. Плюс появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΊΠΈΠ΄Ρ‹Π²Π°Ρ‚ΡŒ всСм Ρ…Π΅Π½Π΄Π»Π΅Ρ€Π°ΠΌ свой Π»ΠΎΠ³Π΅Ρ€. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ trace_id ΠΎΡ‚ Zipkin Π² строчку Π»ΠΎΠ³Π°.

ВСрнСмся ΠΊ refresh_token. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ создании Ρ‚ΠΎΠΊΠ΅Π½Π° доступа создадим refresh_token ΠΈ ΠΎΡ‚Π΄Π°Π΄ΠΈΠΌ Π΅Π³ΠΎ вмСстС с основным. Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° PUT для эндпоинта /api/auth, Π° Π² Ρ‚Π΅Π»Π΅ запроса Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ refresh_token, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ Ρ‚ΠΎΠΊΠ΅Π½Π° доступа ΠΈ refresh-Ρ‚ΠΎΠΊΠ΅Π½Π°. Refresh-Ρ‚ΠΎΠΊΠ΅Π½ ΠΌΡ‹ ΠΊΠ»Π°Π΄Ρ‘ΠΌ Π² кэш Π² качСствС ΠΊΠ»ΡŽΡ‡Π°. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ user_id, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρƒ UserService ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ доступа. Refresh-Ρ‚ΠΎΠΊΠ΅Π½ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ, поэтому сразу послС получСния Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΈΠ· кэша удаляСм Π΅Π³ΠΎ.

Для описания нашСго API Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ OpenAPI 3.0 ΠΈ Swagger β€” YAML-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт всС схСмы Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ всС эндпоинты. По Π½Π΅ΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρƒ Π½Π΅Π³ΠΎ приятный интСрфСйс. Но ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ всё ΠΎΡ‡Π΅Π½ΡŒ ΠΌΡƒΡ‚ΠΎΡ€Π½ΠΎ, поэтому Π»ΡƒΡ‡ΡˆΠ΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ΄ΠΎΠΌ.

— Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ эндпоинты /api/auth с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ POST ΠΈ PUT для получСния Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΏΠΎ ΡŽΠ·Π΅Ρ€Π½Π΅ΠΉΠΌΡƒ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŽ ΠΈ ΠΏΠΎ Refresh-Ρ‚ΠΎΠΊΠ΅Π½Ρƒ соотвСтствСнно.

— ДобавляСм схСмы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Token ΠΈ User.

— Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ эндпоинты /api/users с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ POST для рСгистрации Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для Π½Π΅Π³ΠΎ создаём схСму CreateUser.

ПонимаСм, Ρ‡Ρ‚ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ…Π΅Π½Π΄Π»Π΅Ρ€ для рСгистрации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Signup Ρƒ Ρ…Π΅Π½Π»Π΅Ρ€Π° Auth ΠΈ структуру newUser со всСми полями для рСгистрации. Π“Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ JWT выдСляСм Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² Auth, Ρ‚Π°ΠΊ ΠΈ Π² Signup-Ρ…Π΅Π½Π΄Π»Π΅Ρ€Π°Ρ…. Π£ нас всё Π΅Ρ‰Π΅ Π½Π΅Ρ‚ UserService, поэтому проставляСм TODO. Нам Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π² UserService, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΡƒΠΆΠ΅ создал ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π½Π°ΠΌ ΠΎΠ± успСхС. Π”Π°Π»Π΅Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ создания ΠΏΠ°Ρ€Ρ‹ Ρ‚ΠΎΠΊΠ΅Π½Π° доступа ΠΈ refresh-Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΈ ΠΎΡ‚Π΄Π°Ρ‘ΠΌ с ΠΊΠΎΠ΄ΠΎΠΌ 201.

Π£ нас Π΅ΡΡ‚ΡŒ подсказка Π² Π²ΠΈΠ΄Π΅ Swagger-Ρ„Π°ΠΉΠ»Π°. На Π΅Π³ΠΎ основС создаём всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ…Π΅Π½Π΄Π»Π΅Ρ€Ρ‹. Π’Π°ΠΌ, Π³Π΄Π΅ Π²Ρ‹Π·ΠΎΠ² микросСрвисов, Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ с TODO.

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ…Π΅Π½Π΄Π»Π΅Ρ€ для ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ, опрСдСляСм URL Π² константах. Π”Π°Π»Π΅Π΅ создаём структуры. ΠžΠΏΠΈΡ€Π°Π΅ΠΌΡΡ Π½Π° Swagger-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создали Ρ€Π°Π½Π΅Π΅. Π”Π°Π»Π΅Π΅ создаём сам Ρ…Π΅Π½Π΄Π»Π΅Ρ€ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Register, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рСгистрируСт Π΅Π³ΠΎ Π² Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π΅. Π—Π°Ρ‚Π΅ΠΌ создаём ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ сразу пишСм тСст API Π½Π° этот ΠΌΠ΅Ρ‚ΠΎΠ΄. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ошибки Π² сваггСрС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ создаём всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с катСгориями: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ созданиС.

Π”Π°Π»Π΅Π΅ создаём Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ…Π΅Π½Π΄Π»Π΅Ρ€ для Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ. ПонимаСм, Ρ‡Ρ‚ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ частичного обновлСния ΠΈ удалСния ΠΊΠ°ΠΊ для Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ, Ρ‚Π°ΠΊ ΠΈ для ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ. ДописываСм ΠΈΡ… Π² Swagger ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² ΠΊΠΎΠ΄Π΅. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ тСстируСм Swagger Π² ΠΎΠ½Π»Π°ΠΉΠ½-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.

Π—Π΄Π΅ΡΡŒ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ создания сущности Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΊΠΎΠ΄ ΠΎΡ‚Π²Π΅Ρ‚Π° 201 ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Location, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится URL для получСния сущности. ΠžΡ‚Ρ‚ΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ созданной сущности.

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ части ΠΌΡ‹ познакомимся с Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Neo4j, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ микросСрвисами CategoryService ΠΈ APIService.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° Python 3, лСкция β„–4

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ панСль управлСния

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ β€’ 125

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Когда Basic Π½Π°Ρ‡Π°Π»ΠΈ Ρ€Π°ΡΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ слСзу Π½Π΅ ΠΏΡ€ΠΎΡ€ΠΎΠ½ΠΈΠ»

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Классно рассказал ΠΏΡ€ΠΎ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π’ΠΈΠΌΠΎΡ„Π΅ΠΉ Π€Ρ‘Π΄ΠΎΡ€ΠΎΠ²ΠΈΡ‡! Π Π°Π·Π³ΠΎΠ²ΠΎΡ€ Π½Π° ΠΎΡ‚Π²Π»Π΅Ρ‡Ρ‘Π½Π½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ называСтся Π½Π΅ «Ρ„Π»ΡƒΠ΄», Π° «Ρ„Π»Π΅ΠΉΠΌ»! Π€Π»ΡƒΠ΄ это бСссмыслСнноС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ! Бпасибо.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ спасибо Π·Π° ваш Ρ‚Ρ€ΡƒΠ΄)

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ?
paint_house(x=100, y=100, width=50, height=50)
Π’ΠΈΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ Π·Π° элСмСнты ΠΈ Π·Π° Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚.
Ну ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ docstring,

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

На ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ сравнСния с Ρ„Π°ΡˆΠΈΠ·ΠΌΠΎΠΌ, Π² этой ΡƒΠΆΠ΅ сам господь Π±ΠΎΠ³. Π’Π°ΠΊΠΈΠ΅ яркиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ πŸ˜€

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π»Π°Π±Ρ‹ Π² ссылкС ΠΏΠΎΠ΄ Π²ΠΈΠ΄Π΅ΠΎ)

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π­Ρ‚ΠΎΡ‚ волшСбник называСтся ΠΏΡ€ΠΎΡ€Π°Π±. А ΠΏΡ€ΠΎΡ€Π°Π±Ρ‹, ΠΊΠ°ΠΊ извСстно, Π΅Ρ‰Π΅ Ρ‚Π΅ волшСбники)

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

БлСск, спасибо Π’ΠΈΠΌΠΎΡ„Π΅ΠΉ Π€Ρ‘Π΄ΠΎΡ€ΠΎΠ²ΠΈΡ‡. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π”Π°ΠΉ Π’Π°ΠΌ Π‘ΠΎΠ³ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ. Настоящий ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ. Π£Π²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄ΠΎΡ…ΠΎΠ΄Ρ‡ΠΈΠ²ΠΎ. Π Π°Π΄ Π·Π° Π’Π°ΡˆΠΈΡ… ΡƒΡ‡Π΅Π½ΠΈΠΊΠΎΠ². НадСюсь, ΠΎΠ½ΠΈ цСнят.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

8:18 Π² Ρ‡ΠΏΡƒ станках ΠΌΠ°ΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ )))

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Классно Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π² нашСм Π²ΡƒΠ·Π΅ Π½Π° ΠΏΠ°Ρ€Ρ‹ Π½Π΅ приходят ΠΏΡ€Π΅ΠΏΠΎΠ΄Ρ‹ Π° Π½Π΅ студСнты

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠŸΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ функциям Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚ΡΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π° Ρ‡Π΅Ρ€Π΅Π· Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ?

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π­Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ. Π’ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ докумСнтация ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классу ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΈ эта докумСнтация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Бпасибо Π²Π°ΠΌ, прСкрасныС Π»Π΅ΠΊΡ†ΠΈΠΈ

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

GOTO Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Ρ‹ΠΆΠΎΠΊ ΠΊ Π½ΠΎΠΌΠ΅Ρ€Ρƒ строки, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Ρ‹ΠΆΠΎΠΊ ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠ΅.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Моим ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ (ΠΈ ΠΏΠΎΠΊΠ° СдинствСнным) языком программирования Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π» бСйсик. И Π²ΠΎΡ‚ Ρ€Π΅ΡˆΠΈΠ»Π° Python ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ. Как измСнился ΠΌΠΈΡ€!

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Если ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ понадобится Π΄ΠΎΠΌΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ успСли Π΄ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ, Ρ‚ΠΎ Π²ΠΎΡ‚ ΠΊΠΎΠ΄:
from graph import *

def main():
windowSize(500,600)
paint_house(100, 200, 300, 400)
x = 100
y = 200
width = 300
height = 400
run() # ЗапускаСт холст

def paint_walls(x, y, width, height):
brushColor(«green»)
rectangle(x, y, width, height)

def paint_roof(x, y, width, height):
brushColor(«gold»)
points = ((x, height), (width, height), (height, x), (x, height))
polygon(points)

def paint_window(x, y, width, height):
brushColor(«white»)
rectangle(x, y, width, height)

def paint_house (x, y, width, height):
paint_walls(x, y, width, height)
paint_roof(x, y, width, height//2)
w_height = height // 1.6
w_width = width // 2
paint_window(x + w_width, y//2 + w_height, w_width, w_height)

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠΠ΅Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ Ρ‡ΡƒΠ²Π°ΠΊ!)

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь Π’ΠΈΠΌΠΎΡ„Π΅ΠΉ! Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ спасибо Π·Π° Π’Π°Ρˆ Ρ‚Ρ€ΡƒΠ΄, ΠΎΡ‡Π΅Π½ΡŒ классныС Π»Π΅ΠΊΡ†ΠΈΠΈ! МоТно Вас ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ доступ ΠΊ Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΠΌ, с Ρ†Π΅Π»ΡŒΡŽ закрСплСния ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠ°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. ПослС ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π»Π΅ΠΊΡ†ΠΈΠΉ Π±Ρ‹Π»ΠΈ классныС Π·Π°Π΄Π°Ρ‡ΠΈ с Ρ‡Π΅Ρ€Π΅ΠΏΠ°ΡˆΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π». Π”Π°Π»ΡŒΡˆΠ΅ ΠΊ соТалСнию Ρ‚Π°ΠΊΠΈΡ… ΠΆΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ Π½Π΅ нашСл. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ссли Π²Ρ‹ сдСлаСтС Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Π½Π° ΠΏΠ»Π°Ρ‚Π½ΠΎΠΉ основС, это Π±ΡƒΠ΄Π΅Ρ‚ справСдливо ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΌΠ½ΠΎΠ³ΠΈΡ…. Π•Ρ‰Π΅ Ρ€Π°Π· спасибо Π·Π° Π’Π°Ρˆ Ρ‚Ρ€ΡƒΠ΄.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽ Π΄Π°Π½Π½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Ρƒ

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π’ΠΈΠΌΠΎΡ„Π΅ΠΉ Π€Π΅Π΄ΠΎΡ€ΠΎΠ²ΠΈΡ‡, здравствуйтС! Π‘ΠΌΠΎΡ‚Ρ€ΡŽ ваши Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΈ Ρ‚Π°ΠΌ Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ задания для Π½ΠΈΡ…?

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

@Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π˜ΠΎΠΊΠ°Ρ€ Π²Ρ€ΠΎΠ΄Π΅, это. Бпасибо

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π° это Π½Π΅ Ρ‚ΠΎ? cs.mipt.ru/python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠžΠΊΡƒΠ΄ΠΆΠ°Π²Π° ΠΏΠ΅Π» : «Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚ΡŒ. «, Π° Π²Ρ‹ ΠΏΡ€ΠΎΡ†ΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ сплина

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ это стихи ΠžΠΊΡƒΠ΄ΠΆΠ°Π²Ρ‹. Π‘ΠŸΠ›Π˜Π спСл

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

56:26 ΠŸΡ€Π΅ΠΌΡŒΠ΅Ρ€ министр ΠšΠ°Π½Π°Π΄Ρ‹.

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ поТалуйста, ΠΊΠ°ΠΊ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ вСсь ΠΊΠΎΡ€Π°Π±Π»ΡŒ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ, я Π΅Π³ΠΎ нарисавал Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
def lodka(x,y):
penColor(«brown»)
brushColor(«brown»)
rectangle(x, y, x+180, y+50)
polygon([(x+180,y),(x+250,y),(x+180,y+50)])
penColor(«black»)
brushColor(«white»)
circle(x+220,y+10,8)
penColor(«brown»)
brushColor(«brown»)
arc(x+50,y-50,x-40,y+50,start=180,end=270)
дальшС
x = 50
y = 240

obj = lodka(x,y)
onTimer(update, 50)
ΠΈ ΠΊΡƒΡ‡Π° ошибок, ΠΊΠ°ΠΊ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ?

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

спасибо, Π’ΠΈΠΌΠΎΡ„Π΅ΠΉ Π€Ρ‘Π΄ΠΎΡ€ΠΎΠ²ΠΈΡ‡, всё ясно ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

ΠŸΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠ»Π·. создали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main() ΠΈΠ· Π½Π΅Π΅ ΠΌΡ‹ запускаСм ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π½ΠΈΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ paint_house(. ), Π° ΠΈΠ· Π½Π΅Π΅ запускаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ paint_wall, paint_roof, paint_window, Π½ΠΎ эти ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Ρ‰Π΅ Π½Π΅ созданы? Или это сдСлано Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ дСлаСтся дСкомпозиция ΠΈ структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹?

тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python. Π€ΠΎΡ‚ΠΎ тимофСя Ρ…ΠΈΡ€ΡŒΡΠ½ΠΎΠ²Π° ΠΌΡ„Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° программирования Π½Π° python

Π”Π° Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Ρ‚Π°ΠΊΠΎΠ΅, всё врСмя Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Π»Π΅ΠΊΡ†ΠΈΡŽ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *