Π¦Π΅Π» Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ
ΠΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°. Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ βΠ²ΠΈΡΡΡΠ΅Π»Π½ΠΎβ Π³ΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ (ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅, Π±ΡΠΈΡΠ΅ΡΠ΅, ΡΠΈΡΠ°ΡΠ΅, ΠΏΠΈΡΡΠ²Π°ΡΠ΅, ΠΈΡΠ½.) ΡΠΎ ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ (ΠΏΠΎΡΠ°ΠΊΠΈ) ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ TCP.
ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π΅ Π΅ΡΠΈΠΊΠ°ΡΠ½Π° Π²ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠ²Π΅ ΡΠ»ΡΡΠ°ΠΈ:
- Π²ΠΎ ΠΏΡΠΈΡΠΎΠ΄Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ (ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΈ, ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΠΎΠ΄Π±ΠΎΡΠΎΡ ΠΈΡΠ½.) ΠΊΠΎΠΈ Π±Π°ΡΠ°Π°Ρ Π±ΡΠ· ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π½Π° ΠΎΠ΄Π΄Π°Π»Π΅ΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ Π²ΠΎ ΡΡΠ»ΠΎΠ²ΠΈ Π½Π° ΠΌΠΎΠΆΠ½ΠΈ ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠ΅ΠΊΠΈΠ½ΠΈ Π²ΠΎ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° (ΡΠΎ ΠΎΠ΄Π΅ΡΠ΅ ΠΎΡΠ»Π°ΡΠ½);
- Π²ΠΎ Π²ΡΠΈΡΠ°Π½ΠΈ DBMS, Π°ΠΊΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π±Π°ΡΠ°ΡΠ°ΡΠ° ΡΠ΅ Π²ΡΡΠΈ Π½Π° Π½Π΅ΠΊΠΎΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ, Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ Π²ΡΡΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ;
- Π²ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈ Π±Π°ΡΠ°Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠ° Π±ΡΠ·ΠΈΠ½Π° Π½Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π²ΠΈΡΠΎΠΊ ΠΈ Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΎΡΡ;
- Π²ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΎΠ΄Π»ΠΎΠΆΡΠ²Π°ΡΠ°ΡΠ° Π²ΠΎ ΡΠ°Π·ΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ.
Π‘ΡΡΡΠΊΡΡΡΠ°
Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ Cage (ΠΏΠΎΡΡΠΎΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° - Π±Π΅ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π²ΠΎ Python 3.7 Π½Π° Windows) Π²ΠΊΠ»ΡΡΡΠ²Π° Π΄Π²Π° Π³Π»Π°Π²Π½ΠΈ Π΄Π΅Π»Π°:
- ΠΠ΅ΡΡΡΠ΅ΡΠ²Π΅Ρ β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ (ΠΏΠ°ΠΊΠ΅Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ) ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΡΠΈΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π±Π°ΡΠ°Π°Ρ Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ;
- ΠΊΠ»Π°ΡΠ° ΠΠ΅ΡΡ ΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΡΠΎΡΡΠ²Π΅Ρ, ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ²Π°ΡΡΠΈ Π³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅.
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ
ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°ΡΠ° Cage Π³ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ Π²ΠΎΠΎΠ±ΠΈΡΠ°Π΅Π½ΠΈΡΠ΅, βΡΡΡΠΈΠ½ΡΠΊΠΈβ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΡΠ΅Π½ ΡΠΈΡΡΠ΅ΠΌ: ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅, ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅, Π·Π°ΡΠ²ΠΎΡΠ°ΡΠ΅, Π±ΡΠΈΡΠ΅ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ ΡΠΈΡΠ°ΡΠ΅/ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ (ΡΠΎ ΠΎΠ·Π½Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠ±Π°ΡΠ° ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅). ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½ΠΎ, ΠΎΠ²ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΡΠ΅ Π±Π»ΠΈΡΠΊΡ Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ C, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅ΡΠΎ/Π·Π°ΡΠ²ΠΎΡΠ°ΡΠ΅ΡΠΎ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠ΅ Π²ΡΡΠΈ βΠ½Π° ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅β Π½Π° Π²Π»Π΅Π·/ΠΈΠ·Π»Π΅Π·.
Π‘ΠΎ Π΄ΡΡΠ³ΠΈ Π·Π±ΠΎΡΠΎΠ²ΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΎΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΈ βΠ΄Π°ΡΠΎΡΠ΅ΠΊΠΈβ (ΠΊΠ»Π°ΡΠ° _io Π²ΠΎ Python), Π½ΠΎ ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°ΡΠ° Cage.
ΠΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ ΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡ Cage, ΡΠΎΡ Π²ΠΎΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π° ΠΏΠΎΡΠ΅ΡΠ½Π° Π²ΡΡΠΊΠ° ΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ (ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ΅ΡΠ²Π΅ΡΠΈ), Π΅ ΠΎΠ²Π»Π°ΡΡΠ΅Π½ ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ID ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π° ΠΏΠΎΡΠ²ΡΠ΄Π° ΡΠΎ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ° Π·Π° ΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ. ΠΠΎΠ³Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ Cage Π΅ ΠΈΠ·Π±ΡΠΈΡΠ°Π½, ΡΠΎΡ ΠΌΡ Π½Π°Π»ΠΎΠΆΡΠ²Π° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΄Π° ΠΏΡΠ΅ΡΡΠ°Π½Π΅ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ° ΠΈ Π΄Π° Π³ΠΈ Π·Π°ΡΠ²ΠΎΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅. ΠΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΈΠ½ΠΈΡΠΈΡΠ°Π½ΠΎ ΠΈ ΠΎΠ΄ ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ.
Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π·Π° ΡΠΈΡΠ°ΡΠ΅/Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΡΠΎ Π±Π°ΡΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅ΡΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ ΠΎΠ΄ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π²ΠΎ ΠΊΠ΅ΡΠΎΡ Π½Π° RAM ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° (Π±Π°ΡΠ΅Ρ).
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΎΡ ΡΠΎΡΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ Π±ΡΠΎΡ Π½Π° Cage ΠΎΠ±ΡΠ΅ΠΊΡΠΈ ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ (Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ, Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° Π±Π»ΠΎΠΊ ΠΏΡΠΈ ΡΠ°Π·ΠΌΠ΅Π½Π° ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈΡΠ½.).
ΠΠ΄Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ Cage ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° (IP Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ»ΠΈ DNS-ΡΠ΅ΡΠ²Π΅Ρ, Π³Π»Π°Π²Π½Π° ΠΏΠΎΡΡΠ° Π·Π° ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅, ΠΏΠ°ΡΠ΅ΠΊΠ° ΠΈ ΠΈΠΌΠ΅ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°) ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΏΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ.
ΠΠΈΠ΄Π΅ΡΡΠΈ ΡΠ΅ΠΊΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Cage ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈΠΎΡ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π±Π°ΡΠ΅ΡΠΈΡΠ°ΡΠ΅. ΠΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΠΊΠ΅ΡΠΎΡ β Π±ΡΠΎΡΠΎΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΈ Π½ΠΈΠ²Π½Π°ΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°, ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Cage. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ΅ΡΠΎΡ ΠΎΠ΄ 1 GB Π΅ 1000 ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΎΠ΄ ΠΏΠΎ 1 MB, ΠΈΠ»ΠΈ 10 ΠΈΠ»ΡΠ°Π΄ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΎΠ΄ ΠΏΠΎ 100 KB, ΠΈΠ»ΠΈ 1 ΠΌΠΈΠ»ΠΈΠΎΠ½ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΎΠ΄ ΠΏΠΎ 1 KB. ΠΠ·Π±ΠΎΡΠΎΡ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° ΠΈ Π±ΡΠΎΡΠΎΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π·Π°Π΄Π°ΡΠ° Π·Π° ΡΠ΅ΠΊΠΎΡ ΡΠ»ΡΡΠ°Ρ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Cage ΠΎΠ±ΡΠ΅ΠΊΡΠΈ Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π·Π° ΡΠ°ΠΌΠΏΠΎΠ½ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏΡΠ²Π° Π΄ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ. ΠΠ°ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π΅Π½, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π½Π°ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠ°ΠΌ Π·Π° ΡΠ°ΠΌΠΏΠΎΠ½ΠΈΡΠ°ΡΠ΅: ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΠΈΡΡΡΠΏΠΈ Π΄Π°Π΄Π΅Π½Π° ΠΊΠΎΠ»ΠΈΡΠΈΠ½Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°, Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ Π³ΠΈ ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΡΡΠ°ΡΠΈΡΠ΅ ΡΠΏΠΎΡΠ΅Π΄ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΡ Π½Π° ΠΏΠ΅Π½Π·ΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π±ΡΠΎΡ Π½Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΈ. ΠΠ°ΡΠ΅ΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π½Π΅ΡΠ°ΠΌΠ½ΠΎΠΌΠ΅ΡΠ΅Π½ (Π²ΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΡΠΊΠ° ΡΠΌΠΈΡΠ»Π°) ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ, ΠΏΡΠ²ΠΎ, Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ, Π²ΡΠΎΡΠΎ, Π΄ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ ΠΎΠ΄ ΡΠ΅ΠΊΠΎΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°.
ΠΠ»Π°ΡΠ°ΡΠ° Cage ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° I/O Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠΎ Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΡΡΠΎ ΡΠ° ΠΎΠ·Π½Π°ΡΡΠ²Π° ΠΏΠΎΠ·ΠΈΡΠΈΡΠ°ΡΠ° ΠΈ Π΄ΠΎΠ»ΠΆΠΈΠ½Π°ΡΠ° Π½Π° Π½ΠΈΠ·Π°ΡΠ°, βΠ·Π°ΠΌΠ΅Π½ΡΠ²Π°β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ), ΡΡΠΊΡ ΠΈ Π½Π° ΠΏΠΎΠ½ΠΈΡΠΊΠΎ, βΡΠΈΠ·ΠΈΡΠΊΠΎβ Π½ΠΈΠ²ΠΎ - ΠΏΠΎ Π±ΡΠΎΠ΅Π²ΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ Π²ΠΎ Π±Π°ΡΠ΅ΡΡΠΊΠ°ΡΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°.
ΠΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡΠ° Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½Π° Π·Π° Cage ΠΎΠ±ΡΠ΅ΠΊΡΠΈ "Ρ ΠΈΠ±Π΅ΡΠ½Π°ΡΠΈΡΠ°" (βΡΠΏΠΈΠ΅ΡΠ΅β) - ΡΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π±ΠΈΠ΄Π°Ρ βΡΠΊΠ»ΠΎΠΏΠ΅Π½ΠΈβ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ ΡΠ»ΡΡΠ°Ρ Π½Π° Π³ΡΠ±Π΅ΡΠ΅ Π½Π° Π²ΡΡΠΊΠ°ΡΠ° ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π΅ Π·Π°ΠΏΡΠ΅Π½Π°, ΠΈΡΠ½.) Π²ΠΎ Π»ΠΎΠΊΠ°Π»Π½Π° Π΄Π΅ΠΏΠΎΠ½ΠΈΡΠ° Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈ Π±ΡΠ·ΠΎ Π²ΡΠ°ΡΠ΅Π½ΠΈ ΠΎΠ΄ ΠΎΠ²Π°Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° (ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°). ΠΠ²Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΏΠΎ ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ ΠΎΠ΄Π΅ΡΠ΅ βΠΎΡΠ»Π°ΡΠ½β, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠ΅ΡΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈ ΠΎΠ΄ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π²Π΅ΡΠ΅ ΡΠ΅ Π±ΠΈΠ΄Π°Ρ Π²ΠΎ ΠΊΠ΅ΡΠΎΡ.
ΠΠ΅ΡΡ Π΅ ΠΎΠΊΠΎΠ»Ρ 3600 Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄.
ΠΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π° Π½Π° ΡΠ΅ΡΠ²Π΅Ρ
Π‘Π΅ΡΠ²Π΅ΡΠΈΡΠ΅ Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π½Π° Cageserver ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±ΡΠΎΡ ΠΏΠΎΡΡΠΈ, ΠΎΠ΄ ΠΊΠΎΠΈ Π΅Π΄Π½Π°ΡΠ° (βΠ³Π»Π°Π²Π½Π°ΡΠ°β) ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°ΠΌΠΎ Π·Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, Π° ΠΎΡΡΠ°Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π·Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Cage Π±Π°ΡΠ° ΡΠ°ΠΌΠΎ Python. ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΡ ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΡΠΈ ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ Π΄ΡΡΠ³Π° ΡΠ°Π±ΠΎΡΠ°.
Π‘Π΅ΡΠ²Π΅ΡΠΎΡ ΠΏΡΠ²ΠΈΡΠ½ΠΎ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° ΠΊΠ°ΠΊΠΎ Π·Π±ΠΈΡΠΊΠ° ΠΎΠ΄ Π΄Π²Π° Π³Π»Π°Π²Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ:
- "ΠΠΎΠ½Π΅ΠΊΡΠΈΠΈ" β ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π²ΠΎΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΈ Π½Π΅ΡΠ·ΠΈΠ½ΠΎ ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠΈΠ²Π° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ;
- βΠΠΏΠ΅ΡΠ°ΡΠΈΠΈβ β ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ) Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ Π·Π° Π·Π°ΡΠ²ΠΎΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ.
Π Π΄Π²Π°ΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π΅ ΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈ ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΠΊΠΎ Π±Π΅ΡΠΊΡΠ°ΡΠ½ΠΈ ΡΠΈΠΊΠ»ΡΡΠΈ Π½Π° ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΈ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π΄ΠΈΡΠΈ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΏΡΠΎΠΊΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΈ, Π±ΡΠ°Π²ΠΈ ΠΈ ΡΠΎΠΊΠ΅ΡΠΈ.
ΠΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π° ΠΏΠΎΡΡΠ° Π·Π° ΡΠ΅ΠΊΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π° ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΈ ΠΏΡΠ΅Π½ΠΎΡ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° ΠΊΠΎΠ³Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠ΅ ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π°. ΠΠ°ΠΏΠΈΡΠ°ΡΠ΅ΡΠΎ ΠΏΠΎΠΌΠ΅ΡΡ ΠΏΠΎΡΡΠΈΡΠ΅ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π΅ Π·Π°ΡΡΠ²Π°Π½ΠΎ Π²ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠΎΡΠ΅ΡΠ½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΡΠΎΠΊΡΠΈ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°.
ΠΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΡΠ²Π°Π°Ρ (ΠΊΠ²Π°Π·ΠΈ-ΠΏΠ°ΡΠ°Π»Π΅Π»Π΅Π½, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΡΠΎ Π±ΡΠ°Π²ΠΈ) ΡΠΈΡΠ°ΡΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ Π΅Π΄Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π°ΠΊΠΎ ΡΠΎΠ° Π±Π΅ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΊΠΎΠ³Π° ΠΏΡΠ²ΠΈΡΠ½ΠΎ Π±Π΅ΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΠΎΠ΄ βΠΏΡΠ²ΠΈΠΎΡβ ΠΊΠ»ΠΈΠ΅Π½Ρ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅/Π±ΡΠΈΡΠ΅ΡΠ΅/ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅/Π·Π°ΡΠ²ΠΎΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠ΅ Π²ΡΡΠΈ Π²ΠΎ ΡΠ°ΠΌΠΈΠΎΡ ΠΏΡΠΎΡΠ΅Ρ βΠΠΏΠ΅ΡΠ°ΡΠΈΠΈβ ΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΠ‘.
ΠΠ° Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π·Π°Π±ΡΠ·Π° ΡΠΈΡΠ°ΡΠ΅ΡΠΎ/ΠΏΠΈΡΡΠ²Π°ΡΠ΅ΡΠΎ, ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΈΠ·Π²Π΅Π΄ΡΠ²Π°Π°Ρ Π²ΠΎ Π½ΠΈΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΡΠΎΡ βΠΠΏΠ΅ΡΠ°ΡΠΈΠΈβ. ΠΡΠΎΡΠΎΡ Π½Π° Π½ΠΈΡΠΊΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ Π΅ Π΅Π΄Π½Π°ΠΊΠΎΠ² Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ. ΠΠ°Π΄Π°ΡΠΈΡΠ΅ Π·Π° ΡΠΈΡΠ°ΡΠ΅/Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΠ²Π°Π°Ρ Π΄ΠΎ Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΈΠΎΡ ΡΠ΅Π΄ ΠΈ ΠΏΡΠ²Π°ΡΠ° Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π° Π½ΠΈΡΠΊΠ° ΡΠ° Π·Π΅ΠΌΠ° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΎΠ΄ Π³Π»Π°Π²Π°ΡΠ°. Π‘ΠΏΠ΅ΡΠΈΡΠ°Π»Π½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ RAM ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
ΠΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ° ΡΠ»Π΅Π΄ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈ ΠΏΡΠ΅ΡΡΠ°Π½ΡΠ²Π° Π΄Π° Π³ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎ Π½ΠΈΠ²Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ Π½Π°Π΄ΠΌΠΈΠ½Π΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ.
ΠΠ° Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ, Cageserver Π²ΠΎΠ΄ΠΈ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ° Π½Π° ΡΠΈΡΠ΅ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ. ΠΠ΄Π΅Π½ ΠΎΠΏΡΡ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΡΠΎΠ΄ΡΠΆΠΈ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΠΎ Π·Π°Π΄Π°ΡΠΈ Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅/ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅/ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅/Π±ΡΠΈΡΠ΅ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ. ΠΠ° ΡΠ΅ΠΊΠΎΡΠ° ΡΠ°Π±ΠΎΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ° ΠΏΠΎΡΠ΅Π±Π΅Π½ Π΄Π½Π΅Π²Π½ΠΈΠΊ, Π²ΠΎ ΠΊΠΎΡ ΡΠ΅ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°Π°Ρ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄ ΠΏΠΎΡΠ°ΠΊΠΈ ΡΠΎ Π·Π°Π΄Π°ΡΠΈ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΠΎΠ²Π°Π° ΡΠ°Π±ΠΎΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, ΠΊΠ°ΠΊΠΎ ΠΈ Π½ΠΈΠ·ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ (Π½ΠΎΠ²ΠΈ) ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈ Π½ΠΈΠ·ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠΎΠΈ Π±ΠΈΠ»Π΅ ΡΠ½ΠΈΡΡΠ΅Π½ΠΈ ΠΏΡΠΈ ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΠ΅ (ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ βΠ½Π° Π²ΡΠ²ΠΎΡβ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅). ).
ΠΠ²ΠΈΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ ΠΌΠΎΠΆΠ½ΠΎΡΡ ΠΈ Π·Π° Π²ΡΠ°ΡΠ°ΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΈ Π·Π° Π²ΡΠ°ΡΠ°ΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° Π΄ΠΎ ΡΠΎΡΠΊΠ° Π²ΠΎ ΠΌΠΈΠ½Π°ΡΠΎΡΠΎ.
Cageserver Π΅ ΠΎΠΊΠΎΠ»Ρ 3100 Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄.
Π‘ΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π·Π° ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Cageserver
ΠΠΎΠ³Π° Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π°ΡΠ΅, ΡΡΠ΅Π±Π° Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ°Π»ΠΎΠ³ΠΎΡ:
β Π³Π»Π°Π²Π½ΠΎ ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ Π·Π° ΠΎΠ²Π»Π°ΡΡΡΠ²Π°ΡΠ΅;
β Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠΈ Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ ΡΠΎ ΠΎΠ²Π»Π°ΡΡΠ΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ (ΠΎΠ΄ 1 ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅, Π·Π±ΠΈΡΠΎΡ Π½Π° Π±ΡΠΎΠ΅Π²ΠΈ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° ΠΎΠ΄ ΠΎΠ½ΠΎΡ Π΄ΠΎ Π³Π»Π°Π²Π½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ°).
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΠ°ΡΠ° ΠΠ΅ΡΡ
ΠΊΠ»Π°ΡΠ° ΠΊΠ°ΡΠ΅Π·ΠΠ΅ΡΡ( cage_name="", pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file="" )
ΠΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΈ ΠΎΠ΄ ΠΎΠ²Π°Π° ΠΊΠ»Π°ΡΠ° ΠΊΠΎΠΈ ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°Π°Ρ ΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΠΎΠ΄ΡΠΆΠ°Ρ Π±Π°ΡΠ΅Ρ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
- ΠΊΠ°ΡΠ΅Π·_ΠΈΠΌΠ΅(ΡΠ») - ΡΡΠ»ΠΎΠ²Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ, ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ
- Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ(int) β Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° Π΅Π΄Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΎΠ΄ Π±Π°ΡΠ΅ΡΡΠΊΠ°ΡΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° (Π²ΠΎ Π±Π°ΡΡΠΈ)
- Π½ΡΠΌΠΏΠ°ΠΆΠΈ(int) β Π±ΡΠΎΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΎΠ΄ ΡΠ°ΠΌΠΏΠΎΠ½ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°
- maxstrlen(int) β ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° Π΄ΠΎΠ»ΠΆΠΈΠ½Π° Π½Π° Π½ΠΈΠ·Π° Π±Π°ΡΡΠΈ Π²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΈΡΠ°ΡΠ΅
- server_ip(Π΄ΠΈΠΊΡΠΈΡΠ°) - ΡΠ΅ΡΠ½ΠΈΠΊ ΡΠΎ Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΊΠ»ΡΡΠΎΡ Π΅ ΡΡΠ»ΠΎΠ²Π½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ (ΠΈΠ΄ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°), Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° Π΅ Π½ΠΈΠ·Π° ΡΠΎ Π°Π΄ΡΠ΅ΡΠ°: βip address:portβ ΠΈΠ»ΠΈ βDNS: ΠΏΠΎΡΡΠ°β (ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠΌΠΈΡΠ°ΡΠ° ΠΈ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΡΠ΅ Π°Π΄ΡΠ΅ΡΠΈ Π΅ ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ)
- ΠΏΠΎΡΠ΅ΠΊΠ°Ρ(int) β Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΠΊΠ°ΡΠ΅ Π·Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΡΡΠΈ (Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ)
- Π±ΡΠ΄Π½Π°(boolean) β Π·Π½Π°ΠΌΠ΅Π½ΡΠ΅ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ (ΠΠ°ΠΆΠ½ΠΈ - Π°ΠΊΠΎ ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ Π½ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡ, Π’ΠΎΡΠ½ΠΎ - Π°ΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΡ Π΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ βΡΠΊΠ»ΠΎΠΏΠ΅Π½β - ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°ΡΠ° βΡ ΠΈΠ±Π΅ΡΠ½Π°ΡΠΈΡΠ°β, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΠΠ΅ΡΠΎΡΠ½ΠΎ)
- ΠΊΠ΅Ρ_Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°(ΡΠ») - ΠΈΠΌΠ΅ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π·Π° Ρ ΠΈΠ±Π΅ΡΠ½Π°ΡΠΈΡΠ°
ΠΠ΅ΡΠΎΠ΄ΠΈ
ΠΠ΅ΡΡ.file_create( ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠ°ΡΠ΅ΠΊΠ° ) β ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π½ΠΎΠ²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
ΠΠ΅ΡΡ.Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°_ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Ρ( ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠ°ΡΠ΅ΠΊΠ°, Π½ΠΎΠ²ΠΎ_ΠΈΠΌΠ΅ ) β ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Ρ ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ°
ΠΠ΅ΡΡ.Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°_ΠΎΡΡΡΡΠ°Π½ΠΈ( ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠ°ΡΠ΅ΠΊΠ°) - ΠΈΠ·Π±ΡΠΈΡΠ΅ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
ΠΠ΅ΡΡ.ΠΎΡΠ²ΠΎΡΠΈ( ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠ°ΡΠ΅ΠΊΠ°, ΠΌΠΎΠ΄ ) - ΠΎΡΠ²ΠΎΡΠ΅Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
Π‘Π΅ Π²ΡΠ°ΡΠ° Ρ-ΠΊΠ°Π½Π°Π» Π±ΡΠΎΡ Π½Π° ΠΊΠ°Π½Π°Π». ΠΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΠ - ΠΎΠ²Π° Π΅ ΡΠ΅ΠΆΠΈΠΌΠΎΡ Π½Π° ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ°: "wm" - Π΅ΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π΅Π½ (ΡΠΈΡΠ°Ρ/ΠΏΠΈΡΡΠ²Π°ΡΠ΅), "rs" - ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ Π΄ΡΡΠ³ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, "ws" - ΡΠΈΡΠ°ΡΠ΅/ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ Π΄ΡΡΠ³ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ.
ΠΠ΅ΡΡ.Π²ΠΎ Π±Π»ΠΈΠ·ΠΈΠ½Π° (Ρ-ΠΊΠ°Π½Π°Π») β Π·Π°ΡΠ²ΠΎΡΠ΅ΡΠ΅ ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ°
ΠΠ΅ΡΡ.ΠΏΠΈΡΡΠ²Π°ΠΌ (fchannel, start, data ) β Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π½ΠΈΠ·Π° ΠΎΠ΄ Π±Π°ΡΡΠΈ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
ΠΠ΅ΡΡ.ΡΠΈΡΠ° (fchannel, start, len_data ) β ΠΏΡΠΎΡΠΈΡΠ°ΡΡΠ΅ Π½ΠΈΠ·Π° ΠΎΠ΄ Π±Π°ΡΡΠΈ ΠΎΠ΄ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
ΠΠ΅ΡΡ.ΡΡΠ°Π²ΠΈ_ΡΡΡΠ°Π½ΠΈΡΠΈ ( Ρ-ΠΊΠ°Π½Π°Π» ) β βΠ³ΠΈ ΡΡΡΠΊΠ°β ΠΎΠ΄ Π±Π°ΡΠ΅ΡΠΎΡ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΎΠ΄ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ ΠΊΠ°Π½Π°Π» ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅ΡΠΈ. Π‘Π΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΎΠ½ΠΈΠ΅ ΡΠΎΡΠΊΠΈ Π²ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΡ ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡ ΡΠ΅ ΡΠΈΠ·ΠΈΡΠΊΠΈ Π·Π°ΡΡΠ²Π°Π½ΠΈ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
ΠΠ΅ΡΡ.push_all () β Π³ΠΈ βΡΡΡΠΊΠ°β ΠΎΠ΄ Π±Π°ΡΠ΅ΡΠΎΡ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΎΠ΄ ΡΠΈΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ΄ ΠΊΠ»Π°ΡΠ°ΡΠ° Cage ΠΊΠΎΠΈ ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅ΡΠΈ. Π‘Π΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π΅ΠΊΠ° ΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ ΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
ΠΠ·Π²ΠΎΡ: www.habr.com