ΠΠ΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΡΠ΅Π³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π½Π°ΡΠ΅ΠΊΠ°Π΄Π΅, Π° ΠΌΠ΅ΡΡ ΡΠΈΡΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, HTTP Π³ΠΎ Π·Π°Π·Π΅ΠΌΠ° Π»Π°Π²ΠΎΠ²ΡΠΊΠΈΠΎΡ Π΄Π΅Π». ΠΠΎΠ³Π° Π³ΠΈ ΠΏΡΠΎΡΡΡΠ²Π°Π°Ρ Π½ΠΈΡΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π»ΡΡΠ΅ ΠΏΠΎΡΠ²Π΅ΡΡΠ²Π°Π°Ρ ΠΌΠ½ΠΎΠ³Ρ ΠΌΠ°Π»ΠΊΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ°Π΄Π΅ ΡΡΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°Ρ ΠΎΠ²ΠΈΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΎΠ΄Π΅Π»Π±Π°ΡΠ° Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ (Dev) ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ (Ops) ΡΠ°ΠΌΠΎ ΡΠ° Π²Π»ΠΎΡΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΠ°ΡΠ°. ΠΠΎ, ΡΠΎ ΠΏΠΎΠ΄Π΅ΠΌΠΎΡ Π½Π° ΠΊΡΠ»ΡΡΡΠ°ΡΠ° Π½Π° DevOps, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΠ°Π½ΡΠ²Π°Π°Ρ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π½ΠΈΠ²Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ, ΠΏΠ° Π·Π°ΡΠΎΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π·Π° Π½ΠΈΠ² ΡΠ΅ΠΌΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π°Ρ ΡΠΎ Π·Π°Π΄Π½ΠΈΠΎΡ Π΄Π΅Π» Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ²Π° Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π°ΠΊΠΎ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°ΡΠ΅ Π΄Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΈΠ»ΡΠ°Π΄Π½ΠΈΡΠΈ ΠΈΠ»ΠΈ Π΄Π΅ΡΠ΅ΡΠΈΡΠΈ ΠΈΠ»ΡΠ°Π΄ΠΈ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΡΠΊΠΈ.
ΠΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°ΡΠ° Π²ΠΎ Π²Π΅Π±-ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° ΠΎΠ½ΠΈΠ΅ Π²ΠΎ Π΄ΡΡΠ³ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ΅Π· ΡΠ°Π·Π»ΠΈΠΊΠ° Π΄Π°Π»ΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π·Π° Π±Π°Π»Π°Π½ΡΠ΅ΡΠΈ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ Π½Π° Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠΌΠ°Π°Ρ ΡΠ»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΎ ΠΎΠΏΠΊΡΡΠΆΡΠ²Π°ΡΠ΅ ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ. Π Π°Π·Π±ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΎΠ²ΠΈΠ΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ° ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ Π½Π°Π΄ΠΌΠΈΠ½Π΅ΡΠ΅ Π²ΠΎΠΎΠΏΡΡΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π³ΠΈ ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡΠ° Π½Π° Π²Π°ΡΠΈΡΠ΅ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠ° ΠΏΠΈΡΡΠ²Π°ΠΌ ΠΎΠ²Π°Π° ΡΠ΅ΡΠΈΡΠ° Π½Π°ΠΏΠΈΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° ΠΏΡΠ°ΡΠ°ΡΠ° ΠΎΠ΄ ΠΌΠ»Π°Π΄ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ ΠΊΠΎΠΈ ΡΠ°ΠΊΠ°Π°Ρ Π΄Π° ΡΡΠ°Π½Π°Ρ Π΄ΠΎΠ±ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ°Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΈ. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΡΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ°Ρ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈΡΠ΅ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° ΠΠΈΠ½ΡΠΊΡ Π±Π΅Π· Π΄Π° ΡΠ΅ Π½ΡΡΠ½Π΅ Π²ΠΎ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΡΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ°ΠΊΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ Π²ΠΈΠ΄ΠΎΠ²ΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, Π²ΠΎ ΠΎΠ²Π°Π° ΡΠ΅ΡΠΈΡΠ° ΡΠ°ΠΊΠ°ΠΌ Π΄Π° ΠΈΡΡΡΠ°ΠΆΡΠ²Π°ΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π²Π΅Π± Π½Π°ΠΌΠ΅ΡΡΠΎ Π΄Π΅ΡΠΊΡΠΎΠΏ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π»ΠΈΡΡΡΠ²Π°Ρ ΠΈΠ»ΠΈ ΡΡΠ΅Π΄ΡΠ²Π°Ρ Π½Π° ΡΠ΅ΠΊΡΡ. ΠΠ²ΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π» Π΅ Π½Π°ΠΌΠ΅Π½Π΅Ρ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΈ ΠΊΠΎΠΈ ΡΠ°ΠΊΠ°Π°Ρ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ°Ρ ΠΊΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π½Π° Linux ΠΈΠ»ΠΈ Unix ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π°Ρ Π·Π° Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ.
ΠΠΈΠ½ΡΠΊΡ Π΅ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠ±Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ, Π° Π½Π°ΡΡΠ΅ΡΡΠΎ Π²Π°ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΠΎΠ²ΠΎΡ ΠΠ‘. ΠΠ°ΠΊΠΎ Π²Π΅Π»Π°ΠΌ βLinuxβ, Π½Π°ΡΡΠ΅ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ Π΄Π° ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄Π΅ΠΊΠ° ΠΌΠΈΡΠ»Π°ΠΌ Π½Π° ΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° Unix Π²ΠΎΠΎΠΏΡΡΠΎ. Π‘Π΅ΠΏΠ°ΠΊ, Π½Π΅ Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠ°Π² ΠΏΡΠΈΠ΄ΡΡΠΆΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ½Π°ΡΠΈ, Π°ΠΊΠΎ ΡΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈ Π·Π° FreeBSD ΠΈΠ»ΠΈ OpenBSD, Π²Π°ΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π°Π°Ρ. ΠΠΎΠ³Π° ΠΏΡΠΎΠ±ΡΠ²Π°ΠΌ Π½Π΅ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎ Π·Π° Linux, Π³ΠΎ ΠΈΡΡΠ°ΠΊΠ½ΡΠ²Π°ΠΌ.
ΠΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΎΠ²Π° Π·Π½Π°Π΅ΡΠ΅ Π·Π° Π΄Π° ΡΠΎΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΠ΄ Π½ΡΠ»Π° ΠΈ ΡΠ°Π° ΡΠ΅ Π±ΠΈΠ΄Π΅ ΡΠΎΠ²ΡΡΠ΅Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π°, Π½Π°ΡΠ΄ΠΎΠ±ΡΠΎ Π΅ Π΄Π° Π½Π΅ Π³ΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ°. ΠΠΊΠΎ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π½ΠΎΠ² Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎ C ΠΈΠ»ΠΈ C++ Π·Π° Π΄Π΅Π»ΠΎΠ²Π½Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°, ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π²Π°ΡΠΈΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π΅Π½ Π΄Π΅Π½ Π½Π° ΡΠ°Π±ΠΎΡΠ°. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΎΠ²ΠΈΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π²ΠΎ ΠΈΠ·Π±ΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° Π½ΠΈΡΠΊΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ. ΠΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΈ ΡΠ΅Π½ΠΈΡΠ΅ Π·ΠΎΡΡΠΎ Nginx ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΠΎΠ΄ Apache httpd, Π·ΠΎΡΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Python Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Tornado ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π²ΠΎ ΡΠΏΠΎΡΠ΅Π΄Π±Π° ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Python Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° ΠΠ°Π½Π³ΠΎ.
ZeroHTTPd: ΠΠ»Π°ΡΠΊΠ° Π·Π° ΡΡΠ΅ΡΠ΅
ΠΠ°ΠΊΠΎ Π±ΠΈ ΠΌΠΎΠΆΠ΅Π»Π΅ Π΄ΠΎΠ»Π³ΠΎ Π΄Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅ Π·Π° ΡΠ΅ΠΎΡΠΈΡΠ°ΡΠ°, Π½Π΅ΠΌΠ° Π½ΠΈΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΠΎΠ΄ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄, Π½Π΅Π³ΠΎΠ²ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΠ΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΅Π΄Π½Π° ΡΠΎ Π΄ΡΡΠ³Π°. ΠΠ²Π° Π΅ Π½Π°ΡΠΎΡΠΈΠ³Π»Π΅Π΄Π½ΠΈΠΎΡ ΠΌΠ΅ΡΠΎΠ΄. ΠΠ°ΡΠΎΠ°, ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ZeroHTTPd ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΡΠ΅ΠΊΠΎΡ ΠΌΠΎΠ΄Π΅Π»: Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΠΏΡΠΎΡΠ΅Ρ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π½ΠΈΡΠΊΠΈ ΠΈ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ. ΠΡΠ΄Π΅ Π΄Π° Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠ΅ ΡΠ΅ΠΊΠΎΡ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π°Ρ Π²ΠΎ ΡΠΏΠΎΡΠ΅Π΄Π±Π° Π΅Π΄Π΅Π½ ΡΠΎ Π΄ΡΡΠ³. ZeroHTTPd ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° Π²ΠΎ Π΅Π΄Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° C. Π‘Π΅ΡΠ²Π΅ΡΠΎΡ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π°
ΠΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ Π·Π° Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅. ΠΠΈΠ΄Π΅ΡΡΠΈ Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄, ZeroHTTPd Π΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΡΠ°ΠΌΠΊΠ° Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° Π²Π΅Π±. ΠΠΌΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, Π½ΠΎ Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π° ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΌΠ½ΠΎΠ³Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ βΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈβ ΡΡΡΠ°Π½ΠΈΡΠΈ. ΠΠΎΡΠ°ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ°ΠΌ Π΄Π΅ΠΊΠ° ZeroHTTPd Π΅ Π΄ΠΎΠ±Π°Ρ Π·Π° ΡΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΠΈΠ½ΡΠΊΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ. ΠΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ΅ΡΠ°, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²Π΅Π±-ΡΡΠ»ΡΠ³ΠΈ ΡΠ΅ΠΊΠ°Π°Ρ Π±Π°ΡΠ°ΡΠ°, Π³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π°Ρ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°Π°Ρ. ΠΠ²Π° Π΅ ΡΠΎΠΊΠΌΡ ΠΎΠ½Π° ΡΡΠΎ ΡΠ΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ ZeroHTTPd. ΠΠ²Π° Π΅ Π°Π»Π°ΡΠΊΠ° Π·Π° ΡΡΠ΅ΡΠ΅, Π° Π½Π΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ. ΠΠ΅ Π΅ ΠΎΠ΄Π»ΠΈΡΠ΅Π½ Π²ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ°Π»ΠΈ ΡΠΎ Π½Π°ΡΠ΄ΠΎΠ±ΡΠΈΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ (ΠΎ, Π΄Π°, ΠΊΠΎΡΠΈΡΡΠ΅Π² strcpy
) ΠΈΠ»ΠΈ ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡΠΈΠΊΠΎΠ²ΠΈ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ C. ΠΠΎ, ΡΠ΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° Π΄ΠΎΠ±ΡΠΎ ΡΠΈ ΡΠ° Π²ΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ°.
ΠΠΎΡΠ΅ΡΠ½Π° ΡΡΡΠ°Π½ΠΈΡΠ° ZeroHTTPd. ΠΠΎΠΆΠ΅ Π΄Π° Π΅ΠΌΠΈΡΡΠ²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ ΡΠ»ΠΈΠΊΠΈ
ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° ΠΊΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈ
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ Π½Π΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ. Π’ΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠΈ ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π±Π°Π·ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΊΠ΅ΡΠΎΠ²ΠΈ, ΠΈΡΠ½. Π’Π°ΠΊΠ°, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π°ΡΠ΅ΡΠ΅Π½Π° βΠΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈβ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΎΡΡΠ°Π²Π°Π°Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ΄ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΈΠΌΠΈΡΠ°. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π²ΠΎ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠΈΡΠ΅ Π·Π° Π³ΠΎΡΡΠΈΠ½ΡΠΊΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Π±Π΅Π° ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΏΠΎΡΠ°Π½ΠΎ. ΠΠ° Π΄Π½ΠΎΡΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΈΠΌΠ° ΠΈ Π±ΡΠΎΡΠ°Ρ Π·Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ.
ΠΠ΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° βΠΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈβ ZeroHTTPd
ΠΡΠΎΡΠ°ΡΠΎΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π²ΠΎ ΠΊΠ½ΠΈΠ³Π°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ ΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ Π²ΠΎ Redis. ΠΠ° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎ Π Π΅Π΄ΠΈΡ ΡΠ΅ ΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°Π°Ρ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ, ΡΠΈΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠ°Ρ ΠΎΠ΄ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠ΅ ΡΡΠΌ Π³ΠΎΠ»Π΅ΠΌ ΠΎΠ±ΠΎΠΆΠ°Π²Π°ΡΠ΅Π» Π½Π° ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄ Π·Π° Π΄ΠΎΠΌΠ°ΡΠ½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ³Π° ΠΈΠΌΠ° ΡΠ°Π²Π½ΠΎ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΠΈ Π΄ΠΎΠ±ΡΠΎ ΡΠ΅ΡΡΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ°. ΠΠΎ, ΡΠ΅Π»ΡΠ° Π½Π° ZeroHTTPd Π΅ Π΄Π° Π³ΠΈ ΠΏΡΠΎΡΡΡΠ²Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΠΠΈΠ½ΡΠΊΡ ΠΈ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ Π΄ΠΎ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ, Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π±Π°ΡΠ°ΡΠ°ΡΠ° Π·Π° HTTP ΠΈΠΌΠ° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π²Π»ΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ· ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅. ΠΠΎΡΠ° ΡΠ΅Π»ΠΎΡΠ½ΠΎ Π΄Π° Π³ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΡΠΎ Redis Π²ΠΎ ΡΠ΅ΠΊΠΎΡΠ° Π½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΠΎ Π½Π΅ΠΊΠΎΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ, Π²ΠΎ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ. ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π½Π° Redis Π½Π΅ΠΌΠ° Π΄Π° ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΎΠ²Π°Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π°. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, Π½Π°ΡΠΈΠΎΡ ΠΌΠ°Π» ΠΊΠ»ΠΈΠ΅Π½Ρ Redis ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ (Π΄ΠΎΠ±ΠΈΠ²Π°ΡΠ΅, ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠ»ΡΡΠΎΡ; Π΄ΠΎΠ±ΠΈΠ²Π°ΡΠ΅ ΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π° Π½ΠΈΠ·Π°). ΠΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ Redis Π΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅Π»Π΅Π³Π°Π½ΡΠ΅Π½ ΠΈ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½. ΠΡΡΠΈ ΠΈ Π½Π΅ ΡΡΠ΅Π±Π° ΠΏΠΎΡΠ΅Π±Π½ΠΎ Π΄Π° Π³ΠΎ ΡΡΠΈΡΠ΅. Π‘Π°ΠΌΠΈΠΎΡ ΡΠ°ΠΊΡ Π΄Π΅ΠΊΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ ΡΠ° Π²ΡΡΠΈ ΡΠ΅Π»Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π²ΠΎ ΠΎΠΊΠΎΠ»Ρ ΡΡΠΎ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΠΊΠΎΠ»ΠΊΡ Π΅ Π΄ΠΎΠ±ΡΠΎ ΠΎΡΠΌΠΈΡΠ»Π΅Π½.
Π‘Π»Π΅Π΄Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° ΡΡΠΎ ΠΏΡΠ°Π²ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠΎΠ³Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ (ΠΏΡΠ΅Π»ΠΈΡΡΡΠ²Π°ΡΠΎΡ) Π±Π°ΡΠ° /guestbookURL
.
ΠΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΠΊΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈ
ΠΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π΄Π°Π΄Π΅ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΎΠ΄ ΠΊΠ½ΠΈΠ³Π°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ, ΠΈΠΌΠ° Π΅Π΄Π΅Π½ ΠΏΠΎΠ²ΠΈΠΊ Π΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΎΡ Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΈ ΡΡΠΈ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ Π΄ΠΎ Redis. ΠΠ°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ ΡΠΎΠ΄ΡΠΆΠΈ Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌ Π΄Π΅Π» ΠΎΠ΄ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° HTML Π·Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΎΠ΄ Π΅ΠΊΡΠ°Π½ΠΎΡ ΠΏΠΎΠ³ΠΎΡΠ΅. ΠΠΌΠ° ΠΈ ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΠΌΠ΅ΡΡΠ° Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ Π΄Π΅Π» ΠΎΠ΄ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ°: ΠΎΠ±ΡΠ°Π²ΠΈ ΠΈ Π±ΡΠΎΡΠ°Ρ Π½Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ. ΠΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΠΎΠ΄ Π Π΅Π΄ΠΈΡ, Π³ΠΈ Π²ΠΌΠ΅ΡΠ½ΡΠ²Π°ΠΌΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΈ ΠΌΡ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΡΠΎΡΠΌΠΈΡΠ°Π½Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°. Π’ΡΠ΅ΡΠΈΠΎΡ ΠΏΠΎΠ²ΠΈΠΊ Π΄ΠΎ Redis ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ Π±ΠΈΠ΄Π΅ΡΡΠΈ Redis ΡΠ° Π²ΡΠ°ΡΠ° Π½ΠΎΠ²Π°ΡΠ° ΠΊΠ»ΡΡΠ½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΊΠΎΠ³Π° ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°. Π‘Π΅ΠΏΠ°ΠΊ, Π·Π° Π½Π°ΡΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡ ΠΈΠΌΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ, ΠΌΠ½ΠΎΠ³Ρ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ ΡΠ΅ Π΄ΠΎΠ±Π°Ρ ΡΠ΅ΡΡ Π·Π° ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠ΅ΡΠ΅. Π’Π°ΠΊΠ°, ΡΠ° ΠΎΡΡΡΠ»Π°ΠΌΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΠ½Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π½Π° Redis Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ ΠΈ ΡΠ° Π±Π°ΡΠ°ΠΌΠ΅ ΡΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΏΠΎΠ²ΠΈΠΊ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ZeroHTTPd
ΠΡΠ°Π΄ΠΈΠΌΠ΅ ΡΠ΅Π΄ΡΠΌ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° ZeroHTTPd ΡΠΎ ΠΈΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ:
- ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½
- Π€ΠΎΡΠΊ ΡΠ΅ΡΠ²Π΅Ρ (Π΅Π΄Π΅Π½ Π΄Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠΎ Π±Π°ΡΠ°ΡΠ΅)
- ΠΡΠ΅Π΄-ΡΠΎΡΠΊ ΡΠ΅ΡΠ²Π΅Ρ (ΠΏΡΠ΅Π΄-ΡΠΎΡΠΊΠΈΠ½Π³ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ)
- Π‘Π΅ΡΠ²Π΅Ρ ΡΠΎ Π½ΠΈΡΠΊΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ (Π΅Π΄Π½Π° Π½ΠΈΡΠΊΠ° ΠΏΠΎ Π±Π°ΡΠ°ΡΠ΅)
- Π‘Π΅ΡΠ²Π΅Ρ ΡΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅Π΄ Π½ΠΈΡΠΊΠ°
- ΠΠ°ΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°
poll()
- ΠΠ°ΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°
epoll
ΠΠΈΠ΅ Π³ΠΈ ΠΌΠ΅ΡΠΈΠΌΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠΎ Π²ΡΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠΎ HTTP Π±Π°ΡΠ°ΡΠ°. ΠΠΎ, ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Π°Ρ Π²ΠΈΡΠΎΠΊΠΎ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, Π±ΡΠΎΡΠΎΡ Π½Π° Π±Π°ΡΠ°ΡΠ° ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°. ΠΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΡΠΈ ΠΏΠ°ΡΠΈ ΠΈ Π³ΠΎ ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΠΊΠΎΡ.
ΠΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π½Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅
ΠΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ZeroHTTPd
ΠΠ°ΠΆΠ½ΠΎ Π΅ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΈΡΠ΅, ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π΄Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΠΈΡΡΠ° ΠΌΠ°ΡΠΈΠ½Π°. ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΠΠ‘ ΠΈΠΌΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠΎΡΠΎΡΠΈ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ ΡΠ΅ Π½Π°ΡΠΏΡΠ΅Π²Π°ΡΡΠ²Π°Π°Ρ Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ. ΠΠ΅ΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΎΠ΄ ΠΈΠ·Π±ΡΠ°Π½ΠΈΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π΅ Π΅Π΄Π½Π° ΠΎΠ΄ Π½Π°ΡΠ²Π°ΠΆΠ½ΠΈΡΠ΅ ΡΠ΅Π»ΠΈ Π½Π° ΠΎΠ²Π°Π° Π²Π΅ΠΆΠ±Π°. ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ΅ ΡΡΠ°Π½Π΅ ΡΡΠ΅ΡΠ½ΠΎ Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ. ΠΠ°ΡΠΎΠ°, ΠΏΠΎΡΡΠ°Π²ΠΊΠ°ΡΠ° Π½Π° ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠ³ΠΎΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° Π½Π°ΡΠ΄ΠΎΠ±ΡΠΎ.
Π¨ΡΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠ΅ΠΊΠΎΡ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ?
- load.unixism.net: ΠΠ²Π° Π΅ ΠΌΠ΅ΡΡΠΎΡΠΎ ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΡΡΠ°ΠΌΠ΅
ab
, Π°Π»Π°ΡΠΊΠ°ΡΠ° Apache Benchmark. ΠΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ. - nginx.unixism.net: ΠΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ Π΅Π΄Π½Π° ΠΈΠ½ΡΡΠ°Π½ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Nginx ΡΠΎ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ Π±Π°Π»Π°Π½ΡΠ΅Ρ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΠΎΠ΄ ΠΊΠΎΡ Π΄ΠΎΠ°ΡΠ° ab Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ.
- zerohttpd.unixism.net: ΠΠ²Π΄Π΅ Π³ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π½Π° ΡΠ΅Π΄ΡΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, Π΅Π΄Π½Π° ΠΏΠΎ Π΅Π΄Π½Π°.
- redis.unixism.net: ΠΠ²ΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ Π³ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° Π΄Π΅ΠΌΠΎΠ½ΠΎΡ Redis, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ Π·Π°ΡΡΠ²ΡΠ²Π°Π°Ρ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π²ΠΎ ΠΊΠ½ΠΈΠ³Π°ΡΠ° Π½Π° Π³ΠΎΡΡΠΈ ΠΈ Π±ΡΠΎΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ.
Π‘ΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΠΈΡΡΠΎ ΡΠ°Π΄ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ. ΠΠ΄Π΅ΡΠ°ΡΠ° Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅Π½Π°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°. ΠΠΈΠ΄Π΅ΡΡΠΈ ΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ°Π°Ρ Π½Π° ΠΈΡΡ Ρ Π°ΡΠ΄Π²Π΅Ρ, ΠΎΠ²Π° Π΅ ΠΎΡΠ½ΠΎΠ²Π½Π° Π»ΠΈΠ½ΠΈΡΠ° Π·Π° ΡΠΏΠΎΡΠ΅Π΄Π±Π°. ΠΠΎΠ΅ΡΠΎ ΡΠ΅ΡΡ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΈΠ·Π½Π°ΡΠΌΠ΅Π½ΠΈ ΠΎΠ΄ Digital Ocean.
Π¨ΡΠΎ ΠΌΠ΅ΡΠΈΠΌΠ΅?
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΈ. ΠΠΈΠ΅ Π³ΠΈ ΠΎΡΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π²ΠΎ Π΄Π°Π΄Π΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΡΠΎ Π²ΡΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ ΡΠΎ Π±Π°ΡΠ°ΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΠ²ΠΎΠ° Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ: ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠ°ΡΡΠ΅ ΠΎΠ΄ 20 Π½Π° 15 ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΠ΄ ΡΠ΅ΡΡΠΎΡ
Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ Π³ΠΈ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΠ²ΠΎΠ° Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ. y-ΠΎΡΠΊΠ°ΡΠ° Π΅ Π±ΡΠΎΡΠΎΡ Π½Π° Π±Π°ΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π°, Π° x-ΠΎΡΠΊΠ°ΡΠ° Π΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ Π²ΡΡΠΊΠΈ.
ΠΠΎΠ΄ΠΎΠ»Ρ Π΅ ΡΠ°Π±Π΅Π»Π° ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅.
Π±Π°ΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄Π°
ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ
ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½
Π²ΠΈΠ»ΡΡΠΊΠ°
ΠΏΡΠ΅Π΄-Π²ΠΈΠ»ΡΡΠΊΠ°
ΡΡΡΠΈΠΌΠΈΠ½Π³
ΠΏΡΠ΅Π΄-ΡΡΡΠΈΠΌΠΈΠ½Π³
Π²Π½Π°ΡΡΠ΅
Π΅ΠΏΠΎΠ»
20
7
112
2100
1800
2250
1900
2050
50
7
190
2200
1700
2200
2000
2000
100
7
245
2200
1700
2200
2150
2100
200
7
330
2300
1750
2300
2200
2100
300
-
380
2200
1800
2400
2250
2150
400
-
410
2200
1750
2600
2000
2000
500
-
440
2300
1850
2700
1900
2212
600
-
460
2400
1800
2500
1700
2519
700
-
460
2400
1600
2490
1550
2607
800
-
460
2400
1600
2540
1400
2553
900
-
460
2300
1600
2472
1200
2567
1000
-
475
2300
1700
2485
1150
2439
1500
-
490
2400
1550
2620
900
2479
2000
-
350
2400
1400
2396
550
2200
2500
-
280
2100
1300
2453
490
2262
3000
-
280
1900
1250
2502
Π³ΠΎΠ»Π΅ΠΌΠΎ ΡΠΈΡΠ΅ΡΠ΅
2138
5000
-
Π³ΠΎΠ»Π΅ΠΌΠΎ ΡΠΈΡΠ΅ΡΠ΅
1600
1100
2519
-
2235
8000
-
-
1200
Π³ΠΎΠ»Π΅ΠΌΠΎ ΡΠΈΡΠ΅ΡΠ΅
2451
-
2100
10
-
-
Π³ΠΎΠ»Π΅ΠΌΠΎ ΡΠΈΡΠ΅ΡΠ΅
-
2200
-
2200
11
-
-
-
-
2200
-
2122
12
-
-
-
-
970
-
1958
13
-
-
-
-
730
-
1897
14
-
-
-
-
590
-
1466
15
-
-
-
-
532
-
1281
ΠΠ΄ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΎΡ ΠΈ ΡΠ°Π±Π΅Π»Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ Π΄Π΅ΠΊΠ° Π½Π°Π΄ 8000 ΡΠΈΠΌΡΠ»ΡΠ°Π½ΠΈ Π±Π°ΡΠ°ΡΠ° Π½ΠΈ ΠΎΡΡΠ°Π½ΡΠ²Π°Π°Ρ ΡΠ°ΠΌΠΎ Π΄Π²Π°ΡΡΠ° ΠΈΠ³ΡΠ°ΡΠΈ: ΠΏΡΠ΅Π΄-ΡΠΎΡΠΊ ΠΈ Π΅ΠΏΠΎΠ». ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ, ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π°Π½ΠΊΠ΅ΡΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΠ»ΠΎΡΠΎ ΠΎΠ΄ ΡΡΡΠΈΠΌΠΈΠ½Π³. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ΡΠΎ Π΅ Π΄ΠΎΡΡΠΎΠ΅Π½ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½Ρ Π½Π° Π΅ΠΏΠΎΠ», Π΄ΠΎΠΊΠ°Π· Π·Π° ΡΠΎΠ° ΠΊΠΎΠ»ΠΊΡ Π΄ΠΎΠ±ΡΠΎ ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° ΠΠΈΠ½ΡΠΊΡ Π·Π°ΠΊΠ°ΠΆΡΠ²Π° Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ Π½ΠΈΡΠΊΠΈ.
ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° ZeroHTTPd
ΠΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° ZeroHTTPd
ZeroHTTPd β βββ 01_iterative β βββ main.c βββ 02_forking β βββ main.c βββ 03_preforking βββ. 04_ Π½ΠΈΡΠΊΠΈ β βββ main.c βββ 05_prethreading β βββ main.c βββ 06_poll β βββ main.c βββ 07_epoll β βββ βββββββ main.c β βββ ΠΈΠ½Π΄Π΅ΠΊΡ .html β βββ ΡΠΌΠΎΠΊΠΈΠ½Π³ . png βββ ΡΠ°Π±Π»ΠΎΠ½ΠΈ βββ ΠΊΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈ βββ ΠΈΠ½Π΄Π΅ΠΊΡ.html
ΠΠΎΠΊΡΠ°Ρ ΡΠ΅Π΄ΡΠΌΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π·Π° ΡΠΈΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, ΠΈΠΌΠ° ΡΡΡΠ΅ Π΄Π²Π° Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ Π½Π° Π½Π°ΡΠ²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ: ΡΠ°Π²Π½ΠΈ ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ. ΠΡΠ²Π°ΡΠ° ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° index.html ΠΈ ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΎΠ΄ ΠΏΡΠ²Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° ΠΎΠ΄ Π΅ΠΊΡΠ°Π½ΠΎΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°Π²ΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ ΡΠ°ΠΌΡ, Π° ZeroHTTPd ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π° ΡΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠΊΠΎ ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° Π²ΠΎ ΠΏΡΠ΅Π»ΠΈΡΡΡΠ²Π°ΡΠΎΡ ΡΠ΅ ΡΠΎΠ²ΠΏΠ°ΡΠ° ΡΠΎ ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° Π²ΠΎ ΡΠ°Π²Π½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ°, ΡΠΎΠ³Π°Ρ ZeroHTTPd ΡΠ° Π±Π°ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° index.html Π²ΠΎ ΠΎΠ²ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ. Π‘ΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π·Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ. ΠΠΌΠ° ΡΠ°ΠΌΠΎ ΠΏΠΎΡΠ΅ΡΠ½Π° ΡΡΡΠ°Π½ΠΈΡΠ°, Π° Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° βΡΠ°Π±Π»ΠΎΠ½ΠΈ/ΠΊΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈ/index.htmlβ. ZeroHTTPd Π»Π΅ΡΠ½ΠΎ Π΄ΠΎΠ΄Π°Π²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΡΠΈΡΡΠ²Π°ΡΠ΅. ΠΠ΄Π΅ΡΠ°ΡΠ° Π΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°Π°Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π²ΠΎ ΠΎΠ²ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠΎΡΠΈΡΠ°Ρ ZeroHTTPd ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±Π°.
ΠΠ° Π΄Π° Π³ΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΡΠΈΡΠ΅ ΡΠ΅Π΄ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΈ, ΡΡΠ°ΡΡΡΠ²Π°ΡΡΠ΅ make all
ΠΎΠ΄ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ Π½Π° Π½Π°ΡΠ²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ - ΠΈ ΡΠΈΡΠ΅ Π³ΡΠ°Π΄Π±ΠΈ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²Π°Ρ Π²ΠΎ ΠΎΠ²ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ. ΠΠ·Π²ΡΡΠ½ΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π±Π°ΡΠ°Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π·Π° ΡΠ°Π²Π½ΠΈ ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΠΎΠ΄ ΠΊΠΎΡ ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π°Π°Ρ.
Linux API
ΠΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΡΠ΅ Π΄ΠΎΠ±ΡΠΎ ΡΠΏΠ°ΡΠ΅Π½ΠΈ Π²ΠΎ Linux API Π·Π° Π΄Π° Π³ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π²ΠΎ ΠΎΠ²Π°Π° ΡΠ΅ΡΠΈΡΠ° Π½Π° Π½Π°ΠΏΠΈΡΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π°ΠΌ Π΄Π° ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΎΠ²Π°Π° ΡΠ΅ΠΌΠ°; ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΠ°ΠΊΠΎ ΡΠ΅ Π΄ΠΎΠΏΡΠ΅ΠΌΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π½Π° Linux API, Π½Π°ΡΠΈΠΎΡ ΡΠΎΠΊΡΡ ΡΠ΅ Π±ΠΈΠ΄Π΅ ΠΏΡΠ²Π΅Π½ΡΡΠ²Π΅Π½ΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅, Π½ΠΈΡΠΊΠΈΡΠ΅, Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅ ΠΈ ΠΌΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΡΡΠ΅ΠΊ. ΠΠΎΠΊΡΠ°Ρ ΠΊΠ½ΠΈΠ³ΠΈΡΠ΅ ΠΈ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π·Π° Linux API, ΠΏΡΠ΅ΠΏΠΎΡΠ°ΡΡΠ²Π°ΠΌ ΠΈ ΡΠΈΡΠ°ΡΠ΅ ΠΌΠ°Π½Π° Π·Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°.
ΠΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ ΠΈ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ
ΠΠ΄Π½Π° Π·Π°Π±Π΅Π»Π΅ΡΠΊΠ° Π·Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡΠ°. Π’Π΅ΠΎΡΠ΅ΡΡΠΊΠΈ, Π½Π΅ΠΌΠ° Π²ΡΡΠΊΠ° ΠΌΠ΅ΡΡ Π½ΠΈΠ². ΠΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π²Π΅Π±-ΡΡΠ»ΡΠ³Π° ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ½ΠΎΠ³Ρ Π΄ΠΎΠ±ΡΠΎ, ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π½ΠΎ Π²ΠΎΠΎΠΏΡΡΠΎ Π½Π΅ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°. Π‘Π»ΠΈΡΠ½ΠΎ Π½Π° ΡΠΎΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎ ΡΠ»Π°Π±Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΊΠΎΡΠ° ΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π·Π° Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈ, Π½ΠΎ ΡΠ΅ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π·Π° Π΄Π΅ΡΠ΅ΡΠΈΡΠΈ Π·Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ ΡΠΎ Π΄Π΅ΡΠ΅ΡΠΈΡΠΈ ΠΈΠ»ΡΠ°Π΄ΠΈ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ°ΡΠ° Π½Π° Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ ΠΈ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»ΠΈΠ²ΠΎΡΡ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΌΠΎΡΠ½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ°. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΎ ΠΈ Π½Π° ΡΠΎΡ Π½Π°ΡΠΈΠ½ Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π°Π°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ, Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΡΡΠΈ Π³ΠΈ ΡΡΠΎΡΠΎΡΠΈΡΠ΅.
CPU ΠΈ I/O Π·Π°Π΄Π°ΡΠΈ
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΏΠΎΡΡΠΎΡΠ°Ρ Π΄Π²Π° ΠΌΠΎΠΆΠ½ΠΈ ΡΠΈΠΏΠ° Π½Π° Π·Π°Π΄Π°ΡΠΈ: Π·Π° Π²Π»Π΅Π·/ΠΈΠ·Π»Π΅Π· ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡ. ΠΡΠΈΠΌΠ°ΡΠ΅ Π±Π°ΡΠ°ΡΠ° ΠΏΡΠ΅ΠΊΡ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ (ΠΌΡΠ΅ΠΆΠ½Π° I/O), ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ°ΡΠ΅ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ (ΠΌΡΠ΅ΠΆΠ½Π° ΠΈ Π΄ΠΈΡΠΊ Π/Π), ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΠΌΡΠ΅ΠΆΠ° ΠΈ Π΄ΠΈΡΠΊ I/O) ΡΠ΅ ΡΠΈΡΠ΅ I/O Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. ΠΠ΅ΠΊΠΎΠΈ Π±Π°ΡΠ°ΡΠ° Π·Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΌΠ°Π»ΠΊΡ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ (ΡΠΎΡΡΠΈΡΠ°ΡΠ΅, ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ ΠΌΠΈΠ»ΠΈΠΎΠ½ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΈΡΠ½.). ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ ΠΌΠΎΠΆΠ΅Π½ Π²Π»Π΅Π·/ΠΈΠ·Π»Π΅Π·, Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΡΠ΅ΡΠΊΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΎ ΠΏΠΎΠ»Π½ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅Ρ. ΠΠΎΠ³Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π΄Π΅ΠΊΠ° Π½Π΅ΠΊΠΎΡΠ° I/O Π·Π°Π΄Π°ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ ΠΌΠ½ΠΎΠ³Ρ ΠΏΡΠΎΡΠ΅ΡΠΎΡ, ΡΠΎΠ° Π΅ Π½Π°ΡΠ²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ Π·Π½Π°ΠΊ Π·Π° Π»ΠΎΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. ΠΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ ΡΠ΅ ΡΡΠΎΡΠ°Ρ Π½Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠ΅ΡΡΠ»ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ - ΠΈ ΡΠΎΠ° Π½Π΅ Π΅ ΡΠΎΡΠ΅ΠΌΠ° ΠΊΠΎΡΠΈΡΠ½ΠΎ. ΠΠΊΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ»ΠΈΠΊΠΈ, ΠΊΠΎΠ½Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° Π°ΡΠ΄ΠΈΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΎ ΡΡΠ΅ΡΠ΅, ΡΠΎΠ³Π°Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π±Π°ΡΠ° ΠΌΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΎΡ. ΠΠΎ, Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠ° Π½Π΅ Π΅ ΡΠ»ΡΡΠ°Ρ.
ΠΠΎΠ·Π½Π°ΡΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ
ΠΠ΅Π» I: ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΠ΅Π» II. Π€ΠΎΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΠ΅Π» III. ΠΡΠ΅Π΄-ΡΠΎΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΠ΅Π» IV. Π‘Π΅ΡΠ²Π΅ΡΠΈ ΡΠΎ Π½ΠΈΡΠΊΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΠ΅Π» V. Π‘Π΅ΡΠ²Π΅ΡΠΈ ΡΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π½Π°Π²ΠΎΡ ΠΠ΅Π» VI. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° ΠΠΎΠ» ΠΠ΅Π» VII. Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Π΅ΠΏΠΎΠ»
ΠΠ·Π²ΠΎΡ: www.habr.com