Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π·Π° Python-ΠΏΠ°ΠΊΠ΅ΡΠΈ PyPI (Python Package Index) ΠΎΠ±ΡΠ²ΠΈΡ Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΡΠΈΡΡΠΎΠ²Π° Π°ΡΠ΅ΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π·Π°ΠΌΠ΅Π½ΡΠΉΠΊΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Ρ PGP ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΏΡΠΈ Π°ΡΠ΅ΡΡΠ°ΡΠΈΡΡΠ° Π΅, ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ΅ Π·Π°Π²Π΅ΡΡΠ²Π° Π½Π΅ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, Π° ΠΎΡ ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π° (ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ) ΡΠ»Π΅Π΄ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡΠ° ΡΡΠ΅Π· Π²ΡΠ½ΡΠ΅Π½ Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊ OpenID Connect (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΠΎ Ρ Π½Π΅Π³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² GitHub ΠΈΠ»ΠΈ GitLab).
Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π°ΡΠ΅ΡΡΠ°ΡΠΈΡ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»ΡΠ²Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡΠ΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ PGP ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΎΠ±ΡΠ²Π΅Π½ Π·Π° ΠΎΡΡΠ°ΡΡΠ» Π² PyPI. Π’ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π΅ΡΠ΅ Π²Π·Π΅ΡΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΊΡΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΠ΅ PGP ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΡΡΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ β ΠΎΡ 1069 PGP ΠΊΠ»ΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ 2020 Π³ΠΎΠ΄ΠΈΠ½Π° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π² PyPI, 29% ΠΎΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π»ΠΈΠΏΡΠ²Π°Ρ Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΡΡΡΠ²ΡΡΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, Π° 35% ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ°Ρ Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ΄ΠΈΡ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈΡΠ΅ 36% PGP ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΎΠ±Ρ Π²Π°ΡΠ°Ρ Π° ΡΠ°ΠΌΠΎ 0.3% ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
Π Π½ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ Π·Π° Π·Π°Π²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΡΠ°ΡΠΊΠΎΡΡΠ°ΠΉΠ½ΠΈ Π΅ΡΠΈΠΌΠ΅ΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΡΠ»Π½ΠΎΠΌΠΎΡΠΈΡ, ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈ ΠΎΡ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈΡΠ΅ Π½Π° OpenID Connect. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΡΡΠ΅Π· Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊ Π½Π° OpenID, ΠΏΠΎΡΠ²ΡΡΠ΄Π²Π°Ρ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΌΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π·Π° ΡΠΈΡΡΠΎΠ²Π° Π°ΡΠ΅ΡΡΠ°ΡΠΈΡ Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Sigstore ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ in-toto Attestation Framework.
Π‘ΡΠ΅Π΄ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π½Π° Π°ΡΠ΅ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π΅ ΠΎΡΡΡΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° Π²ΡΡΠ·ΠΊΠ° Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ PGP-ΠΊΠ»ΡΡΠΎΠ²Π΅ β Π·Π°Π³ΡΠ±Π°ΡΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ ΡΠ°Π·ΡΡΡΠ°Π²Π° Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ΡΠΎ Π² ΠΏΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π½Π° Π½Π΅Π³ΠΎΠ²Π° ΠΎΡΠ½ΠΎΠ²Π°, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΡΠΈ Π°ΡΠ΅ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° Π²ΡΠ² Π²ΡΡΠ·ΠΊΠ° Ρ ΡΠΎΠΊΠ΅Π½, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π°Π²Π° ΠΏΡΠ°Π²ΠΎΠΌΠΎΡΠΈΡΡΠ° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΡΠ²ΡΡΠ·Π²Π° ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ ΡΡΠ΅Π· GitHub Action, Π°ΡΠ΅ΡΡΠ°ΡΠΈΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½Π° Π²ΡΡΠ·ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΡΠ°Π²ΡΠ½ΠΈΡ Π² PyPI ΡΠ°ΠΉΠ», Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ ΠΈ Ρ Π΅ΡΠ° Π½Π° ΠΊΠΎΠΌΠΈΡΠ°, Π½Π° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠΎΡΠΌΠΈΡΠ°Π½ ΠΏΠ°ΠΊΠ΅ΡΡΡ.

ΠΠ° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈ ΡΠ°Π·ΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ, Π·Π° ΡΠΎΡΠΌΠΈΡΠ°ΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ ΠΈ ΡΠ°ΠΌΠΈΡ PyPI ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΡΠ΅Π½ΡΡΠ°Π»Π΅Π½ Π»ΠΎΠ³, Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° ΠΈ Π·Π°ΡΠΈΡΠ° ΠΎΡ ΠΈΠ·ΠΊΡΠΈΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π°Π΄Π½ΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ, Π² ΠΊΠΎΠΉΡΠΎ Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Β«Π΄ΡΡΠ²ΠΎ Π½Π° ΠΠ΅ΡΠΊΡΠ»Β» (Merkle Tree, Π²ΡΡΠΊΠ° ΠΊΠ»ΠΎΠ½ΠΊΠ° Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠΈ ΠΊΠ»ΠΎΠ½ΠΊΠΈ ΠΈ Π²ΡΠ·Π»ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ²ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅).
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ ΠΎΡΠΊΡΠΈΡΠΈΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° PyPI Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Β«fabriceΒ», ΠΊΠΎΠΉΡΠΎ ΡΡΠ΅Π· ΡΠ°ΠΉΠΏΡΠΊΠ²ΠΎΡΠΈΠ½Π³ (ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°ΡΠΈ ΡΠ΅ Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, exampl Π²ΠΌΠ΅ΡΡΠΎ example, djangoo Π²ΠΌΠ΅ΡΡΠΎ django, pyhton Π²ΠΌΠ΅ΡΡΠΎ python ΠΈ Ρ.Π½.) ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π» ΠΊΠ°ΡΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Β«fabricΒ», ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ° 201 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ (7 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ Π·Π° ΠΌΠΈΠ½Π°Π»ΠΈΡ ΠΌΠ΅ΡΠ΅Ρ). ΠΠ»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡΡΠ°Π²Π° Π½Π΅Π·Π°Π±Π΅Π»ΡΠ·Π°Π½ ΠΎΡ 2021 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΎΡΡΠΎΠ³Π°Π²Π° Π΅ ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 37 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΏΡΡΠΈ.
ΠΠ°ΠΊΠ΅ΡΡΡ Β«fabriceΒ» ΠΏΠΎΠ²ΡΠΎΡΡΠ» ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Π» ΠΊΠΎΠ΄ Π·Π° ΡΠ°Π·ΠΊΡΠΈΠ²Π°Π½Π΅ ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Ρ
ΠΎΡΡΠΎΠ²Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ AWS (Amazon Web Services), ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π΅ΠΊΠ΄ΠΎΡ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅. ΠΠΊΡΠΈΠ²Π°ΡΠΈΡΡΠ° Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΡΠ°Π²Π°ΡΠ΅ Π½Π° Linux ΠΈ Windows. Π Linux, ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ ΡΡΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π°ΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ ΠΊΠ°ΡΠ²Π°Π»ΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ~/ .local/ bin/ vscode.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
