Π£Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅ ΠΈ ΡΡΠ΅Π΄ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ HTTP Π·Π°Π΅ΠΌΠ° Π»ΡΠ²ΡΠΊΠΈΡ Π΄ΡΠ». ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΡΡΠ°Π²Π°Ρ Π½ΡΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Ρ ΠΎΡΠ° ΠΎΠ±ΡΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ. Π Π°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° (Dev) ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ (Ops) ΡΠ°ΠΌΠΎ Π²Π»ΠΎΡΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°. ΠΠΎ Ρ Π²ΡΠ·Ρ ΠΎΠ΄Π° Π½Π° DevOps ΠΊΡΠ»ΡΡΡΠ°ΡΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΡΠ°Π²Π°Ρ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΠΊΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° ΡΡΡ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Ρ Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. Π’ΠΎΠ²Π° Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΡΠ΅ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΈΠ»ΠΈ Π΄Π΅ΡΠ΅ΡΠΊΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π² ΡΠ΅Π± ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π° ΡΠ΅Π·ΠΈ Π² Π΄ΡΡΠ³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° Π±Π°Π»Π°Π½ΡΡΠΎΡΠΈ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠ»ΠΈ ΡΡΡΠ²ΡΡΠΈ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠ°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΡΡΠ΅Π΄Π° Ρ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π΅ΡΠ΅ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΡΠΊΠ°Π»ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΠ° Π½Π° Π²Π°ΡΠΈΡΠ΅ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΈΡΠ° ΡΠ°Π·ΠΈ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΡΡΠ°ΡΠΈΠΈ Π² ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° Π²ΡΠΏΡΠΎΡΠΈ ΠΎΡ ΠΌΠ»Π°Π΄ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΡΠ°Π½Π°Ρ Π΄ΠΎΠ±ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ°Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΈ. ΠΠ΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΡΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ°Ρ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈΡΠ΅ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Linux ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π±Π΅Π· Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΠΏΠΈΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΡΠ°Π·ΠΈ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°ΠΌ ΡΠ΅Π± Π±Π°Π·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ Π½Π°ΡΡΠΎΠ»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠΎ Π±ΡΠ°ΡΠ·ΡΡ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. Π’ΠΎΠ·ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ Linux ΠΈΠ»ΠΈ Unix ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Ρ Π·Π° Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
Linux Π΅ ΡΡΡΠ²ΡΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡΡ Π½Π° ΡΠ°Π·ΠΈ ΠΠ‘. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΊΠ°Π·Π²Π°ΠΌ βLinuxβ, ΠΏΡΠ΅Π· ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΠΌ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π²ΡΠΈΡΠΊΠΈ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° Π½Π΅ ΡΡΠΌ ΡΠ΅ΡΡΠ²Π°Π» ΠΏΡΠΈΠ΄ΡΡΠΆΠ°Π²Π°ΡΠΈΡ ΠΊΠΎΠ΄ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. Π’Π°ΠΊΠ° ΡΠ΅, Π°ΠΊΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΎΡ FreeBSD ΠΈΠ»ΠΈ OpenBSD, Π²Π°ΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π°ΡΠΈΡΠ°Ρ. ΠΠΎΠ³Π°ΡΠΎ ΠΎΠΏΠΈΡΠ°ΠΌ Π½Π΅ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎ Π·Π° Linux, Π³ΠΎ ΠΏΠΎΡΠΎΡΠ²Π°ΠΌ.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΎΠ²Π° Π·Π½Π°Π½ΠΈΠ΅, Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ Π½ΡΠ»Π°ΡΠ° ΠΈ ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ΄Π΅Π°Π»Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ, Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅ Π΅ Π΄Π° Π½Π΅ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°. ΠΠΊΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ Π½ΠΎΠ² ΡΠ΅Π± ΡΡΡΠ²ΡΡ Π½Π° C ΠΈΠ»ΠΈ C++ Π·Π° Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π°ΡΠ°ΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ Π²ΠΈ Π΄Π΅Π½ Π½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠΎΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±Π°ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΏΡΠΈ ΠΈΠ·Π±ΠΎΡΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. Π©Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ, ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π½ΠΈΡΠΊΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ°ΠΊΠΈΠ²Π°, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ. Π©Π΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΈ ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π·Π°ΡΠΎ Nginx ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΎΡ Apache httpd, Π·Π°ΡΠΎ Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° Tornado Python ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° Django Python ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ZeroHTTPd: ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ±ΡΡΠΆΠ΄Π°ΠΌΠ΅ ΡΠ΅ΠΎΡΠΈΡΡΠ° Π½Π°Π΄ΡΠ»Π³ΠΎ ΠΈ Π½Π°ΡΠΈΡΠΎΠΊΠΎ, Π½ΡΠΌΠ° Π½ΠΈΡΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ ΠΎΡ ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄, ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΡ ΠΈ ΡΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π΅Π΄Π½Π° Ρ Π΄ΡΡΠ³Π°. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄. ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡ ZeroHTTPd, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»: Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π½ΠΈΡΠΊΠΈ ΠΈ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ. ΠΠ΅ΠΊΠ° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΡΡΠ²ΡΡΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ Ρ Π΄ΡΡΠ³. ZeroHTTPd Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» C. ΠΠ°Π·ΠΈΡΠ°Π½ΠΈΡΡ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ ΡΡΡΠ²ΡΡ Π²ΠΊΠ»ΡΡΠ²Π°
Π ΠΊΠΎΠ΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΏΡΠΎΡΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡ Π² Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄Π° ΠΊΠΎΠ΄, ZeroHTTPd ΡΡΡΠΎ Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΡΠ°ΠΌΠΊΠ° Π·Π° ΡΠ΅Π± ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΌΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, Π½ΠΎ Π΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π° ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΈ "Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ" ΡΡΡΠ°Π½ΠΈΡΠΈ. Π’ΡΡΠ±Π²Π° Π΄Π° ΠΊΠ°ΠΆΠ°, ΡΠ΅ ZeroHTTPd Π΅ Π΄ΠΎΠ±ΡΡ Π·Π° Π½Π°ΡΡΠ°Π²Π°Π½Π΅ ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ Linux ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ΅Π± ΡΡΠ»ΡΠ³ΠΈ ΡΠ°ΠΊΠ°Ρ Π·Π°ΡΠ²ΠΊΠΈ, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ Π³ΠΈ ΠΈ Π³ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ. Π’ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ZeroHTTPd. Π’ΠΎΠ²Π° Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΡΠ΅Π½Π΅, Π° Π½Π΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ. ΠΠ΅ Π΅ Π΄ΠΎΠ±ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π΅ ΠΌΠ°Π»ΠΊΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡ
Π²Π°Π»ΠΈ Ρ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ (ΠΎ, Π΄Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
strcpy
) ΠΈΠ»ΠΈ Ρ
ΠΈΡΡΠΈΡΠ΅ ΡΡΠΈΠΊΠΎΠ²Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° C. ΠΠΎ ΡΠ΅ Π½Π°Π΄ΡΠ²Π°ΠΌ, ΡΠ΅ Π²ΡΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ Π΄ΠΎΠ±ΡΠ΅.
ZeroHTTPd Π½Π°ΡΠ°Π»Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°. ΠΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈ
Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ Π΄ΠΎ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π’Π΅ ΠΈΠΌΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠ΅ΡΠΎΠ²Π΅ ΠΈ Ρ.Π½. Π’Π°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ βΠΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈβ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΎΡΡΠ°Π²ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ΄ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π°. ΠΠ½ΠΈΠ³Π°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π·Π°ΠΏΠΈΡΠΈ, ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΏΠΎ-ΡΠ°Π½ΠΎ. Π Π΄ΠΎΠ»Π½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΈΠΌΠ° ΠΈ Π±ΡΠΎΡΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈΡΠ΅.
Π£Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ "ΠΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈ" ZeroHTTPd
ΠΡΠΎΡΡΡΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠ½ΠΈΠ³Π°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² Redis. ΠΠ° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Ρ Redis ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ, ΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π²ΡΠ½ΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠ΅ ΡΡΠΌ Π³ΠΎΠ»ΡΠΌ ΡΠ΅Π½ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° homebrew ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΈ Π΄ΠΎΠ±ΡΠ΅ ΡΠ΅ΡΡΠ²Π°Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎ ΡΠ΅Π»ΡΠ° Π½Π° ZeroHTTPd Π΅ Π΄Π° ΠΈΠ·ΡΠ»Π΅Π΄Π²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Linux ΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ΡΠΎ Π½Π° HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΈΠΌΠ° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π²ΡΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π’ΡΡΠ±Π²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Ρ Redis Π²ΡΠ² Π²ΡΡΠΊΠ° ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ. Π Π½ΡΠΊΠΎΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, Π² Π΄ΡΡΠ³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ½ΡΠ½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° Redis Π½ΡΠΌΠ° Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ». ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π½Π°ΡΠΈΡΡ ΠΌΠ°Π»ΡΠΊ Redis ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡ; ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ ΠΊΡΠΌ ΠΌΠ°ΡΠΈΠ²). ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ Redis Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΅Π»Π΅Π³Π°Π½ΡΠ΅Π½ ΠΈ ΠΏΡΠΎΡΡ. ΠΠΎΡΠΈ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ. Π‘Π°ΠΌΠΈΡΡ ΡΠ°ΠΊΡ, ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ Π²ΡΡΡΠΈ ΡΡΠ»Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π² ΠΎΠΊΠΎΠ»ΠΎ ΡΡΠΎ ΡΠ΅Π΄Π° ΠΊΠΎΠ΄, ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±ΡΠ΅ Π΅ ΠΎΠ±ΠΌΠΈΡΠ»Π΅Π½.
Π‘Π»Π΅Π΄Π½Π°ΡΠ° ΡΠΈΠ³ΡΡΠ° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ (Π±ΡΠ°ΡΠ·ΡΡΡΡ) ΠΏΠΎΠΈΡΠΊΠ° /guestbookURL
.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈ
ΠΠΎΠ³Π°ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½Π°, ΠΈΠΌΠ° Π΅Π΄Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΊΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΡΡΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ Redis. Π¨Π°Π±Π»ΠΎΠ½Π½ΠΈΡΡ ΡΠ°ΠΉΠ» ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ HTML ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π·Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° Π΅ΠΊΡΠ°Π½Π½Π°ΡΠ° ΡΠ½ΠΈΠΌΠΊΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅. ΠΠΌΠ° ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ: ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π±ΡΠΎΡΡ Π½Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ. ΠΠΈΠ΅ Π³ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΎΡ Redis, Π²ΠΌΡΠΊΠ²Π°ΠΌΠ΅ Π³ΠΈ Π² ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΌΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅. Π’ΡΠ΅ΡΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Redis ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π±Π΅Π³Π½Π°ΡΠΎ, Π·Π°ΡΠΎΡΠΎ Redis Π²ΡΡΡΠ° Π½ΠΎΠ²Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΠΊΠ»ΡΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ. ΠΠ° Π½Π°ΡΠΈΡ ΡΡΡΠ²ΡΡ ΠΎΠ±Π°ΡΠ΅, ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° ΡΡΠ±ΠΈΡΠΈΡ, ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΡΠ° Π΄ΠΎΠ±ΡΡ ΡΠ΅ΡΡ Π·Π° ΡΡΠ΅Π±Π½ΠΈ ΡΠ΅Π»ΠΈ. Π’Π°ΠΊΠ° ΡΠ΅ ΠΎΡΡ Π²ΡΡΠ»ΡΠΌΠ΅ Π²ΡΡΠ½Π°ΡΠ°ΡΠ° ΠΎΡ Redis ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π±ΡΠΎΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ ΠΈ Ρ ΠΎΡΠΏΡΠ°Π²ΡΠΌΠ΅ Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅.
Π‘ΡΡΠ²ΡΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ ZeroHTTPd
ΠΠΈΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ ΡΠ΅Π΄Π΅ΠΌ Π²Π΅ΡΡΠΈΠΈ Π½Π° ZeroHTTPd ΡΡΡ ΡΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ:
- ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½
- Fork ΡΡΡΠ²ΡΡ (Π΅Π΄ΠΈΠ½ Π΄ΡΡΠ΅ΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π·Π°ΡΠ²ΠΊΠ°)
- Pre-fork ΡΡΡΠ²ΡΡ (ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ)
- Π‘ΡΡΠ²ΡΡ Ρ Π½ΠΈΡΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (Π΅Π΄Π½Π° Π½ΠΈΡΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ°)
- Π‘ΡΡΠ²ΡΡ Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠ°
- ΠΠ°Π·ΠΈΡΠ°Π½ Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°
poll()
- ΠΠ°Π·ΠΈΡΠ°Π½ Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°
epoll
ΠΠΈΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π²ΡΡΠΊΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΊΠ°ΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΡΡΠ²ΡΡΠ° Ρ HTTP Π·Π°ΡΠ²ΠΊΠΈ. ΠΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°Ρ ΡΠΈΠ»Π½ΠΎ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, Π±ΡΠΎΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°. Π’Π΅ΡΡΠ²Π°ΠΌΠ΅ ΡΡΠΈ ΠΏΡΡΠΈ ΠΈ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΡΡΠ΅Π΄Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ.
ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° Π½Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ ZeroHTTPd
ΠΠ°ΠΆΠ½ΠΎ Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅, Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π΄Π° Π½Π΅ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΠΌΠ°ΡΠΈΠ½Π°. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°Π»Π°Π³Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ Π·Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΠ°Ρ Π·Π° CPU. ΠΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° Π²ΡΡΠΊΠ° ΠΎΡ ΠΈΠ·Π±ΡΠ°Π½ΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π΅ Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΡΠ΅Π»ΠΈ Π½Π° ΡΠΎΠ²Π° ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅. ΠΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ΅ ΡΡΠ°Π½Π΅ ΠΏΠ°Π³ΡΠ±Π½ΠΎ Π·Π° ΠΏΡΠΎΡΠ΅ΡΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° ΡΠ½ΠΈΠΌΠΊΠ°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅.
ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΡΡΠ²ΡΡΠΈ?
- load.unixism.net: Π’ΡΠΊ ΡΠ°Π±ΠΎΡΠΈΠΌ
ab
, ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Apache Benchmark. Π’ΠΎΠΉ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ. - nginx.unixism.net: ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΅Π΄Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, Nginx ΡΡΡΠ²ΡΡΡΡ Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΡΠΎ Π±Π°Π»Π°Π½ΡΡΠΎΡ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΈΠ΄Π²Π°Ρ ΠΎΡ ab ΠΊΡΠΌ Π½Π°ΡΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ.
- zerohttpd.unixism.net: Π’ΡΠΊ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π½Π° ΡΠ΅Π΄Π΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, Π΅Π΄Π½Π° ΠΏΠΎ Π΅Π΄Π½Π°.
- redis.unixism.net: Π’ΠΎΠ·ΠΈ ΡΡΡΠ²ΡΡ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π΄Π΅ΠΌΠΎΠ½Π° Redis, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΠ½ΠΈΠ³Π°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ ΠΈ Π±ΡΠΎΡΡΠΈ Π½Π° ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»ΠΈ.
ΠΡΠΈΡΠΊΠΈ ΡΡΡΠ²ΡΡΠΈ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΎ ΡΠ΄ΡΠΎ. ΠΠ΄Π΅ΡΡΠ° Π΅ Π΄Π° ΡΠ΅ ΠΎΡΠ΅Π½ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° Π²ΡΡΠΊΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ΅ ΡΠ΅ΡΡΠ²Π°Ρ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ Ρ Π°ΡΠ΄ΡΠ΅Ρ, ΡΠΎΠ²Π° Π΅ Π±Π°Π·ΠΎΠ²Π° Π»ΠΈΠ½ΠΈΡ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅. ΠΠΎΡΡΠ° ΡΠ΅ΡΡΠΎΠ²Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ, Π½Π°Π΅ΡΠΈ ΠΎΡ Digital Ocean.
ΠΠ°ΠΊΠ²ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ²Π°ΠΌΠ΅?
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΌΠ΅ΡΠ²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. ΠΠΈΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π²ΡΡΠΊΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π² Π΄Π°Π΄Π΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΊΠ°ΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΡΡΠ²ΡΡΠΈΡΠ΅ ΡΡΡ Π·Π°ΡΠ²ΠΊΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ: Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π°ΡΠ°ΡΡΠ²Π° ΠΎΡ 20 Π΄ΠΎ 15 000 Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ ΡΠ΅ΡΡΠ°
Π‘Π»Π΅Π΄Π½Π°ΡΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ. ΠΡΡΠ° y Π΅ Π±ΡΠΎΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°, ΠΎΡΡΠ° x Π΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΈΡΠ΅ Π²ΡΡΠ·ΠΊΠΈ.
ΠΠΎ-Π΄ΠΎΠ»Ρ ΠΈΠΌΠ° ΡΠ°Π±Π»ΠΈΡΠ° Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅.
Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°
ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΡΠΌ
ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½
Π²ΠΈΠ»ΠΈΡΠ°
ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΠΈΠ»ΠΈΡΠ°
ΡΡΡΠΈΠΉΠΌΠΈΠ½Π³
ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΡΠΎΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅
ΠΠ½ΠΊΠ΅ΡΠ°
epoll
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 000
-
-
Π³ΠΎΠ»ΡΠΌΠΎ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅
-
2200
-
2200
11 000
-
-
-
-
2200
-
2122
12 000
-
-
-
-
970
-
1958
13 000
-
-
-
-
730
-
1897
14 000
-
-
-
-
590
-
1466
15 000
-
-
-
-
532
-
1281
ΠΡ Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ° ΠΈ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ, ΡΠ΅ Π½Π°Π΄ 8000 Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΄Π²Π°ΠΌΠ° ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΠΈΠ³ΡΠ°ΡΠΈ: pre-fork ΠΈ epoll. Π‘ Π½Π°ΡΠ°ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΡΡΡΠ²ΡΡΡΡ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π°Π½ΠΊΠ΅ΡΠΈ, ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΏΠΎ-Π»ΠΎΡΠΎ ΠΎΡ ΡΡΡΠΈΠΉΠΌΠΈΠ½Π³. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π·Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠΈ Π΅ Π΄ΠΎΡΡΠΎΠ΅Π½ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½Ρ Π½Π° epoll, Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΠ²ΠΎ Π·Π° ΡΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±ΡΠ΅ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΏΠ»Π°Π½ΠΈΡΠ° Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π½ΠΈΡΠΊΠΈ.
ZeroHTTPd ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄
ZeroHTTPd ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄
ZeroHTTPd β βββ 01_iterative β βββ main.c βββ 02_forking β βββ main.c βββ 03_preforking β βββ main.c βββ 04_ threading β βββ main.c ββββ 05_prethreading β βββ main.c βββ 06_poll β βββ main.c βββ 07_epoll β βββ main.c βββ Makefile βββ public β βββ index .html β βββ tux . png βββ ΡΠ°Π±Π»ΠΎΠ½ΠΈ βββ ΠΊΠ½ΠΈΠ³Π° Π·Π° Π³ΠΎΡΡΠΈ βββ index.html
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠ΅Π΄Π΅ΠΌΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, ΠΈΠΌΠ° ΠΎΡΠ΅ Π΄Π²Π΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΎΡ Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ: ΠΏΡΠ±Π»ΠΈΡΠ½Π° ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ. ΠΡΡΠ²ΠΈΡΡ ΡΡΠ΄ΡΡΠΆΠ° ΡΠ°ΠΉΠ»Π° index.html ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΏΡΡΠ²Π°ΡΠ° Π΅ΠΊΡΠ°Π½Π½Π° ΡΠ½ΠΈΠΌΠΊΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ ΡΠ°ΠΌ ΠΈ ZeroHTTPd ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° ΡΠ΅Π·ΠΈ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠΊΠΎ ΠΏΡΡΡΡ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° ΡΡΠ²ΠΏΠ°Π΄Π° Ρ ΠΏΡΡΡ Π² ΠΏΡΠ±Π»ΠΈΡΠ½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ°, ΡΠΎΠ³Π°Π²Π° ZeroHTTPd ΡΡΡΡΠΈ ΡΠ°ΠΉΠ»Π° index.html Π² ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. Π‘ΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ. Π’ΠΎΠΉ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π½Π°ΡΠ°Π»Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΈ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ ΠΌΡ Π΅ Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΡΠ°ΠΉΠ»Π° 'templates/guestbook/index.html'. ZeroHTTPd Π»Π΅ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅. ΠΠ΄Π΅ΡΡΠ° Π΅, ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΈ ΠΊΡΠΌ ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈ Π΄Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π°Ρ ZeroHTTPd ΡΠΏΠΎΡΠ΅Π΄ Π½ΡΠΆΠ΄ΠΈΡΠ΅.
ΠΠ° Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΠ΅Π΄Π΅ΠΌ ΡΡΡΠ²ΡΡΠ°, ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ make all
ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ΠΎΡ Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ - ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π² ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. ΠΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΡΡΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ°, ΠΎΡ ΠΊΠΎΡΡΠΎ ΡΠ° ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ.
Linux API
ΠΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΡΠ΅ Π΄ΠΎΠ±ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ Linux API, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π² ΡΠ°Π·ΠΈ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΡΡΠ°ΡΠΈΠΈ. ΠΡΠ΅ ΠΏΠ°ΠΊ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ°; ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ΅ ΡΠ΅ Π΄ΠΎΠΊΠΎΡΠ½Π΅ΠΌ Π΄ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ API Π½Π° Linux, ΡΠΎΠΊΡΡΡΡ Π½ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π²ΡΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅, Π½ΠΈΡΠΊΠΈΡΠ΅, ΡΡΠ±ΠΈΡΠΈΡΡΠ° ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ΅ΠΊ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΊΠ½ΠΈΠ³ΠΈΡΠ΅ ΠΈ ΡΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° Linux API, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ ΡΡΡΠΎ Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅ ΠΌΠ°Π½Π° Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ
ΠΠ΄Π½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΡΠΊΠ°Π»ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΠ°. Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ Π½ΡΠΌΠ° Π²ΡΡΠ·ΠΊΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΡΠ΅Π± ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅, Ρ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ΅Π°ΠΊΡΠΈΡ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π½ΠΎ ΡΡ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°. ΠΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΡΠ»Π°Π±ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠ½Π΅ΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Π·Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ, Π½ΠΎ ΡΠΎ ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ° Ρ Π΄Π΅ΡΠ΅ΡΠΊΠΈ, Π·Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ Ρ Π΄Π΅ΡΠ΅ΡΠΊΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡΠ° ΠΎΡ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡ ΠΎΠ±Π°ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡΠ½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ. ΠΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΏΠ΅ΡΡΠ΅Π»ΠΈΠ²ΠΎ ΠΈ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Ρ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ°, Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΠΉΠΊΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅.
CPU ΠΈ I/O Π·Π°Π΄Π°ΡΠΈ
Π Π½Π°ΠΊΡΠ°Ρ, Π² ΠΊΠΎΠΌΠΏΡΡΡΠΈΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ° Π΄Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΡΠΈΠΏΠ° Π·Π°Π΄Π°ΡΠΈ: Π·Π° I/O ΠΈ CPU. ΠΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΏΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ (ΠΌΡΠ΅ΠΆΠΎΠ² I/O), ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (ΠΌΡΠ΅ΠΆΠΎΠ² ΠΈ Π΄ΠΈΡΠΊΠΎΠ² I/O), ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Ρ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ (ΠΌΡΠ΅ΠΆΠΎΠ² ΠΈ Π΄ΠΈΡΠΊΠΎΠ² I/O) ΡΠ° Π²ΡΠΈΡΠΊΠΈ I/O Π΄Π΅ΠΉΠ½ΠΎΡΡΠΈ. ΠΡΠΊΠΎΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Ρ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° (ΡΠΎΡΡΠΈΡΠ°Π½Π΅, ΠΎΡΡΠ΅Π΄Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΈ Ρ.Π½.). ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ Π²ΡΠ·ΠΌΠΎΠΆΠ΅Π½ I/O ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΡΡ ΡΡΠ΄ΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ ΠΏΡΠ»Π΅Π½ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅Ρ. ΠΠΎΠ³Π°ΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ Π½ΡΠΊΠ°ΠΊΠ²Π° I/O Π·Π°Π΄Π°ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ CPU, ΡΠΎΠ²Π° Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΅ Π·Π½Π°ΠΊ Π·Π° Π»ΠΎΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° ΡΠ΅ Π³ΡΠ±ΡΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° - ΠΈ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. ΠΠΊΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ΡΠΎ ΠΊΠ°ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π°ΡΠ΄ΠΈΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠ³Π°Π²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΌΠΎΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°. ΠΠΎ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΠ°ΠΊΠ°.
ΠΠ°ΡΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΡΡΠ²ΡΡΠ½ΠΈΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ
Π§Π°ΡΡ I: ΠΡΠ΅ΡΠ°ΡΠΈΠ²Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π§Π°ΡΡ II. Fork ΡΡΡΠ²ΡΡΠΈ Π§Π°ΡΡ III. Pre-fork ΡΡΡΠ²ΡΡΠΈ Π§Π°ΡΡ IV. Π‘ΡΡΠ²ΡΡΠΈ Ρ Π½ΠΈΡΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π§Π°ΡΡ V. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ Π§Π°ΡΡ VI. ΠΠ°Π·ΠΈΡΠ°Π½Π° Π½Π° Pol Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π§Π°ΡΡ VII. Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° epoll Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com