ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Python ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°ΠΏΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΡΠ·Π²Π°Π½Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡΡ Python Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π·Π°ΠΏΡΡΠΎΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠΎΡΡΠ΅ΠΆ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΏΡΡΠ°Ρ. ΠΡΠΎΠ²Π΅Π΄Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· 666 GitHub-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Python, ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΡΡΠ²ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π·Π°ΠΏΡΡΡΠΌΠΈ Π² 5% ΠΈΠ·ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΡΡΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»Π°, ΡΡΠΎ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² 24 ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ (3.6%), Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ 1.4% ΡΠ²Π»ΡΡΡΡΡ Π»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΡΠ°Ρ ΠΌΠΎΠ³Π»Π° Π±ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π·Π±ΠΈΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΠΏΡΡΠ΅ΠΉ, Π΄Π»ΠΈΠ½Π½ΡΡ Ρ ΡΡΠ΅ΠΉ, HTML-Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ SQL-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ). ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π² ΡΠΈΡΠ»Π΅ 24 ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠ°ΠΊ Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield ΠΈ django-helpdesk. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π·Π°ΠΏΡΡΡΠΌΠΈ Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Ρ Π΄Π»Ρ Python ΠΈ ΡΠ°ΡΡΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Π½Π° C/C++ (ΠΏΡΠΈΠΌΠ΅ΡΠ½Ρ Π½Π΅Π΄Π°Π²Π½ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ — LLVM, Mono, Tensorflow).
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΈΠ΄Ρ ΠΈΠ·ΡΡΠ΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ:
- Π‘Π»ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½Π°Ρ Π·Π°ΠΏΡΡΠ°Ρ Π² ΡΠΏΠΈΡΠΊΠ°Ρ
, ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ
ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°Ρ
, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ°Ρ ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡ
ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Sentry Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ΅ΡΡΠΎΠ² Π±ΡΠ»Π° ΠΏΡΠΎΠΏΡΡΠ΅Π½Π° Π·Π°ΠΏΡΡΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ «releases» ΠΈ «discover» Π² ΡΠΏΠΈΡΠΊΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° «/releasesdiscover», Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ «/releases» ΠΈ «/discover».
ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ — ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½Π°Ρ Π·Π°ΠΏΡΡΠ°Ρ Π² rapidpro ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ» Π² ΡΡΡΠΎΠΊΠ΅ 572:
- ΠΡΠΎΠΏΡΡΠ΅Π½Π½Π°Ρ Π·Π°ΠΏΡΡΠ°Ρ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ°Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π² Ρ ΠΎΠ΄Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ Π½Π΅ ΠΊΠΎΡΡΠ΅ΠΆ, Π° ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΈΠΏ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ «values = (1,)» ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π½ΠΎ «values = (1)» ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. Π‘ΠΊΠΎΠ±ΠΊΠΈ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡΡ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΈ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°Π»ΠΈΡΠΈΡ Π·Π°ΠΏΡΡΡΡ . REST_FRAMEWORK = { ‘DEFAULT_PERMISSION_CLASSES’: ( ‘rest_framework.permissions.IsAuthenticated’ # Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π° ΡΡΡΠΎΠΊΠ°. ) }
- ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ — Π»ΠΈΡΠ½ΠΈΠ΅ Π·Π°ΠΏΡΡΡΠ΅ ΠΏΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ. ΠΡΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π·Π°ΠΏΡΡΠ°Ρ, ΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΠΊΠΎΡΡΠ΅ΠΆ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ «value = 1» ΡΠΊΠ°Π·Π°Π½ΠΎ «value = 1,»).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru