Code Mining
Kanalga Telegramβda oβtish
ML4Code Π²ΠΎ Π²ΡΠ΅ΠΉ ΠΊΡΠ°ΡΠ΅, Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ²: Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ, ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΎΡΠ΅ΡΡΡ. ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π½ΠΎΠ²ΠΎΡΡΡΠΌ, Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°, ΡΠΏΠΈΠ·ΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π²ΡΠΎΡΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΠΌΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ. ΠΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅: ods.ai, @codescoring ΠΠΎ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ β @alsmirn
Ko'proq ko'rsatish838
Obunachilar
Ma'lumot yo'q24 soatlar
+17 kunlar
+230 kunlar
Postlar arxiv
838
Code2Code @AI Journey Contest 2021
Π ΡΠ°ΠΌΠΊΠ°Ρ
AIJ Ρ 7 ΠΏΠΎ 31 ΠΎΠΊΡΡΠ±ΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ Fusion Brain Challenge.
Π£ΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠ΅ΡΠΈΡΡ 4 Π·Π°Π΄Π°ΡΠΈ Π² Π±ΠΎΡΡΠ±Π΅ Π·Π° ΠΏΡΠΈΠ·ΠΎΠ²ΡΠ΅ Π² β½6.5 ΠΌΠ»Π½ (ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ - Π΄ΠΎ β½3 ΠΌΠ»Π½).
Π§Π΅ΠΌ ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π½Π°ΠΌ? Π ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΡΠΎΠΈΡ Code2code Translation, Π³Π΄Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΏΠΎΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Java<->Python.
Π£ΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π΄Π°ΡΠ°ΡΠ΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ 6ΠΊ ΡΠ΅ΡΠ΅Π½Π½ΡΡ
Π·Π°Π΄Π°Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΠ·ΡΠΊΠΎΠ², Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΎΡ 1 Π΄ΠΎ 5 Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
, Π³Π΄Π΅ Π±ΡΠ°ΡΡ ΠΈ ΡΡΠΎ ΠΊΡΡΠΈΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅Π»Π»Π΅Π½Π΄ΠΆΠ°.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π° Π½Π° Github. ΠΠΈΡΠ΅Π½Π·ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΡ Π½Π΅ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π° π±, Π½ΠΎ ΠΏΠΎ ΡΠ°ΡΡΠΈ C2C ΡΠΎΡΡΡ ΠΏΠΎΠ΄ Apache 2.0 & MIT.
ΠΠ° Π½Π°Π²ΠΎΠ΄ΠΊΡ Π½Π° ΡΠΎΡΠ΅Π²Ρ ΡΠΏΠ°ΡΠΈΠ±ΠΎ: @lovedeathtransformers.
838
Semgrep. ΠΠ΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ
, Π΄Π»Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ
CI/CD-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³Π»ΡΠ½ΡΡΡΡΡ Semgrep.
Π£Π΄ΠΎΠ±Π½ΠΎΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ», Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ, Ρ
ΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ (ΡΠ΅ΠΏΠ°, LGPL-2.1).
ΠΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ», Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ-ΠΏΠΎΡΡΠΈΡΡΡΡ ΠΈ ΠΏΠΎΠ³ΠΎΠ½ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅. ΠΠ½ΡΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠΉ, xss, xxe, ΠΏΠ»ΠΎΡ
ΠΎΠ³ΠΎ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ. ΠΏ. ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ OWASP-ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠΈ 20 ΡΠ·ΡΠΊΠΎΠ².
Π₯ΠΎΡΠΎΡΠΈΡ
Π³ΡΠ΅ΠΏΠΎΠ² ΠΌΠ°Π»ΠΎ Π½Π΅ Π±ΡΠ²Π°Π΅Ρ.
838
ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΠΏΠΎΡΡΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
ΠΠΈΠ΄Π΅ΠΎ:
https://www.youtube.com/watch?v=BiLew55dxho
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΡΡΠ°Π΄ΠΈΡΠΈΡ #Π²ΠΈΠ΄ΠΎΡΠ½Π°Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅, Π² ΡΡΠΎΡ ΡΠ°Π· ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± Π°Π½Π°Π»ΠΈΠ·Π΅ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ
ΠΊΠΎΠ΄-Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² Π² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ Π°Π½Π°Π»ΠΈΠ·Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (SDLC, Software Development Lifecycle).
ΠΠΎΠΊΠ»Π°Π΄ΡΠΈΠΊ ΠΠ°Π΄ΠΈΠΌ ΠΠ°ΡΠΊΠΎΠ²ΡΠ΅Π², ΠΎΡΠ΅Π½Ρ ΡΠ°ΠΊ Π½Π΅ΠΊΠΈΡΠ»ΠΎ ΠΏΡΠΈΡΠ°ΡΡΠ½ΡΠΉ ΠΊ ΡΠ΅Π»ΠΎΠΉ Π³ΡΡΠ΄ΠΊΠ΅ ΠΊΡΡΡΠ΅ΠΉΡΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΡΡΠ΅Π½Π½ΡΡ
Π² open source ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ source{d} ΠΈ Athenian. ΠΡΠΎ Π½ΠΈΡ
ΠΌΡ Π΅ΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ.
Π’Π΅Π·ΠΈΡΡ ΠΎΡ Π°Π²ΡΠΎΡΠ°:
Π― ΡΠ°Π±ΠΎΡΠ°Ρ Π² ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΠΎΠΌ ΡΡΠ°ΡΡΠ°ΠΏΠ΅ Athenian Π² ΠΊΠ°ΡΠ΅ΡΡΠ΅ Head of Analytics ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π±ΡΠΊΠ΅Π½Π΄Π° SaaS ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΡ ΠΏΡΠΎΠ΄Π°Π΅ΠΌ Π·Π°ΡΡΠ±Π΅ΠΆΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ, Π΄Π΅ΠΏΠ»ΠΎΠ΅Π², ΠΈ JIRA. ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² blameless ΠΈ non-personal, ΠΈΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π΄Π΅Π»Π°Π΅ΠΌ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΡΡΠΎΠ±Ρ Π»ΠΈΠ΄Ρ-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π΅ ΡΡΠ°Π»ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΏΠΈΠΏΠΈΡΡΠΊΠΈ ΡΡΠ΄ΠΎΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ΄Π½Π° ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠΈΡΠ΅ΠΊ Athenian - ΠΌΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ GitHub ΠΈ JIRA ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π²ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π½Π° Π»Π΅ΡΡ. ΠΡΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΈ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΡ Π΄ΠΎΠΏΡΡΡΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ»ΠΈ ΠΈ Π΄ΠΎΠ±ΠΈΠ»ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΈ ΡΠ΅Π³ΠΎ Π½Π°ΠΌ ΡΡΠΎ ΡΡΠΎΠΈΠ»ΠΎ Π² $$$.ΠΠ°ΠΉΠΊΠΈ, ΡΠ΅ΠΏΠΎΡΡΡ, Π²ΡΠ΅ Π΄Π΅Π»Π° π.
838
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Software Bill of Materials (SBOM)
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΡΠ±ΡΠΈΠΊΡ #ΡΠ»ΠΎΠ²Π°ΡΡΠΊΠΎΠ΄ΠΌΠ°ΠΉΠ½Π΅ΡΠ°.
ΠΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΆΠΈΠ²ΡΠΌ Π² ΡΠ²ΠΎΡΠΌ ΠΏΡΠ·ΡΡΠ΅, Π½ΠΎ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π»Π΅ΠΏΠ°Ρ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° SBOM Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π³ΠΎΠ΄ ΡΡΠ°Π»Π° Π²ΡΠΏΠ»ΡΠ²Π°ΡΡ Π² ΡΠ°Π·Ρ ΡΠ°ΡΠ΅, ΡΠ΅ΠΌ ΡΠ°Π½ΡΡΠ΅. ΠΠ°ΠΆΠ΅ ΠΠ°ΠΉΠ΄Π΅Π½ ΠΏΡΠΎ Π½Π΅Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ IT ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ Π³ΠΎΡΠΎΡΠ³Π°Π½ΠΎΠ² Π‘Π¨Π Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠΎΡ ΡΠ°ΠΌΡΠΉ SBOM, ΡΡΠΎ ΡΠΆΠ΅ Π½Π΅ ΡΡΡΠΊΠΈ.
Software Bill of Materials β ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
open source ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ
ΡΡ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ SBOM ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠΈ, Π²Π΅ΡΡΠΈΠΈ ΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΅ΡΡ ΠΈ ΡΠΈΠΏ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΒ» ΠΈΠ»ΠΈ Β«Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Β»).
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ SBOM ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠΌ, ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ, Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ ΠΈ ΠΊΡΡΡ Π΄ΡΡΠ³ΠΈΡ
ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
.
Π‘ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ SBOM Π² ΡΠ΅ΠΎΡΠΈΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π·Π° ΠΏΠΎΠ»Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Ρ ΡΡΡΡΠΎΠΌ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΡΡ
ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ ΡΠ»Π΅Π΄ΠΈΡ, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎΠ± ΠΈΡ
ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅, ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π°Ρ
ΠΈ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ. ΠΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ ΠΈ ΠΈΡ
ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ. Π ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΈΡ
ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΎΠΌ ΠΆΠ΅ GitHub ΠΈΠ»ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ
ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°Ρ
.
Π‘Π°ΠΌΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΡΠΎΡΠΌΠ°ΡΡ SBOM ΡΡΠΎ:
- CycloneDX https://cyclonedx.org/
- SPDX https://spdx.dev/
- SWID https://csrc.nist.gov/projects/Software-Identification-SWID
- ΡΠ°Π±Π»ΠΈΡΠΊΠ° Π² Excel π€
ΠΠ½ΠΎΠ³Π΄Π° SBOM ΠΏΠΈΡΡΡ BOM, BoM, SBoM, ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΡΠ³ΠΎΡΠ°ΡΡ. ΠΠΎΠΎΠ±ΡΠ΅ BOM ΠΏΡΠΈΡΡΠ» ΠΈΠ· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π°, Π³Π΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠΏΠΈΡΡ Π²ΡΠ΅Ρ
Π΄Π΅ΡΠ°Π»Π΅ΠΉ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΡΡΠΎΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡ.
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ SBOM ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ:
1. ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ ΠΈ lock-ΡΠ°ΠΉΠ»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ
ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ²
2. Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅
ΠΡΠΎ ΡΠΎ, ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ SBOM ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ SBOM ΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΈΡΠ°ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ National Telecommunications and Information Administration:
https://www.ntia.gov/SBOM
838
ODS Licensing Course - ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Π½Π° 21 ΠΎΠΊΡΡΠ±ΡΡ!
ΠΠΎ ΡΠ»Π΅Π΄Π°ΠΌ Moscow Python Conf ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ-ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΡΡΠΈΡΡΠΎΠ². Π‘ΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ Π²ΡΡ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ°ΡΠΊΡΡΡΠΎ Π² ΠΊΡΡΡΠ΅, Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ, Π±Π΅ΡΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΡ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΡΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Open Source, ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
, Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π΄Ρ ΠΈΡ
ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² Π½Π°Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ ΠΊΡΡΡ π.
Π ΠΏΠΎΠΊΠ°, ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° Π½ΠΎΠ²ΠΎΡΡΡΠΌΠΈ, ΠΌΡ ΠΈΡ
ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ.
838
Hacktoberfest 2021
Π ΠΏΡΡΠ½ΠΈΡΡ, 1 ΠΎΠΊΡΡΠ±ΡΡ, ΡΡΠ°ΡΡΠΎΠ²Π°Π» ΡΠΆΠ΅ Π²ΠΎΡΡΠΌΠΎΠΉ Hacktoberfest. ΠΡΠΎ Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π»ΠΈΡΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠΊΡΡΠ±ΡΡ, ΠΏΡΠΈΠ·Π²Π°Π½ΠΎ ΠΏΡΠΈΠ²Π»Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠΎΡΠΎΠ² Π² open source ΠΏΡΠΎΠ΅ΠΊΡΡ.
ΠΠ° 4 Π²Π°Π»ΠΈΠ΄Π½ΡΡ
ΠΏΡΠΈΠ½ΡΡΡΡ
ΠΏΡΠ»Π» ΡΠ΅ΠΊΠ²Π΅ΡΡΠ° Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΡΡΠ±ΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΡ ΡΠ°Π·Π΄Π°Π΄ΡΡ 50 000 ΡΡΡΠ±ΠΎΠ»ΠΎΠΊ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π½Π° Π²ΡΠ±ΠΎΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ° ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ°Π΄ΠΈΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ.
Π ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΈ ΡΡΠ°ΡΡΠ²ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ
ΠΎΡΡΡΡΡΡ Π½Π° GitHub ΠΈΠ»ΠΈ GitLab ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠΏΠΈΠΊ βhacktoberfestβ. Π‘ΠΎ ΡΠΏΠ°ΠΌΠΎΠΌ ΠΈ ΠΌΡΡΠΎΡΠ½ΡΠΌΠΈ ΠΏΡΠ»Π» ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°ΠΌΠΈ Π±ΡΠ΄ΡΡ Π±ΠΎΡΠΎΡΡΡΡ, ΠΆΡΠ»ΠΈΠΊΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ°ΡΡ.
ΠΡΡ Π΄Π²ΠΈΠΆΡΡ
Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ DigitalOcean ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΡΡΡΡΠΌΠΈ ΡΠ΅Π±ΡΡΠ°ΠΌΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄ΠΎΠ½Π°ΡΠΎΠΌ ΡΠ΅ΡΠ΅Π· GitHub Sponsors.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°: https://hacktoberfest.digitalocean.com/
838
Text2Bash
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΡΡΠ°Π΄ΠΈΡΠΈΡ #Π²ΠΈΠ΄ΠΎΡΠ½Π°Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π³ΠΎ Π² ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ ΡΡΠ΅ΠΊΠ° CodeMining, ΠΏΡΠΎ Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° bash ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅. Π Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΠ»Π΅Π± ΠΠΎΡΠ³Π°ΡΠ΅Π² ΠΈΠ· JetBrains Π΄Π΅Π»ΠΈΡΡΡ ΡΠΎΠΊΡΠΎΠ²Π΅Π½Π½ΡΠΌ ΠΎΠΏΡΡΠΎΠΌ ΠΈ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π½Π° ΡΡΠΎ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠΎΠ±ΠΎΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ;).
Π’Π΅Π·ΠΈΡΡ:
Π ΡΠ°ΠΌΠΊΠ°Ρ
ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ NeurIPS 2020 ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠ»ΠΎ ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ bash ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅. Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎΠ± ΠΎΠΏΡΡΠ΅ ΡΡΠ°ΡΡΠΈΡ Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΡΠΎΠΌ ΡΠΎΡΠ΅Π²Π½ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΌΠ΅ΡΡΠΈΠΊΠ°Ρ
ΠΈ ΡΠΏΠΎΡΠΎΠ±Π°Ρ
ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ°ΡΡΠ΅ΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ Π΄Π°ΠΌ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠΊΠ°Π·Π°Π²ΡΠΈΡ
Π»ΡΡΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠΈΠ΄Π΅ΠΎ:
https://www.youtube.com/watch?v=NPfYDDbprtw
ΠΠ°ΠΉΠΊΠΈ, ΡΠ΅ΠΏΠΎΡΡΡ, Π²ΡΠ΅ Π΄Π΅Π»Π°.
838
Π ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, Π½Π°Ρ ΡΡΠ°Π»ΠΎ ΠΎΠ²Π΅Ρ 100 ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Π΅ΡΠ°Π»ΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ Π½Π°Ρ ΡΡΡΠ½ΡΠΉ ΠΊΠ°Π½Π°Π»ΡΡΠΈΠΊ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ Π²ΡΡ-ΡΠ°Π²Π½ΠΎ ΡΡΠΎΠΈΡ ;).
838
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΡΠΎ
TL;DR: ΠΡΠ΅ΠΌ ΡΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠΌΡΡΠ»ΠΈΠ»ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ Moscow Python Conf++ ΠΈ Ρ
ΠΎΡΠ΅ΡΡΡ Π²ΡΡΠ°Π·ΠΈΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΡ Π΅Π³ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌ ΠΈ Π²Π΄ΠΎΡ
Π½ΠΎΠ²ΠΈΡΠ΅Π»ΡΠΌ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Moscow Python.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΠΠ°Π»Π΅ ΠΠΎΠΌΠ±ΡΠΎΠ²ΡΠΊΠΎΠΌΡ ΠΈ ΠΠΎΠ»Π΅ ΠΠ°ΡΠΊΠΎΠ²Ρ Π·Π° ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅! ΠΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ Π΄ΡΡΠ΅Π²Π½Π°Ρ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅Π±ΡΡ, Π° Ρ Π½ΠΈΠΌΠΈ ΠΈΠ΄Π΅ΠΉ ΠΈ ΠΏΠ»Π°Π½ΠΎΠ² Π½Π° Π±ΡΠ΄ΡΡΠΈΠ΅ Π΄Π²ΠΈΠΆΡΡ
ΠΈ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΠΠ΅ΡΠ΅ ΠΡΠΌΠ°ΠΊΠΎΠ²Ρ ΠΈ ΠΠ°ΡΠ°ΡΠ΅ Π₯Π°ΠΏΠ°Π΅Π²ΠΎΠΉ, ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ ΠΏΠΎ ods.ai Π·Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΊΡΡΠ³Π»ΡΠΉ ΡΡΠΎΠ», Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Data Science/Python ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ².
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΠΠΈΡ
Π°ΠΈΠ»Ρ ΠΠΎΡΠ½Π΅Π΅Π²Ρ, ΠΠΈΡ
Π°ΠΈΠ»Ρ ΠΠΎΠ»ΡΡΠΎΠ²Ρ ΠΈ Π‘Π΅ΡΠ³Π΅Ρ ΠΡΡΠΊΠΈΠ½Ρ Π·Π° ΡΠ΅Π²ΡΡ ΠΊΠΎΠ΄Π° ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ. ΠΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΆΠΈΠ²ΠΎ ΠΈ Ρ
ΠΎΡΠΎΡΠΎ. ΠΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ΄ΠΎΠ³Π½Π°Π»Π° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΡΠ΅Π±ΡΡΠ° ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΏΠ΅ΡΡΠΊΠΈΠΉ ΡΠ°Π·Π±ΠΎΡ. Π ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°Π· ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π°Π³Π»ΡΠ΄Π½Π°Ρ ΠΏΠΎΠ»ΡΠ·Π° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ΠΎΠ².
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π°ΡΡΠ΅ΠΏΠ°ΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΄Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π·Π° ΡΠ΅Π½Π½Π΅ΠΉΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΡΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ open source, ΡΡΠΎ Π·Π°ΡΡΠ°Π²ΠΈΠ»ΠΎ Π½Π°Ρ Π² Π½ΠΎΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΈ Π½Π°ΠΉΡΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΡΠ΅ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ requests ;).
Π£ΡΠ°!
838
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠΈΡΠΎΠ½-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ Π²ΡΠΎΡΠ½ΠΈΠΊ (28 ΡΠ΅Π½ΡΡΠ±ΡΡ Π² 11:25), @alsmirn Π²ΡΡΡΡΠΏΠΈΡ Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΌ Moscow Python Conf++ ΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅Ρ ΠΏΡΠΎ ΡΠ°Π±ΠΆ.
Π’ΠΈΠ·Π΅Ρ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ³Π»ΡΠ΄Π΅ΡΡ Π² Π·Π°ΠΏΠΈΡΡΡ
Moscow Python Podcast, Π³Π΄Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»Π°ΡΡΡ Π² ΡΡΡΠ½ΠΎΠΉ Π°ΡΠΌΠΎΡΡΠ΅ΡΠ΅ ΠΊΡΡ
Π½ΠΈ ΠΡΠΈΠ³ΠΎΡΠΈΡ ΠΠ΅ΡΡΠΎΠ²Π° ;).
Π’Π΅Π·ΠΈΡΡ.
- Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠ±ΡΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Open Source-Π»ΠΈΡΠ΅Π½Π·ΠΈΠΉ Π² PyPI: ΠΎΠ±ΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ, Π½ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ ΠΈ Π²ΠΎΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ ΡΡΠ΅Π½Π΄Ρ Π²ΡΠ±ΠΎΡΠ° Π½ΠΎΠ²ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ»ΡΡΠ°ΠΈ Π΅Ρ ΡΠΌΠ΅Π½Ρ.
- ΠΡΠ²Π΅ΡΠΈΠΌ Π½Π° ΡΠ°ΡΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² ΡΠ°Π·Π½ΡΡ
ΠΎΠ±Π»Π°ΡΡΡΡ
ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ: ΠΎΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΡΡΠΈΠ»ΠΈΡ Π² ΠΎΠ±Π»Π°ΡΡΡΡ
ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ (ML) ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° (NLP).
- C ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ CodeScoring ΠΈΠ·ΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠΏΡΠΈΠ·Ρ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΠΌΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ Π·Π°Π΄Π°ΡΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ
Π°Π»Π°ΡΠ½ΠΎ. Π Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΏΠΎΠΉΠΌΠ΅ΠΌ, ΠΊΠ°ΠΊ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ CI/CD Π² ΡΠ°ΡΡΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠΎΡΡ.
ΠΠ«: Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ.
838
Criticality Score
ΠΠ΄Π½Π° ΠΈΠ· ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ β ΡΡΠ°Π³Π΅Π΄ΠΈΡ ΠΎΠ±ΡΠΈΡ
ΡΠ΅ΡΡΡΡΠΎΠ² (tragedy of the commons). ΠΠΎΠ»ΡΠ·ΡΡΡΡΡ OSS ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Π²ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ·ΠΊΠ°Ρ Π³ΡΡΠΏΠΏΠ° Π»ΡΠ΄Π΅ΠΉ, ΡΠ΅ΠΉ ΡΠ΅ΡΡΡΡ ΡΠΈΡΠΊΡΠ΅Ρ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌ ΠΊΠΎΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅.
Π ΡΡΠ°ΡΡΡΡ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΡΠ°ΡΡΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠΈΡΡ. Π ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
Ρ
ΠΎΠ΄ΠΎΠ² Π² ΡΡΡ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΄Π΅Π»Π°Π» Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρ ΠΡΠ³Π», Π²ΡΠΏΡΡΡΠΈΠ² ΠΏΡΠΎΠ΅ΠΊΡ Criticality Score β Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠ΅Π½ΠΊΠΈ open source ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΈΡ
ΠΊΡΠΈΡΠΈΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π²ΡΠ΅ΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ³ΠΈΠΊΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΉΡΠΈΠ½Π³ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ²ΠΈΡΡ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΌ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΏΠΎΠ½ΡΠΎΡΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠΎΡΠΎΠ².
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» Π½Π΅Π±Π΅Π·ΡΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π ΠΎΠ± ΠΠ°ΠΉΠΊ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ°ΠΊΠΈΡ
ΡΡΡΠΊ ΠΊΠ°ΠΊ UTF-8, Unix ΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Go, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Google.
ΠΠ° Π²Ρ
ΠΎΠ΄ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°Π½ΠΆΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎ Π½Π°Π±ΠΎΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΠ΅Ρ Π²ΡΡ, ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡ Π² ΡΠΎΡΠΌΡΠ»Ρ (ΠΈ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π²Π·Π²Π΅ΡΠ΅Π½Π½Π°Ρ ΡΡΠΌΠΌΠ°) ΠΈ Π²ΡΠ΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ 0 (Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ) Π΄ΠΎ 1 (ΡΠ°ΠΌΡΠΉ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ). Π‘ΡΠ΅Π΄ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΠΎΡΠ΅Π½ΠΊΠ΅:
- Π΄Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ
- ΡΠΈΡΠ»ΠΎ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠΎΡΠΎΠ² ΠΈ ΡΠ°Π·Π½ΡΡ
ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ
- ΡΠ°ΡΡΠΎΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΈ ΡΠ΅Π»ΠΈΠ·ΠΎΠ²
- ΡΠΈΡΠ»ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠΊΡΠΈΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡ github ΠΈ Π²ΡΠ΄Π°ΡΡ ΡΠΎΠΏΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ·ΡΠΊΡ ΠΈ ΠΎΠ±ΡΠΈΠΉ.
Π’Π°ΠΊ ΠΏΠ΅ΡΠ²ΡΡ Π΄Π΅ΡΡΡΠΊΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΊΠ°ΠΊ Node.js, Kubernetes (K8s) ΠΈ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Rust, Π° Π·Π°ΠΌΡΠΊΠ°Π΅Ρ Π΅Ρ Git, ΠΎΠ±ΠΎΠ³Π½Π°Π² Linux Π½Π° 10 ΠΏΠΎΠ·ΠΈΡΠΈΠΉ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π° python: https://github.com/ossf/criticality_score
Π‘ΡΠ°ΡΡΡ Π ΠΎΠ±Π° ΠΠ°ΠΉΠΊΠ° ΠΏΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ: https://github.com/ossf/criticality_score/blob/main/Quantifying_criticality_algorithm.pdf
Π‘ΠΏΠΈΡΠΊΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΡΠ·ΡΠΊΠ°ΠΌ: https://commondatastorage.googleapis.com/ossf-criticality-score/index.html
838
ΠΠΎΡΠΎΡΠΊΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠΏΠΈΡΠ°ΠΉΡΡ Π² Π»ΠΈΡΠ΅Π½Π·ΠΈΡΡ
;).
ClickHouse ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π±Π°Π·Π°, Π½ΠΎ ΠΈ Inc.
Upd: ΠΠ°, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π°Π²ΡΠΎΡΠ° ΠΊΠΎΠΌΠΌΠΈΡΠ°, Π’ΠΈΠ³ΡΠ°Π½ Π₯ΡΠ΄Π°Π²Π΅ΡΠ΄ΡΠ½, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ ΠΈ ΡΠ»Π΅Π½ ΡΠΎΠ²Π΅ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΎΠ² Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Β«Π―Π½Π΄Π΅ΠΊΡΒ». Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°. ΠΠΈΠ»Π΅Π½ΡΠΊΠΎ.
838
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Software Composition Analysis (SCA)
ΠΡ ΡΠΆΠ΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Π² ΡΡΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅ ΠΏΡΠΎ open source, Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ ΠΈ ΡΠ°Π·Π½ΠΎΠ΅ Π²ΠΎΠΊΡΡΠ³ Π½ΠΈΡ
. Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ
ΠΎΡΠΈΠΌ Π΄Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΌΠΊΠΎΠ΅ ΠΈ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎ Π²ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ β SCA, ΠΎΠ½ ΠΆΠ΅ Software Composition Analysis, ΠΎΠ½ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ/ΠΊΠΎΠ΄Π°/ΡΠΎΡΡΠ°/ΠΠ.
SCA β ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ, Π³Π΄Π΅:
1. Π½Π° Π²Ρ
ΠΎΠ΄ ΠΏΠΎΠ΄Π°ΡΡΡΡ ΠΊΠΎΠ΄ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ (ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, Docker-ΠΎΠ±ΡΠ°Π·, Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊ ΠΈ Ρ.ΠΏ.);
2. ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΊΠ°Π½ΠΈΡΡΠ΅ΡΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
open source ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠΈΡΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠΎΠ² (ΡΠΈΠΏΠ° package.json, poetry.lock, Dockerfile ΠΈ Ρ.ΠΏ.) ΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΌΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Ρ ΠΏΡΠΈΠΌΠ΅ΡΡΡ Π²ΡΡΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ ΡΠΈΠΏΠ° Π½Π΅ΡΡΡΠΊΠΈΡ
Ρ
ΡΡΠ΅ΠΉ;
3. ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΡΡΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ ΠΈ ΠΈΡ
ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Π·Π°ΡΠ²Π»Π΅Π½Π½ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ;
4. ΠΈ Π²ΠΈΡΠ΅Π½ΠΊΠΎΠΉ Π½Π° ΡΠΎΡΡΠ΅ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΡΡΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈΡΡΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈ ΠΏΠΎΠ»ΡΠΎΡΠΊΡΡΡΡΠΌ Π±Π°Π·Π°ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, National Vulnerability Database, Github Advisory ΠΈ Π΄ΡΡΠ³ΠΈΠΌ).
ΠΠ° Π²ΠΈΠ΄ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ ΠΏΠΎ ΡΠ°ΠΊΡΡ Π²Π½ΡΡΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΈ Π½ΡΠ°Π½ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π³Π° ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π΅ΡΡ ΠΎΠ΄Π½Π° Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° β SBoM, Software Bill of Materials, ΠΏΡΠΎ Π΅Π³ΠΎ ΡΡΡΡ, ΡΠΎΡΠΌΠ°ΡΡ ΠΈ ΠΏΡΠΈ ΡΡΠΌ ΡΡΡ Π½Π΅Π΄Π°Π²Π½ΠΈΠΉ ΠΏΡΠΈΠΊΠ°Π· ΠΠ°ΠΉΠ΄Π΅Π½Π° ΠΎ ΠΊΠΈΠ±Π΅ΡΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠΈΡΠΊ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΠΎ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅ (ΡΡΡΠΏΡΠΈΠ·-ΡΡΡΠΏΡΠΈΠ·) ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°.
SCA Π½Π΅ ΡΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΡΠ΅Π΄ΠΈ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊΠ°ΠΊ SAST (ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°) ΠΈΠ»ΠΈ DAST (Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°), Π½ΠΎ Π½Π°Π±ΠΈΡΠ°Π΅Ρ ΠΎΡΠΊΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΠΎΠΉ open source Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅.
Π₯ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ SCA-like ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², IDE, ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΠ΄ΠΎΠ±Π½Ρ, ΡΠΎΡΠ½Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. But we're getting there.
ΠΡ ΠΈ Π΅ΡΠ»ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΠΎΠΆΠ³Π»ΠΎ Π²Π°ΡΠ΅ Π»ΡΠ±ΠΎΠΏΡΡΡΡΠ²ΠΎ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΎΠ±Π·ΠΎΡΠ½ΡΠΉ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΏΡΠΎ ΡΠ²ΠΎΠ»ΡΡΠΈΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ² SCA Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π³ΠΎ Data Fest Online v2: https://www.youtube.com/watch?v=9fydREfnKb4. ΠΡΠ°ΡΠΎΡΠ½ΡΠ΅ ΡΠ»Π°ΠΉΠ΄Ρ ΠΈ Π²ΠΈΡΡΡΠ°Ρ Π³ΠΎΠ»ΠΎΠ²Π° Π½Π° Π±Π΅Π»ΠΎΠΌ ΡΠΎΠ½Π΅ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅.
#Π²ΠΈΠ΄ΠΎΡΠ½Π°Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ #ΡΠ»ΠΎΠ²Π°ΡΡΠΊΠΎΠ΄ΠΌΠ°ΠΉΠ½Π΅ΡΠ°
838
Moscow Python Conf++ 2021 ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ· ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ
ΠΡΠ΅ΡΠ° ΡΠ°ΡΡΠΊΠ°Π·Π°Π»ΠΈ Π²Π°ΠΌ ΠΏΡΠΎ ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΠΎΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² Π½Π°ΡΠ΅ΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Ρ Moscow Python Conf++ 2021 ΠΏΠΎ ΡΠ΅Π²ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠ΅Ρ
ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΡΡ ΡΠ°ΠΌΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π°Π²ΡΠΎΡΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠΎ ΠΈΡΠΎΠ³Π°ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ΅Π΄Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈ ΡΠΎΠΏ-5 ΡΠ°ΠΌΡΡ
Β«ΡΠ»ΠΎΠΆΠ½ΡΡ
Β» ΡΠ°ΠΉΠ»ΠΎΠ².
Π Π΅Π²ΡΡ ΠΊΠΎΠ΄Π° ΡΠ΅ΠΊΠΎΡΠ΄ΡΠΌΠ΅Π½ΠΎΠ² ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ 27 ΡΠ΅Π½ΡΡΠ±ΡΡ Π² Π»Π°ΠΉΠ²-ΡΠ΅ΠΆΠΈΠΌΠ΅. Π£ΡΠ°ΡΡΠ½ΠΈΠΊ ΠΠ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ΠΈ ΡΠΎΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ MoscowPython ΠΠΈΡ
Π°ΠΈΠ» ΠΠΎΡΠ½Π΅Π΅Π² ΡΠ°Π·Π±Π΅ΡΠ΅Ρ ΡΠ°ΠΌΡΠ΅ Π²Π΅ΡΠ΅Π»ΡΠ΅ ΠΊΠ΅ΠΉΡΡ, ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π½Π° ΡΠΎ Π½Π΅Ρ ΠΎΡΡΡΠΎΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ;).
Π‘Π°ΠΉΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ: https://conf.python.ru/moscow/2021
ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° Π°Π½Π°Π»ΠΈΠ· ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅: https://mpccomplexity.codescoring.com/
838
Π¦ΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ
ΠΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΈΡΡ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Ρ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΠΈ. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ (cyclomatic complexity).
ΠΡΠ»ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ, ΡΠΎ ΡΡΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠ° ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π² 1976 Π³ΠΎΠ΄Ρ Π’ΠΎΠΌΠ°ΡΠΎΠΌ ΠΠ°ΠΊΠΠ΅ΠΉΠ±ΠΎΠΌ (Thomas J. McCabe).
ΠΠΎ ΡΡΡΠΈ, ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ (Π¦Π‘) ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΠΌΠ°ΡΡΡΡΡΠΎΠ² ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ°ΡΡ ΡΠΎΡΠΌΡΠ»ΠΎΠΉ, ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
M = E β N + 2P,
Π³Π΄Π΅:
M β ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ (Π¦Π‘),
E β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ±Π΅Ρ Π² Π³ΡΠ°ΡΠ΅,
N β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ·Π»ΠΎΠ² Π² Π³ΡΠ°ΡΠ΅,
P β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ²ΡΠ·Π½ΠΎΡΡΠΈ.
Π ΡΠ΅ΠΌ ΠΆΠ΅ ΡΡΠΎ Π²ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ?
1. ΠΠ·Π±ΡΡΠΎΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π¦Π‘ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΎΠΆΠ½Π΅Π½Π½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
2. ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π¦Π‘ ΡΠΏΠ°ΡΠ°Π΅Ρ Π²Π°Ρ ΠΎΡ Π²Π»Π΅ΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ (Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ!). π
3. ΠΠ·Π»ΠΈΡΠ½Π΅ Π²ΡΡΠΎΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π¦Π‘ Π½Π°ΠΌΠ΅ΠΊΠ°ΡΡ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ
Π¦ΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π΅Ρ ΠΎΡΠ»ΠΈΡΠΈΡΡ
ΠΎΡ ΠΠΎΠ³Π½ΠΈΡΠΈΠ²Π½ΠΎΠΉ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΠΎΡΡΠ°Ρ
. Π ΠΏΠΎΠΊΠ° ΠΏΡΠΎΡΡΠ°Ρ Π·Π°Π΄Π°ΡΠΊΠ°, ΠΊΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠ°Ρ Π¦Π‘ Ρ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅?
void foo(void)
{
if (a)
if (b)
x=1;
else
x=2;
}838
ΠΡΡΠ»Π° JDK 17 LTS
ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΠ΅ΠΌ Java-ΠΌΠΈΡ Ρ Π²ΡΡ
ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ JDK 17!
Π Π΅Π»ΠΈΠ· ΡΡΡ.
Π‘Π²Π΅ΠΆΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΡΠΈΡ ΠΏΠΎ-Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ ΡΡΡ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ-ΡΡΡΡΠΊΠΈ Π·Π΄Π΅ΡΡ.
ΠΡΠ»ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ:
- ΡΡΡΠΎΠ³Π°Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² JDK Π²ΠΎ ΠΈΠΌΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ;
- ΠΏΠΎΠΏΡΠ°Π²Π»Π΅Π½Π° ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ;
- Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΡΠΈΡΠ΅Π»;
- Π½Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Java ΠΊΠΎΠ΄Π° Π½Π° AArch64;
- Π°ΠΏΠΏΠ»Π΅ΡΡ Π΄Π΅ΠΏΡΠ΅ΠΊΠ΅ΠΉΡΠ΅Π΄!
- ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΌΠ°ΡΡΠΈΠ½Π³, Π·Π°ΡΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ;)
- ahead-of-time (AoT) compilation, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅;
- ΠΊΠΎΠ»Π΄ΠΎΠ²Π½Ρ Ρ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
838
ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΊΡΡΠΏΠ½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ ΠΏΡΠΎ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° MSR ΠΎΠ±ΡΡΠ²ΠΈΠ»Π° ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Ρ
Π°ΠΊΠ°ΡΠΎΠ½.
Π ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΡΠ΅ΡΠΊΠΈΡ
ΡΠ΅ΠΌ Π½Π΅Ρ, Π½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π²Π°ΡΠΈΠ°Π½Ρ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ: Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΎΠ½Π±ΠΎΡΠ΄ΠΈΠ½Π³Π΅ Π½ΠΎΠ²ΡΡ
ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ², Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡ
ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GrimoirLab, ΠΎ Π½Π΅ΠΌ ΠΌΡ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π΄ΠΎ 18 ΠΎΠΊΡΡΠ±ΡΡ.
