ΠΠ° Π½Π°Ρ Π·Π°Ρ ΡΠ΅Π², Π₯Π°Π±Ρ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΎ ΡΠ²ΠΎΡΠΈΡΡΠ΅ ΠΈ ΡΠ° Π·Π°Π΄ΠΎΠ²ΠΎΡΡΡΠ²ΠΎΠΌ ΡΡΠ°Π²ΡΠ°ΠΌΠΎ Ρ ΡΠ΅Π³Π° ΠΏΡΠ²Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ. ΠΡΠ΅ΡΠΏΠ»Π°ΡΠΈΡΠΈ ΡΠ΅!
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ΅ Π»Π°ΠΊ. ΠΠ°ΡΡΠΎ ΠΌΠΈ Π±Π°Π½ΠΊΠ΅ ΠΏΠ»Π°ΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΡΠ° Π΄Π° ΡΠ°Π΄ΠΈΠΌ Ρ ΠΎΠ²ΠΎΡ ΠΎΠ±Π»Π°ΡΡΠΈ, Π° ΡΠ²Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π²Π»Π°Π΄Π° ΠΎΠ²Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ Π·Π° ΡΠ°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ°ΡΠΈ?
ΠΠΊΠΎ ΡΡΠΌΡΠ°ΡΠ΅ Π΄Π° ΡΠ΅ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π½Π°ΡΡΠΈΡΠΈ ΡΠ°ΠΊΠΎ Π±ΡΠ·ΠΎ, ΠΏΡΠ΅Π΄Π»Π°ΠΆΠ΅ΠΌ Π΄Π° ΠΈΡΠΏΡΠΎΠ±Π°ΡΠ΅ ΡΠ°ΠΌΠΈ. ΠΠ°ΠΈΠΌΠ΅, ΡΠ°Π²Π»Π°Π΄Π°Π²ΡΠΈ ΠΎΠ²Π°Ρ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π», ΠΌΠΎΡΠΈ ΡΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΡ. Π’ΠΎ ΠΌΠΎΠ³Ρ Π΄Π° Π³Π°ΡΠ°Π½ΡΡΡΠ΅ΠΌ, ΠΏΠΎΡΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²ΠΎ ΠΈΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΎΠ²Π΄Π΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈ ΠΊΠΎΡΠΎΠΌ ΡΡΠΈΠΌ Π½Π°ΡΠ΅ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ΅ Π΄Π° ΡΠ°Π΄Π΅ ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-ΠΎΠΌ. ΠΠΎ ΡΠ΅ΠΌΡ ΡΠ΅ ΠΎΠ²Π°Ρ Π²ΠΎΠ΄ΠΈΡ ΡΠ°Π·Π»ΠΈΠΊΡΡΠ΅ ΠΎΠ΄ Π΄ΡΡΠ³ΠΈΡ
? Π£ ΡΡΠ²Π°ΡΠΈ, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ²Π°ΡΠΈ. ΠΠ°ΠΊΠ»Π΅, Π²Π΅ΡΠΈΠ½Π° ΠΎΠ²ΠΈΡ
ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° ΠΏΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°ΡΡΠ΅ΡΠ΅ΠΌ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡ
ΡΡΠ²Π°ΡΠΈ - ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΠ° ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΠΊΡΠ±Π΅ΡΡΠ» ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΡΡΠΎΡΠΈ ΠΎΠ²ΠΈΡ
ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΡ Π΄Π° ΡΡ ΡΠΈΡ
ΠΎΠ²ΠΈ ΡΠΈΡΠ°ΠΎΡΠΈ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° ΡΠ°Π·Π²ΠΎΡΠ΅ΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° ΠΈ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°. ΠΡΠΈ ΡΠ΅ΠΌΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΡΠ΅ΠΌ. ΠΡΠ²ΠΎ ΡΠ΅ΠΌΠΎ ΠΏΡΠΈΡΠ°ΡΠΈ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° Π½Π° ΡΠ°ΡΡΠ½Π°ΡΡ. ΠΠ°ΡΠΈΠΌ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° ΡΠ²Π°ΠΊΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ. Π Π½Π°ΠΊΠΎΠ½ ΡΠΎΠ³Π° ΡΠ΅ΠΌΠΎ ΡΠ΅ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-ΠΎΠΌ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΠΊΠΎΡΠΈΠΌ ΡΠΏΡΠ°Π²ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ.
ΠΠ²Π°Ρ ΠΏΡΠΈΡΡΡΠΏ, ΡΠ° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½ΠΈΠΌ ΠΏΡΠΈΡΡΡΠΏΠΎΠΌ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ, Π΄Π°ΡΠ΅ Π΄ΡΠ±ΠΈΠ½Ρ ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΠ° ΠΎΠ½ΠΎΠ³Π° ΡΡΠΎ ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° ΡΡΠΎ ΡΠ΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΎΠ²Π΅ΠΊΡ Π΄Π° Π±ΠΈ ΡΠ°Π·ΡΠΌΠ΅ΠΎ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅ Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ. ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ΅ ΡΠ²Π°ΠΊΠ°ΠΊΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ°, ΠΏΠΎΠ΄ ΡΡΠ»ΠΎΠ²ΠΎΠΌ Π΄Π° ΠΎΠ½ΠΈ ΠΊΠΎΡΠΈ ΠΆΠ΅Π»Π΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΠ΅ Π·Π½Π°ΡΡ Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ.
Π‘Π°Π΄Π°, Π±Π΅Π· Π΄Π°ΡΠ΅Π³ ΠΎΠ΄Π»Π°Π³Π°ΡΠ°, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΡΠ½Π΅ΠΌΠΎ ΠΈ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠΎ ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ ΡΠ° ΠΊΠΎΡΠΎΠΌ ΡΠ΅ΠΌΠΎ ΡΠ°Π΄ΠΈΡΠΈ.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π°
ΠΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΎΠ±Π°Π²ΡΠ°ΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡΡ. ΠΠ°ΠΎ ΡΠ»Π°Π· ΡΠ·ΠΈΠΌΠ° ΡΠ΅Π΄Π½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ, Π½Π°ΠΊΠΎΠ½ ΡΠ΅Π³Π°, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π°Π»Π°ΡΠ΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ°, Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅Π½ΡΠΈΠΌΠ΅Π½ΡΠ° ΠΎΠ²Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅, Π΄ΠΎΠ±ΠΈΡΠ°ΡΡΡΠΈ ΠΏΡΠΎΡΠ΅Π½Ρ Π΅ΠΌΠΎΡΠΈΠ²Π½ΠΎΠ³ ΠΎΠ΄Π½ΠΎΡΠ° Π°ΡΡΠΎΡΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΌΠ° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ²Π°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° Π³Π»Π°Π²Π½ΠΈ ΠΏΡΠΎΠ·ΠΎΡ ΠΎΠ²Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.

ΠΠ΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅Π½ΡΠΈΠΌΠ΅Π½ΡΠ° ΡΠ΅ΠΊΡΡΠΎΠ²Π°
Π‘Π° ΡΠ΅Ρ Π½ΠΈΡΠΊΠ΅ ΡΠ°ΡΠΊΠ΅ Π³Π»Π΅Π΄ΠΈΡΡΠ°, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΡΠ°ΡΡΠΎΡΠΈ ΠΎΠ΄ ΡΡΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΎΠ΄ ΠΊΠΎΡΠΈΡ ΡΠ²Π°ΠΊΠ° ΡΠ΅ΡΠ°Π²Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠΊΡΠΏ Π·Π°Π΄Π°ΡΠ°ΠΊΠ°:
- Π‘Π-Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ΅ ΠΠ³ΠΈΠ½ΠΊ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡΠΈ ΠΎΠΏΡΠ»ΡΠΆΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠ΅ Π Π΅Π°ΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅.
- Π‘Π-ΠΠ΅Π±ΠΠΏΠΏ ΡΠ΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΠΠ°Π²ΠΈ ΠΊΠΎΡΠ° ΠΎΠ±ΡΠ°ΡΡΡΠ΅ Π·Π°Ρ ΡΠ΅Π²Π΅ ΡΠ° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°.
- Π‘Π-ΠΠΎΠ³ΠΈΡ ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅Π½ΡΠΈΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΡ.
ΠΠ°ΠΆΠ½ΠΎ ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½ΡΡΠΈ Π΄Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈ ΠΈΠ·ΠΎΠ»ΠΎΠ²Π°Π½ΠΎ. ΠΠ½ΠΈ ΡΠΏΡΠΎΠ²ΠΎΠ΄Π΅ ΠΈΠ΄Π΅ΡΡ βΡΠ°Π·Π΄Π²Π°ΡΠ°ΡΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈβ, Π°Π»ΠΈ Ρ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠΎΡΠ°ΡΡ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΡ ΡΠ΅Π΄Π½ΠΈ ΡΠ° Π΄ΡΡΠ³ΠΈΠΌΠ°.

Π’ΠΎΠΊΠΎΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ
ΠΠ° Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌΡ ΠΈΠ·Π½Π°Π΄, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π½ΡΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ ΡΠ°Π·Π΅ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈΠ»ΡΡΡΡΡΡΡΡΠΈ ΡΠΎΠΊΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ. ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΈΡ :
- ΠΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°Ρ Π·Π°Ρ
ΡΠ΅Π²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠ°
index.html(ΠΊΠΎΡΠΈ, Π·Π°ΡΠ·Π²ΡΠ°Ρ, ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ° Π Π΅Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅). - ΠΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΡΡΠΏΠ° Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΡ ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΎΠΌ, ΡΡΠΎ ΡΠ·ΡΠΎΠΊΡΡΠ΅ ΠΏΠΎΠ·ΠΈΠ² Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΎΡ Π½Π° Π‘ΠΏΡΠΈΠ½Π³Ρ.
- ΠΠ΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΡΠΎΡΠ»Π΅ΡΡΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ° Ρ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ.
- ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅Π½ΡΠΈΠΌΠ΅Π½ΡΠ° ΡΠ΅ΠΊΡΡΠ° ΠΈ Π²ΡΠ°ΡΠ° ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΊΠ°ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° Π·Π°Ρ ΡΠ΅Π².
- Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ°ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ (ΠΊΠΎΡΠ°, Π·Π°ΡΠ·Π²ΡΠ°Ρ, ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΡ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π°Π½Π°Π»ΠΈΠ·Π΅ ΡΠ΅ΠΊΡΡΠ°).
ΠΠΎΠ΄ Π·Π° ΡΠ²Π΅ ΠΎΠ²Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ . ΠΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ΠΌ Π²Π°ΠΌ Π΄Π° ΠΎΠ΄ΠΌΠ°Ρ ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ ΠΎΠ²ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ Π·Π° ΡΠ΅Π±Π΅, ΠΏΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ Π½Π°ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π½ΠΈΠΌΡΠΈΠ²ΠΈΡ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Π°ΡΠ° ΡΠ° ΡΠΈΠΌ.
ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° Π½Π° Π²Π°ΡΠΎΡ Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ
ΠΠ° Π±ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ°Π΄ΠΈΠ»Π°, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΡΠ²Π° ΡΡΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠΎΡΠ½ΠΈΠΌΠΎ ΡΠ° Π½Π°ΡΡΠ»Π°ΡΠΎΠΌ ΠΎΠ΄ ΡΠ²ΠΈΡ - ΠΏΡΠ΅Π΄ΡΠΎΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΎΠΌ.
βΠΠΎΠ΄Π΅ΡΠΈΡΠ΅ Π Π΅Π°ΡΡ Π·Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ°Π·Π²ΠΎΡ
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΠΎΠ΄Π΅.ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΠΠ Π½Π° ΡΠ²ΠΎΡ ΡΠ°ΡΡΠ½Π°Ρ. ΠΠ°Π΄Π° ΡΠ²Π΅ ΠΎΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π·Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡΡ Π΄ΠΎ ΡΠ°ΡΡΠΈΠΊΠ»Π΅ Π²Π°ΡΠ΅Π³ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° sa-frontend ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm install ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ΠΌ ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ node_modules Π±ΠΈΡΠ΅ ΡΡΠΈΡΠ°Π½Π΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΠΈΡΠΈ ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π½Π°Π»Π°Π·Π΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ package.json. ΠΠ°Π΄Π° ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅ΡΠ·ΠΌΡ Ρ ΠΈΡΡΡ ΡΠ°ΡΡΠΈΠΊΠ»Ρ, ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm start Π’ΠΎ ΡΠ΅ ΡΠ²Π΅. Π‘Π°Π΄Π° ΡΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΡ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΎΡΠΈΡΠΈ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΡ Π°Π΄ΡΠ΅ΡΡ Ρ Π²Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ: localhost:3000. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ Π½Π΅ΡΡΠΎ Ρ ΡΠ΅Π³ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Ρ. ΠΠ΄ΠΌΠ°Ρ
ΡΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΅ΡΠ΅ΠΊΠ°Ρ ΠΎΠ²ΠΈΡ
ΠΏΡΠΎΠΌΠ΅Π½Π° Ρ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ. ΠΠ²ΠΎ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ Π·Π°Ρ
Π²Π°ΡΡΡΡΡΠΈ ΡΠ°ΠΊΠΎΠ·Π²Π°Π½ΠΎΡ βΠ²ΡΡΡΠΎΡβ Π·Π°ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ΄ΡΠ»Π°. ΠΠ²ΠΎ ΡΠΈΠ½ΠΈ ΡΡΠΎΠ½Ρ-Π΅Π½Π΄ ΡΠ°Π·Π²ΠΎΡ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΠΌ ΠΈ ΠΏΡΠΈΡΠ°ΡΠ½ΠΈΠΌ ΠΈΡΠΊΡΡΡΠ²ΠΎΠΌ.
βΠΡΠΈΠΏΡΠ΅ΠΌΠ° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ
Π£ ΡΠ²ΡΡ Ρ ΡΡΠ²Π°ΡΠ½ΠΎΠ³ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠΈΠΌΠΎ Ρ ΡΠΊΡΠΏ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈ Π΄Π° ΠΈΡ ΠΏΠΎΡΠ»ΡΠΆΠΈΠΌΠΎ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠΈΠΌΠ° ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ.
ΠΠ° Π±ΠΈΡΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΠΈΠ΄ΠΈΡΠ΅ Π΄ΠΎ ΡΠ°ΡΡΠΈΠΊΠ»Π΅ sa-frontend ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm run build ΠΠ²ΠΎ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° build. Π‘Π°Π΄ΡΠΆΠ°ΡΠ΅ ΡΠ²Π΅ ΡΡΠ°ΡΠΈΡΠΊΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π½Π΅ΠΎΠΏΡ
ΠΎΠ΄Π½Π΅ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
βΠΠΎΡΠ»ΡΠΆΠΈΠ²Π°ΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΠ³ΠΈΠ½ΠΊ-Π°
ΠΡΠ²ΠΎ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΠ³ΠΈΠ½ΠΊ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ. ΠΌΠΎΠΆΠ΅ΡΠ΅ Π³Π° ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ ΠΈ ΠΏΡΠΎΠ½Π°ΡΠΈ ΡΠΏΡΡΡΡΠ²Π° ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅. ΠΠ°ΡΠΈΠΌ ΠΌΠΎΡΠ°ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°ΡΠΈ ΡΠ°Π΄ΡΠΆΠ°Ρ ΡΠ°ΡΡΠΈΠΊΠ»Π΅ sa-frontend/build Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ [your_nginx_installation_dir]/html.
Π‘Π° ΠΎΠ²ΠΈΠΌ ΠΏΡΠΈΡΡΡΠΏΠΎΠΌ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π° ΡΠΎΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ index.html Π±ΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ°Π½ Π½Π° [your_nginx_installation_dir]/html/index.html. ΠΠ²ΠΎ ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΡ ΠΠ³ΠΈΠ½ΠΊ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ ΠΊΠ°Π΄Π° ΡΠΎΡ ΠΏΡΠΈΡΡΡΠΏΠ°. Π‘Π΅ΡΠ²Π΅Ρ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π΄Π° ΡΠ»ΡΡΠ° Π½Π° ΠΏΠΎΡΡΡ 80, Π°Π»ΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΡΠΈ ΠΎΠ½Π°ΠΊΠΎ ΠΊΠ°ΠΊΠΎ Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΡΠ΅ΡΠΈΠ²Π°ΡΠ΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ [your_nginx_installation_dir]/conf/nginx.conf.
Π‘Π°Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°Ρ ΠΈ ΠΈΠ΄ΠΈΡΠ΅ Π½Π° localhost:80. ΠΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π Π΅Π°ΡΡ.

Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΡ ΠΎΠΏΡΠ»ΡΠΆΡΡΠ΅ ΠΠ³ΠΈΠ½ΠΊ ΡΠ΅ΡΠ²Π΅Ρ
ΠΠΊΠΎ ΡΠ°Π΄Π° ΡΠ½Π΅ΡΠ΅ΡΠ΅ Π½Π΅ΡΡΠΎ Ρ ΠΏΠΎΡΠ΅ Type your sentence ΠΈ ΠΏΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ Π΄ΡΠ³ΠΌΠ΅ Send - Π½ΠΈΡΡΠ° ΡΠ΅ Π½Π΅ΡΠ΅ Π΄Π΅ΡΠΈΡΠΈ. ΠΠ»ΠΈ, Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ ΠΊΠΎΠ½Π·ΠΎΠ»Ρ, ΡΠ°ΠΌΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΠΎΡΡΠΊΠ΅ ΠΎ Π³ΡΠ΅ΡΡΠΈ. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠ°Π·ΡΠΌΠ΅Π»ΠΈ Π³Π΄Π΅ ΡΠ΅ ΡΠ°ΡΠ½ΠΎ ΠΎΠ²Π΅ Π³ΡΠ΅ΡΠΊΠ΅ ΡΠ°Π²ΡΠ°ΡΡ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΌΠΎ ΠΊΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
βΠΠ½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΠ»Π΅Π΄Π°ΡΡΡΠΈ ΠΊΠΎΠ΄ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ App.js, ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΡΠΈΡΠΈΡΠΊΠΎΠΌ Π½Π° Π΄ΡΠ³ΠΌΠ΅ Send ΠΏΠΎΠ·ΠΈΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ analyzeSentence(). ΠΠΎΠ΄ Π·Π° ΠΎΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ Π΄Π°Ρ Ρ Π½Π°ΡΡΠ°Π²ΠΊΡ. ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° Π·Π° ΡΠ²Π°ΠΊΠΈ ΡΠ΅Π΄ ΠΊΠΎΡΠΈ ΠΈΠΌΠ° ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ ΠΎΠ±ΡΠ°ΡΡΠ° # ΠΠΎΠΌΠ΅Ρ, ΠΏΠΎΡΡΠΎΡΠΈ ΠΎΠ±ΡΠ°ΡΡΠ΅ΡΠ΅ Π΄Π°ΡΠΎ ΠΈΡΠΏΠΎΠ΄ ΠΊΠΎΠ΄Π°. ΠΠ° ΠΈΡΡΠΈ Π½Π°ΡΠΈΠ½ ΡΠ΅ΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ ΠΈ ΠΎΡΡΠ°Π»Π΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°.
analyzeSentence() {
fetch('http://localhost:8080/sentiment', { // #1
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
sentence: this.textField.getValue()})// #2
})
.then(response => response.json())
.then(data => this.setState(data)); // #3
}1. Π£Π Π Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΡΡ ΡΠ΅ ΡΠ°ΡΠ΅ ΠΠΠ‘Π’ Π·Π°Ρ ΡΠ΅Π². ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ° ΡΠ΅ Π΄Π° Π½Π° ΠΎΠ²ΠΎΡ Π°Π΄ΡΠ΅ΡΠΈ ΠΏΠΎΡΡΠΎΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° ΠΎΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ²Π°ΠΊΠ²Π΅ Π·Π°Ρ ΡΠ΅Π²Π΅.
2.Π’Π΅Π»ΠΎ Π·Π°Ρ ΡΠ΅Π²Π° ΠΏΠΎΡΠ»Π°ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ. ΠΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ΅Π»Π° Π·Π°Ρ ΡΠ΅Π²Π°:
{
sentence: "I like yogobella!"
} 3.ΠΠ°Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° Π·Π°Ρ
ΡΠ΅Π², ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°. ΠΠ²ΠΎ ΡΠ·ΡΠΎΠΊΡΡΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΠ΅. ΠΠΊΠΎ ΠΏΡΠΈΠΌΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ (ΡΡ. ΠΠ‘ΠΠ ΠΎΠ±ΡΠ΅ΠΊΠ°Ρ ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ ΡΠ»Π°Π·Π½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΈ ΠΈΠ·ΡΠ°ΡΡΠ½Π°ΡΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠ΅ΠΊΡΡΠ°), ΠΈΠ·Π±Π°ΡΠΈΡΠ΅ΠΌΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Polarity, ΠΏΠΎΡΡΠΎ ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΡΠΏΡΡΠ΅Π½ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈ. ΠΠ²Π°ΠΊΠΎ ΠΎΠΏΠΈΡΡΡΠ΅ΠΌΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
const polarityComponent = this.state.polarity !== undefined ?
<Polarity sentence={this.state.sentence}
polarity={this.state.polarity}/> :
null; Π§ΠΈΠ½ΠΈ ΡΠ΅ Π΄Π° ΠΊΠΎΠ΄ ΡΠ°Π΄ΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π΄ΠΎΠ±ΡΠΎ. Π¨ΡΠ° Π½ΠΈΡΠ΅ Ρ ΡΠ΅Π΄Ρ ΡΠ° ΠΎΠ²ΠΈΠΌ? ΠΠΊΠΎ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄Π° Π½Π° Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠΊΡΡΠ°Π²Π° Π΄Π° ΠΏΠΎΡΠ°ΡΠ΅ ΠΠΠ‘Π’ Π·Π°Ρ
ΡΠ΅Π² ΡΠΎΡ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈ Π½ΠΈΡΡΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΡ
Π²Π°ΡΠΈ ΠΈ ΠΎΠ±ΡΠ°Π΄ΠΈ ΠΎΠ²Π°Ρ Π·Π°Ρ
ΡΠ΅Π², ΠΎΠ½Π΄Π° ΡΠ΅ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΡΠΏΡΠ½ΠΎ Ρ ΠΏΡΠ°Π²Ρ. ΠΠ°ΠΈΠΌΠ΅, Π·Π° ΠΎΠ±ΡΠ°Π΄Ρ Π·Π°Ρ
ΡΠ΅Π²Π° ΠΏΡΠΈΠΌΡΠ΅Π½ΠΈΡ
Π½Π° http://localhost:8080/sentiment, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° Π‘ΠΏΡΠΈΠ½Π³Ρ.

ΠΠΎΡΡΠ΅Π±Π½Π° Π½Π°ΠΌ ΡΠ΅ Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΡ
Π²Π°ΡΠΈ ΠΠΠ‘Π’ Π·Π°Ρ
ΡΠ΅Π²
βΠΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π΅ Π½Π° Π‘ΠΏΡΠΈΠ½Π³
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, Π±ΠΈΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΠΠ8 ΠΈ ΠΠ°Π²Π΅Π½ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°. ΠΠ°Π΄Π° ΡΠ²Π΅ ΠΎΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΠ°Π²ΠΈΡΠΈ ΡΠ° ΡΠ°Π΄ΠΎΠΌ Π½Π° Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΠΊΡΡ.
βΠΠ°ΠΊΠΎΠ²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Ρ ΡΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ
ΠΠ΄ΠΈΡΠ΅, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Π΄ΠΎ ΡΠ°ΡΡΠΈΠΊΠ»Π΅ sa-webapp ΠΈ ΡΠ½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
mvn install ΠΠ°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ sa-webapp Π±ΠΈΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ target. ΠΠ²Π΄Π΅ ΡΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈΡΠΈ ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π° Ρ ΡΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ, ΠΊΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° sentiment-analysis-web-0.0.1-SNAPSHOT.jar.
βΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΠ΄ΠΈΡΠ΅ Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ target ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΡΠ»Π΅Π΄Π΅ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jarΠΠΎΡΠΈ ΡΠ΅ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ° ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠ° Π±ΠΈΡΠΌΠΎ ΠΏΠΎΡΠ΅Π»ΠΈ Π΄Π° Π³Π° ΠΏΠΎΠΏΡΠ°Π²ΡΠ°ΠΌΠΎ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ Π΄Π΅ΡΠ°ΡΠ΅ ΠΈΠ·ΡΠ·Π΅ΡΠ°ΠΊΠ° Ρ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΡΠ΅ΠΊΠ°:
Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}" ΠΠ° Π½Π°Ρ ΡΠ΅ ΠΎΠ²Π΄Π΅ Π½Π°ΡΠ²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΏΠΎΠΌΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°ΡΡΠ΅ΡΠ° Π·Π½Π°ΡΠ΅ΡΠ° sa.logic.api.url. Π₯Π°ΡΠ΄Π΅ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠΎ ΠΊΠΎΠ΄ Ρ ΠΊΠΎΠΌΠ΅ ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ° ΡΠ°Π²ΡΠ°.
β ΠΠ½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΠ²ΠΎ ΠΈΡΠ΅ΡΠΊΠ° ΠΊΠΎΠ΄Π° Π³Π΄Π΅ ΡΠ΅ Π΄ΠΎΡΠ»ΠΎ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ΅.
@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
@Value("${sa.logic.api.url}") // #1
private String saLogicApiUrl;
@PostMapping("/sentiment")
public SentimentDto sentimentAnalysis(
@RequestBody SentenceDto sentenceDto)
{
RestTemplate restTemplate = new RestTemplate();
return restTemplate.postForEntity(
saLogicApiUrl + "/analyse/sentiment", // #2
sentenceDto, SentimentDto.class)
.getBody();
}
}- Π£ Π‘
entimentControllerΠΏΠΎΡΡΠΎΡΠΈ ΠΏΠΎΡΠ΅saLogicApiUrl. ΠΠ΅Π³ΠΎΠ²Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ΅ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π° ΡΠ²ΠΎΡΡΡΠ²ΠΎΠΌsa.logic.api.url. - ΠΠΈΠ½ΠΈΡΠ°
saLogicApiUrlΡΠΏΠ°ΡΠ° ΡΠ΅ ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΡ/analyse/sentiment. ΠΠ°ΡΠ΅Π΄Π½ΠΎ ΡΠΎΡΠΌΠΈΡΠ°ΡΡ Π°Π΄ΡΠ΅ΡΡ Π·Π° ΠΏΠΎΠ·ΠΈΠ²Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° ΠΊΠΎΡΠΈ Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ°.
βΠΠΎΠ΄Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ²ΠΎΡΡΡΠ²Π°
Π£ ΠΏΡΠΎΠ»Π΅ΡΠ΅, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΈΠ·Π²ΠΎΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ²ΠΎΡΡΡΠ²Π° ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° application.properties, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π½Π°ΡΠΈ Π½Π° sa-webapp/src/main/resources. ΠΠ»ΠΈ ΡΠ΅Π³ΠΎΠ²Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½ΠΈΡΠ΅ ΡΠ΅Π΄ΠΈΠ½ΠΈ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ²ΠΎΡΡΡΠ°Π²Π°. ΠΠ²ΠΎ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΡΠ°Π΄ΠΈΡΠΈ ΠΏΠΎΠΌΠΎΡΡ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URLΠΡΠ΅Π΄Π½ΠΎΡΡ ΠΎΠ²ΠΎΠ³ ΡΠ²ΠΎΡΡΡΠ²Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΠΊΠ°Π·ΡΡΠ΅ Π½Π° Π°Π΄ΡΠ΅ΡΡ Π½Π°ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ΠΌ, ΠΌΠΈ Π³ΠΎΠ²ΠΎΡΠΈΠΌΠΎ Π‘ΠΏΡΠΈΠ½Π³ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ Π³Π΄Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ΄Π΅ Π΄Π° Π±ΠΈ ΠΈΠ·Π²ΡΡΠΈΠ»Π° Π·Π°Ρ ΡΠ΅Π²Π΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ°.
ΠΠ°ΠΊΠΎ Π½Π΅ Π±ΠΈΡΠΌΠΎ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΆΠΈΠ²ΠΎΡ, ΠΎΠ΄Π»ΡΡΠΈΡΠ΅ΠΌΠΎ Π΄Π° ΠΠΈΡΡ
ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° Π°Π΄ΡΠ΅ΡΠΈ localhost:5000 ΠΈ ΠΏΠΎΡΡΡΠ΄ΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠΎ Π½Π΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΠΌΠΎ. ΠΠ°ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΎΠ³Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000 
ΠΠ°ΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ΅ ΠΠΈΡΡ
ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°
Π‘Π°Π΄Π° ΡΠ²Π΅ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΎΡΠ΅ΠΊΡΡΠ΅.
βΠΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΠΌΠΎΡΠ°ΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΠΈΡΡ ΠΎΠ½ 3 ΠΈ ΠΠΈΠΏ, Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΌΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½Π΅.
βΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ
ΠΠ΄ΠΈΡΠ΅ Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ ΡΠ²ΠΎΠ³ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° sa-logic/sa ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
python -m pip install -r requirements.txt
python -m textblob.download_corporaβΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΠ°ΠΊΠΎΠ½ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΡΠΏΡΠ΅ΠΌΠ½ΠΈ ΡΠΌΠΎ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅:
python sentiment_analysis.pyΠΠ°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π±ΠΈΡΠ΅ Π½Π°ΠΌ ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠ° ΠΈ Π΄Π° ΡΠ΅ΠΊΠ° Π½Π° Π·Π°Ρ
ΡΠ΅Π²Π΅ Π½Π° localhost:5000/
β ΠΡΡΡΠ°ΠΆΠΈΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄Π°
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ ΠΊΠΎΠ΄ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π΄Π° Π±ΠΈΡΠΌΠΎ ΡΠ°Π·ΡΠΌΠ΅Π»ΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ½ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° Π·Π°Ρ ΡΠ΅Π²Π΅:
from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__) #1
@app.route("/analyse/sentiment", methods=['POST']) #2
def analyse_sentiment():
sentence = request.get_json()['sentence'] #3
polarity = TextBlob(sentence).sentences[0].polarity #4
return jsonify( #5
sentence=sentence,
polarity=polarity
)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) #6- ΠΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Flask. - ΠΠ΄ΡΠ΅ΡΠΈΠ²Π°ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ΅ Π·Π° ΠΎΠ±Π°Π²ΡΠ°ΡΠ΅ ΠΠΠ‘Π’ Π·Π°Ρ ΡΠ΅Π²Π° ΠΏΡΠ΅ΠΌΠ° ΡΠΎΡ.
- ΠΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΡΠ²ΠΎΡΡΡΠ²Π°
sentenceΠΎΠ΄ ΠΎΡΠ³Π°Π½Π° Π·Π°Ρ ΡΠ΅Π²Π°. - ΠΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
TextBlobΠΈ Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈpolarityΠ·Π° ΠΏΡΠ²Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΏΡΠΈΠΌΡΠ΅Π½Ρ Ρ ΡΠ΅Π»Ρ Π·Π°Ρ ΡΠ΅Π²Π° (Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ²ΠΎ ΡΠ΅ ΡΠ΅Π΄ΠΈΠ½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡΠ° ΠΏΠΎΡΠ»Π°ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Ρ). - ΠΡΠ°ΡΠ°ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ° ΡΠΈΡΠ΅ ΡΠ΅Π»ΠΎ ΡΠ°Π΄ΡΠΆΠΈ ΡΠ΅ΠΊΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΈ ΠΈΠ·ΡΠ°ΡΡΠ½Π°ΡΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Π·Π° ΡΡ
polarity. - ΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π€Π»Π°ΡΠΊ, ΠΊΠΎΡΠ° ΡΠ΅ Π±ΠΈΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π°
0.0.0.0:5000(ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ ΠΈ ΠΏΠΎΠΌΠΎΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°ΡΡΠ°localhost:5000).
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠΈΠ½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΡΠ°Π΄Π° ΡΠ°Π΄Π΅. ΠΠ½ΠΈ ΡΡ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½ΠΈ Π΄Π° ΠΌΠ΅ΡΡΡΠΎΠ±Π½ΠΎ ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΡ. ΠΠ²Π°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Ρ ΠΎΠ²ΠΎΡ ΡΠ°Π·ΠΈ ΡΠ°Π΄Π°.

Π‘Π²ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ ΠΊΠΎΡΠΈ ΡΠΈΠ½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΡΡ Π΄ΠΎΠ²Π΅Π΄Π΅Π½ΠΈ Ρ ΡΠ°Π΄Π½ΠΎ ΡΡΠ°ΡΠ΅
Π‘Π°Π΄Π°, ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ Π½Π°ΡΡΠ°Π²ΠΈΡΠ΅, ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΎΡΡ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΡ ΠΈ ΠΏΠΎΠΊΡΡΠ°ΡΡΠ΅ Π΄Π° ΡΠ°ΡΡΠ»Π°Π½ΠΈΡΠ΅ Π½Π΅ΠΊΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΡΠ° ΡΠΎΠΌ. ΠΠΊΠΎ ΡΠ΅ ΡΠ²Π΅ ΡΡΠ°ΡΠ΅Π½ΠΎ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ - Π½Π°ΠΊΠΎΠ½ ΠΏΡΠΈΡΠΈΡΠΊΠ° Π½Π° Π΄ΡΠ³ΠΌΠ΅ Send Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈΡΠΏΠΎΠ΄ ΡΠ΅ΠΊΡΡΡΠ°Π»Π½ΠΎΠ³ ΠΏΠΎΡΠ°.
Π£ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΠΎΠ΄Π΅ΡΠΊΡ ΡΠ΅ΠΌΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΠΈ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ Π½Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ Ρ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°. ΠΠ²ΠΎ ΡΠ΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ Π΄Π° Π±ΠΈ ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΠ»Π° Π·Π° ΡΠ°Π΄ Π½Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΡ.
ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ
ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π·Π° Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ°, ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ° ΠΈ ΡΠΏΡΠ°Π²ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΠΌΠ°. Π’Π°ΠΊΠΎΡΠ΅ ΡΠ΅ Π½Π°Π·ΠΈΠ²Π° βΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡβ. ΠΠΊΠΎ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ°Π΄ΠΈ ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°, ΠΎΠ½Π΄Π° ΠΏΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΠΎΠ²ΠΎΠ³ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΡΠ°ΠΌΠΎ ΠΏΡΠ²ΠΎ Π΄Π° Π½Π°Π±Π°Π²ΠΈΠΌΠΎ ΠΎΠ²Π΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. ΠΠ»ΠΈ ΠΏΡΠ²ΠΎ, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠΈΡΠ°ΠΌΠΎ ΠΎ ΡΠΎΠΌΠ΅ ΡΡΠ° ΡΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ. ΠΠΎΠΆΠ΄Π° Π½Π°ΡΠ±ΠΎΡΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° ΠΏΠΈΡΠ°ΡΠ΅ ΡΡΠ° ΡΠ΅ ΡΠΎ ΠΌΠΎΠΆΠ΅ ΡΠ΅ Π½Π°ΡΠΈ Ρ Π·Π° ΠΠΎΡΠΊΠ΅Ρ:
ΠΠ±ΡΠ°Π· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° β ΡΡΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ, Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ, ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π΅ΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°: ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΡΠ΅Π΄Π°Ρ Linux ΠΈ Windows, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½ΠΈ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π½Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·Π΅ Ρ ΡΠΈΠΌΠ° ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ ΠΈΡΡΠΎ Ρ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΡ.
ΠΠ° Π±ΠΈΡΠΌΠΎ ΠΈΡΡΡΠ°ΠΆΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ ΡΠΏΠΎΡΠ΅Π΄ΠΈΠ»ΠΈ ΠΈΡ ΡΠ° Π΄ΡΡΠ³ΠΈΠΌ Π½Π°ΡΠΈΠ½ΠΈΠΌΠ° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΠ»ΡΠΆΠΈΠ²Π°ΡΠ° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΡ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
βΠΠΎΡΠ»ΡΠΆΠΈΠ²Π°ΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΡ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅
ΠΠΎΠΊΡΡΠ°Π²Π°ΡΡΡΠΈ Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΡΠ΅ΠΌΠΎ ΡΡΠ»ΡΠ³Ρ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅, Π½Π°ΠΈΡΠΈ ΡΠ΅ΠΌΠΎ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ΅:
- ΠΠ΅Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°, ΠΏΠΎΡΡΠΎ ΡΠ΅ ΡΠ²Π°ΠΊΠ° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΏΡΠ½ΠΎΠΏΡΠ°Π²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌ.
- ΠΠ°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. ΠΠ½ΠΎ ΡΡΠΎ ΡΠ°Π΄ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ ΠΌΠΎΠΆΠ΄Π° Π½Π΅ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡ.
- Π‘ΠΏΠΎΡΠΎ ΠΈ ΡΠ΅ΡΡΡΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ° Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΎΠ³ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ.

ΠΠ³ΠΈΠ½ΠΊ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡΠΈ ΠΎΠΏΡΠ»ΡΠΆΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠ°Π΄Π΅ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ
ΠΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΎΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΠ½Π΄Π° ΡΠ΅, Ρ ΠΏΠΎΡΠ΅ΡΠ΅ΡΡ ΡΠ° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΠΌ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠ°, ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈ:
- ΠΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°: ΡΠ°Π΄ ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΎΡΠΊΠ΅Ρ.
- ΠΠ΅Π·Π°Π²ΠΈΡΠ½ΠΎ ΠΎΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΊΠΎΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ Π½Π° ΡΠ²ΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ Π±ΠΈΠ»ΠΎ Π³Π΄Π΅.
- ΠΠ°Π³Π°Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΠΊΡΠΎΠ· ΡΠΏΠΎΡΡΠ΅Π±Ρ ΡΠ»ΠΎΡΠ΅Π²Π° ΡΠ»ΠΈΠΊΠ΅.

ΠΠ³ΠΈΠ½ΠΊ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡΠΈ ΠΎΠΏΡΠ»ΡΠΆΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠ°Π΄Π΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡ
Π£ΠΏΠΎΡΠ΅Π΄ΠΈΠ»ΠΈ ΡΠΌΠΎ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ Ρ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ°ΡΠ°ΠΊΠ°, Π°Π»ΠΈ ΠΈ ΠΎΠ²ΠΎ ΡΠ΅ Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ Π΄Π° ΡΡΠ΅ΠΊΠ½Π΅ΠΌΠΎ ΡΡΠΈΡΠ°ΠΊ ΠΎ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈΠΌΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ Π΄Π΅ΡΠ°ΡΠ΅ ΠΎ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°.
βΠΠ·ΡΠ°Π΄Π° ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π³ΡΠ°Π΄ΠΈΠ²Π½ΠΈ Π±Π»ΠΎΠΊ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Dockerfile. ΠΠ° ΠΏΠΎΡΠ΅ΡΠΊΡ ΠΎΠ²ΠΎΠ³ ΡΠ°ΡΠ»Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π·Π°ΠΏΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½Π΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, Π·Π°ΡΠΈΠΌ ΡΠ»Π΅Π΄ΠΈ Π½ΠΈΠ· ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΠΊΠΎΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΡΡ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΊΠΎΡΠΈ ΡΠ΅ Π·Π°Π΄ΠΎΠ²ΠΎΡΠΈΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π΅ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
ΠΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΠΎΡΠ½Π΅ΠΌΠΎ Π΄Π° ΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΎΠΌ Dockerfile, ΠΏΠΎΠ΄ΡΠ΅ΡΠΈΠΌΠΎ ΡΠ΅ ΡΡΠ° ΡΠΌΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΠΌΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π° ΠΎΡΠΏΡΠ΅ΠΌΠ°ΡΠ΅ Π½Π° ΠΠ³ΠΈΠ½ΠΊ ΡΠ΅ΡΠ²Π΅Ρ:
- ΠΡΠ°Π²ΡΠ΅ΡΠ΅ Π Π΅Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° (
npm run build). - ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΠ³ΠΈΠ½ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°.
- ΠΠΎΠΏΠΈΡΠ°ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°
buildΠΈΠ· ΡΠ°ΡΡΠΈΠΊΠ»Π΅ ΠΏΡΠΎΡΠ΅ΠΊΡΠ°sa-frontendΡ ΡΠ°ΡΡΠΈΠΊΠ»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°nginx/html.
ΠΡΠΏΠΎΠ΄ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π΅ ΠΈΠ·ΠΌΠ΅ΡΡ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ Π³ΠΎΡΡΠΈΡ ΠΊΠΎΡΠ°ΠΊΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΎΠ±Π°Π²ΡΠ°ΡΡ Π½Π° Π²Π°ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ.
βΠΡΠΈΠΏΡΠ΅ΠΌΠ° ΠΠΎΡΠΊΠ΅ΡΡΠΈΠ»Π΅-Π° Π·Π° Π‘Π-Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
Π£ΠΏΡΡΡΡΠ²Π° ΠΊΠΎΡΠ° ΡΠ΅ Π±ΠΈΡΠΈ ΡΠ°Π΄ΡΠΆΠ°Π½Π° Ρ Dockerfile Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Ρ SA-Frontend, ΡΠΈΠ½Π΅ ΡΠ°ΠΌΠΎ Π΄Π²Π° ΡΠΈΠΌΠ°. Π§ΠΈΡΠ΅Π½ΠΈΡΠ° ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠΈΠΌ ΠΠ³ΠΈΠ½ΠΊ-Π° ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΠΎ ΠΎΡΠ½ΠΎΠ²Π½Ρ Π·Π° ΠΠ³ΠΈΠ½ΠΊ, ΠΊΠΎΡΠΈ ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅. ΠΠ²ΠΎ ΡΡ Π΄Π²Π° ΠΊΠΎΡΠ°ΠΊΠ° ΠΊΠΎΡΠ° ΡΡΠ΅Π±Π° Π΄Π° ΠΎΠΏΠΈΡΠ΅ΠΌΠΎ:
- ΠΡΠ½ΠΎΠ²Π° ΡΠ»ΠΈΠΊΠ΅ ΡΡΠ΅Π±Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΠ³ΠΈΠ½ΠΊ ΡΠ»ΠΈΠΊΠ°.
- Π€ΠΎΠ»Π΄Π΅Ρ Π¦ΠΎΠ½ΡΠ΅Π½ΡΡ
sa-frontend/buildΡΡΠ΅Π±Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠΈ Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ ΡΠ° ΡΠ»ΠΈΠΊΠ°ΠΌΠ°nginx/html.
ΠΠΊΠΎ ΠΏΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ° ΠΎΠ²ΠΎΠ³ ΠΎΠΏΠΈΡΠ° Π½Π° ΡΠ°ΡΠ» Dockerfile, ΠΎΠ½Π΄Π° ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ:
FROM nginx
COPY build /usr/share/nginx/html ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΠ²Π΄Π΅ ΡΠ΅ ΡΠ²Π΅ Π²ΡΠ»ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ, Π° ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ ΡΠ°ΠΊ ΠΈΡΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠΈΡΡΠΈΠ² ΠΈ ΡΠ°Π·ΡΠΌΡΠΈΠ². ΠΠ²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π³ΠΎΠ²ΠΎΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π° ΡΠ½ΠΈΠΌΠΈ ΡΠ»ΠΈΠΊΡ nginx ΡΠ° ΡΠ²ΠΈΠΌΠ΅ ΡΡΠΎ ΡΠ΅ Π²Π΅Ρ Π½Π°Π»Π°Π·ΠΈ Ρ ΡΠ΅ΠΌΡ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° build Ρ ΠΈΠΌΠ΅Π½ΠΈΠΊ nginx/html.
ΠΠ²Π΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΏΠΈΡΠ°ΡΠ΅ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π·Π½Π°ΠΌ Π³Π΄Π΅ ΡΠ°ΡΠ½ΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ· ΡΠ°ΡΡΠΈΠΊΠ»Π΅ build, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ ΠΎΠ΄Π°ΠΊΠ»Π΅ ΡΠ΅ ΠΏΡΡ Π΄ΠΎΡΠ°ΠΎ /usr/share/nginx/html. Π£ ΡΡΠ²Π°ΡΠΈ, Π½ΠΈ ΠΎΠ²Π΄Π΅ Π½Π΅ΠΌΠ° Π½ΠΈΡΡΠ° ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ. Π§ΠΈΡΠ΅Π½ΠΈΡΠ° ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΡΠΈ Ρ ΡΠ»ΠΈΠΊΠ°.
βΠΠ·ΡΠ°Π΄Π° ΡΠ»ΠΈΠΊΠ΅ ΠΈ ΠΎΡΠΏΡΠ΅ΠΌΠ°ΡΠ΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅
ΠΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ° Π³ΠΎΡΠΎΠ²ΠΎΠΌ ΡΠ»ΠΈΠΊΠΎΠΌ, ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ Π³ΡΡΠ½Π΅ΠΌΠΎ Ρ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ ΡΠ»ΠΈΠΊΠ°. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π·Π° Ρ ΠΎΡΡΠΎΠ²Π°ΡΠ΅ ΡΠ»ΠΈΠΊΠ° Ρ ΠΎΠ±Π»Π°ΠΊΡ ΠΠΎΡΠΊΠ΅Ρ Π₯ΡΠ±. Π£ ΠΎΠ²ΠΎΡ ΡΠ°Π·ΠΈ ΡΠ°Π΄Π° ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΡΡΠ°Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
- ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ .
- Π Π΅Π³ΠΈΡΡΡΡΡΡΠ΅ ΡΠ΅ Π½Π° Π²Π΅Π± Π»ΠΎΠΊΠ°ΡΠΈΡΠΈ ΠΠΎΡΠΊΠ΅Ρ Π₯ΡΠ±.
- ΠΡΠΈΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅ Π½Π° ΡΠ²ΠΎΡ Π½Π°Π»ΠΎΠ³ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ:
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
Π‘Π°Π΄Π° ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π΄Π° Π±ΠΈΡΡΠ΅ ΠΎΡΠΈΡΠ»ΠΈ ββΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ sa-frontend ΠΈ ΡΠ°ΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend . ΠΠ²Π΄Π΅ ΠΈ Π΄Π°ΡΠ΅ Ρ ΡΠ»ΠΈΡΠ½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠ° $DOCKER_USER_ID ΡΡΠ΅Π±Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠΈ Π²Π°ΡΠΈΠΌ ΠΠΎΡΠΊΠ΅Ρ Π₯ΡΠ± ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ²Π°Ρ Π΄Π΅ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ: rinormaloku/sentiment-analysis-frontend.
Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΠΊΡΠ°ΡΠΈΡΠΈ ΡΠΊΠ»Π°ΡΠ°ΡΠ΅ΠΌ ΠΈΠ· ΡΠ΅ -f Dockerfile, ΠΏΠΎΡΡΠΎ ΠΎΠ²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π²Π΅Ρ ΠΏΠΎΡΡΠΎΡΠΈ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ Ρ ΠΊΠΎΡΠΎΡ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΠΌΠΎ ΠΎΠ²Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ° Π±ΠΈΡΠΌΠΎ Π³ΠΎΡΠΎΠ²Ρ ΡΠ»ΠΈΠΊΡ ΠΏΠΎΡΠ»Π°Π»ΠΈ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅, ΠΏΠΎΡΡΠ΅Π±Π½Π° Π½Π°ΠΌ ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
docker push $DOCKER_USER_ID/sentiment-analysis-frontendΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ Π³Π° Π·Π°Π²ΡΡΠΈΡΠ΅, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π»ΠΈΡΡΡ ΡΠ²ΠΎΡΠΈΡ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° Π½Π° ΠΠΎΡΠΊΠ΅Ρ Π₯ΡΠ±-Ρ Π΄Π° Π±ΠΈΡΡΠ΅ ΡΠ°Π·ΡΠΌΠ΅Π»ΠΈ Π΄Π° Π»ΠΈ ΡΠ΅ ΠΎΡΠΏΡΠ΅ΠΌΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ Ρ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Ρ ΠΎΠ±Π»Π°ΠΊΡ Π±ΠΈΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
βΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°
Π‘Π°Π΄Π° ΡΠ²Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠ»ΠΈΠΊΡ, ΠΏΠΎΠ·Π½Π°ΡΡ ΠΊΠ°ΠΎ $DOCKER_USER_ID/sentiment-analysis-frontend. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend Π‘Π°Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π½Π°ΡΡΠ°Π²ΠΈΡΠΈ ΡΠ° ΡΠ°Π΄ΠΎΠΌ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΡ
ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΡΠ΅ ΡΡ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½Π΅. ΠΠ»ΠΈ ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ Π½Π°ΡΡΠ°Π²ΠΈΠΌΠΎ, Ρ
Π°ΡΠ΄Π΅ Π΄Π° ΡΠ°Π·ΡΠΌΠ΅ΠΌΠΎ Π΄ΠΈΠ·Π°ΡΠ½ 80:80, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΡΡΡΠ΅ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ Π·Π±ΡΡΡΡΡΡΠ΅.
- ΠΡΠ²ΠΈ Π±ΡΠΎΡ
80β ΠΎΠ²ΠΎ ΡΠ΅ Π±ΡΠΎΡ ΠΏΠΎΡΡΠ° Ρ ΠΎΡΡΠ° (ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ, Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ°ΡΡΠ½Π°Ρ). - ΠΡΡΠ³ΠΈ Π±ΡΠΎΡ
80ΡΠ΅ Π»ΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π½Π° ΠΊΠΎΡΡ ΡΡΠ΅Π±Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠΈ Π·Π°Ρ ΡΠ΅Π².
Π Π°Π·ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΈΠ»ΡΡΡΡΠ°ΡΠΈΡΡ.

ΠΠΎΡΡ Π€ΠΎΡΠ²Π°ΡΠ΄ΠΈΠ½Π³
Π‘ΠΈΡΡΠ΅ΠΌ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ°Π²Π° Π·Π°Ρ
ΡΠ΅Π²Π΅ ΡΠ° ΠΏΠΎΡΡΠ° <hostPort> ΠΏΠΎ Π»ΡΡΠΈ <containerPort>. ΠΠ΄Π½ΠΎΡΠ½ΠΎ, ΠΏΡΠΈΡΡΡΠΏ Π»ΡΡΠΈ 80 ΡΠ°ΡΡΠ½Π°Ρ ΡΠ΅ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ°Π²Π° Π½Π° ΠΏΠΎΡΡ 80 ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ.
ΠΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ 80 ΠΎΡΠ²ΠΎΡΠ΅Π½Π° Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ, ΡΠ°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ ΡΠ° ΠΎΠ²ΠΎΠ³ ΡΠ°ΡΡΠ½Π°ΡΠ° Π½Π° Π°Π΄ΡΠ΅ΡΠΈ localhost:80. ΠΠΊΠΎ Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌ Π½Π΅ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΠΎΡΠΊΠ΅Ρ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π½Π° ΠΠΎΡΠΊΠ΅Ρ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠΈΡΠ° ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΊΠ°ΠΎ <docker-machine ip>:80. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠ°Π·Π½Π°Π»ΠΈ ΠΠ Π°Π΄ΡΠ΅ΡΡ ΠΠΎΡΠΊΠ΅Ρ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ docker-machine ip.
Π£ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ, Π½Π°ΠΊΠΎΠ½ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΡΡΠΎΠ½Ρ-Π΅Π½Π΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Ρ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΡΠ΅Π³ΠΎΠ²Ρ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΡ.
βΠΠ°ΡΠΎΡΠ΅ΠΊΠ° .Π΄ΠΎΡΠΊΠ΅ΡΠΈΠ³Π½ΠΎΡΠ΅
ΠΡΠΈΠΊΡΠΏΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ SA-Frontend, ΠΌΠΎΠ³Π»ΠΈ ΡΠΌΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠΈ Π΄Π° ΡΠ΅ ΠΎΠ²Π°Ρ ΠΏΡΠΎΡΠ΅Ρ ΠΈΡΠΏΠΎΡΡΠ°Π²ΡΠ° ΠΈΠ·ΡΠ·Π΅ΡΠ½ΠΎ ΡΠΏΠΎΡΠΈΠΌ. ΠΠ²ΠΎ ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° Π·Π°ΡΠΎ ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΏΠΎΡΠ»Π°Ρ ΠΠΎΡΠΊΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½Ρ. ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΊΠΎΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ ΠΊΠ°ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ docker build. Π£ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ°ΡΠΊΠ° Π½Π° ΠΊΡΠ°ΡΡ ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠ²ΠΎ ΡΠ·ΡΠΎΠΊΡΡΠ΅ Π΄Π° ΡΠ»Π΅Π΄Π΅ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π±ΡΠ΄Π΅ ΡΠΊΡΡΡΠ΅Π½Π° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅:
sa-frontend:
| .dockerignore
| Dockerfile
| package.json
| README.md
+---build
+---node_modules
+---public
---src ΠΠ»ΠΈ ΠΎΠ΄ ΡΠ²ΠΈΡ
ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΏΡΠΈΡΡΡΠ½ΠΈΡ
ΠΎΠ²Π΄Π΅, ΠΏΠΎΡΡΠ΅Π±Π°Π½ Π½Π°ΠΌ ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠΎΠ»Π΄Π΅Ρ build. Π£ΡΠΈΡΠ°Π²Π°ΡΠ΅ Π±ΠΈΠ»ΠΎ ΡΠ΅Π³Π° Π΄ΡΡΠ³ΠΎΠ³ ΡΠ΅ Π³ΡΠ±ΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ±ΡΠ·Π°ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΡΠ΅ΡΠΈ ΠΠΎΡΠΊΠ΅Ρ-Ρ ΠΊΠΎΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ΅ Π΄Π° ΠΈΠ³Π½ΠΎΡΠΈΡΠ΅. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡΡΠ΅Π±Π°Π½ Π½Π°ΠΌ ΡΠ΅ ΡΠ°ΡΠ» .dockerignore. ΠΠΈ, Π°ΠΊΠΎ ΡΡΠ΅ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° ΡΠ°ΡΠ»ΠΎΠΌ .gitignore, ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ Π²Π΅ΡΠΎΠ²Π°ΡΠ½ΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΎ. ΠΠ½ Π½Π°Π²ΠΎΠ΄ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ΅ ΠΊΠΎΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΡΠ»ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ³Π½ΠΎΡΠΈΡΠ΅. Π£ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΡΠ°Π΄ΡΠΆΠ°Ρ ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ:
node_modules
src
public ΡΠ°ΡΠ» .dockerignore ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ Ρ ΠΈΡΡΠΎΡ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΊΠ°ΠΎ ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Dockerfile. Π‘Π°Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ»ΠΈΠΊΠ΅ ΡΡΠ°ΡΠ°ΡΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΡΠ°Π΄Π° ΡΠ°Π΄ΠΈΠΌΠΎ Π½Π° ΡΠ»ΠΈΡΠΈ Π·Π° ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ.
βΠΠ·ΡΠ°Π΄Π° ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΠ½Π°ΡΠ΅ ΡΡΠ°, Π²Π΅Ρ ΡΡΠ΅ Π½Π°ΡΡΠΈΠ»ΠΈ ΡΠ²Π΅ ΡΡΠΎ Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π΄Π° Π±ΠΈΡΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠ°ΡΠΎ ΡΠ΅ ΠΎΠ²Π°Ρ ΠΎΠ΄Π΅ΡΠ°ΠΊ Π±ΠΈΡΠΈ Π²Π΅ΠΎΠΌΠ° ΠΊΡΠ°ΡΠ°ΠΊ.
Otvorite datoteku DockerfileΠΊΠΎΡΠΈ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° sa-webapp. ΠΠΊΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ΠΊΡΡ ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π²Π΅ Π½ΠΎΠ²Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ΅ Ρ ΡΠΎΡ, ΠΏΠΎΡΠ΅Π²ΡΠΈ ΠΎΠ΄ ΠΊΡΡΡΠ½ΠΈΡ
ΡΠ΅ΡΠΈ ENV ΠΈ EXPOSE:
ENV SA_LOGIC_API_URL http://localhost:5000
β¦
EXPOSE 8080 ΠΡΡΡΠ½Π° ΡΠ΅Ρ ENV ΠΠΌΠΎΠ³ΡΡΠ°Π²Π° Π²Π°ΠΌ Π΄Π° Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΡΠ½ΡΡΠ°Ρ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π£Π Π Π·Π° ΠΏΡΠΈΡΡΡΠΏ ΠΠΠ-ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ° Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ°.
ΠΡΡΡΠ½Π° ΡΠ΅Ρ EXPOSE ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΠΎΡΠΊΠ΅Ρ-Ρ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈ ΠΏΠΎΡΡ. ΠΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ ΠΎΠ²Π°Ρ ΠΏΠΎΡΡ Π΄ΠΎΠΊ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ. ΠΠ²Π΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠΈ Π΄Π° Ρ Dockerfile Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Ρ SA-Frontend Π½Π΅ΠΌΠ° ΡΠ°ΠΊΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠ²ΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠΎΡΡΠ΅Π±Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅, Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠΈΠΌΠ°, ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π° ΠΎΠ½ΠΎΠΌΠ΅ ΠΊΠΎ ΡΠ΅ ΡΠΈΡΠ°ΡΠΈ Dockerfile.
ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ»ΠΈΠΊΠ΅ ΠΈ ΡΠ΅Π½ΠΎ Π³ΡΡΠ°ΡΠ΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΈΡΡΠΎ ΠΊΠ°ΠΎ Ρ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠΊΠΎ ΡΠΎΡ Π½ΠΈΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Ρ ΡΠ²ΠΎΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΡΠΈ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ README.md Ρ ΡΠΎΠ»Π΄Π΅ΡΡ sa-webapp.
βΠΠ·ΡΠ°Π΄Π° ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Dockerfile Ρ ΡΠΎΠ»Π΄Π΅ΡΡ sa-logic, ΠΎΠ½Π΄Π° ΡΠ°ΠΌΠΎ Π½Π΅ΡΠ΅ΡΠ΅ Π½Π°ΡΠΈ Π½ΠΈΡΡΠ° Π½ΠΎΠ²ΠΎ Π·Π° ΡΠ΅Π±Π΅. ΠΠΎΠΌΠ°Π½Π΄Π΅ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΈ ΡΠ»Π°ΡΠ΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π²Π°ΠΌ Π±ΡΠ΄Ρ ΠΏΠΎΠ·Π½Π°ΡΠ΅, Π°Π»ΠΈ, ΠΊΠ°ΠΎ ΠΈ ΠΊΠΎΠ΄ Π΄ΡΡΠ³ΠΈΡ
Π½Π°ΡΠΈΡ
Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΌΠΎΠ³Ρ ΡΠ΅ Π½Π°ΡΠΈ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ README.md Ρ ΡΠΎΠ»Π΄Π΅ΡΡ sa-logic.
βΠ’Π΅ΡΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²ΡΠ΅ΡΠΎΠ²Π°ΡΠΈ Π½Π΅ΡΠ΅ΠΌΡ ΡΡΠΎ Π½ΠΈΡΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ°Π»ΠΈ? ΠΠ΅ ΠΌΠΎΠ³Ρ Π½ΠΈ ΡΠ°. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΡΠ΅ΡΡΠΈΡΠ°ΠΌΠΎ Π½Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅.
- Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
sa-logicΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΈΡΠ΅ Π³Π° Π΄Π° ΡΠ»ΡΡΠ° Π½Π° ΠΏΠΎΡΡΡ5050:docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic - Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
sa-webappΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΈΡΠ΅ Π³Π° Π΄Π° ΡΠ»ΡΡΠ° Π½Π° ΠΏΠΎΡΡΡ8080. ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΠΌΠΎ ΠΏΠΎΡΡ Π½Π° ΠΊΠΎΡΠ΅ΠΌ ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ»ΡΡΠ°ΡΠΈ Π·Π°Ρ ΡΠ΅Π²Π΅ ΠΈΠ· ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π΄ΠΎΠ΄Π΅Π»ΠΈΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°SA_LOGIC_API_URL:$ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app
ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠ°Π·Π½Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ°Π·Π½Π°ΡΠ΅ ΠΠ Π°Π΄ΡΠ΅ΡΡ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ .
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ sa-frontend:
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend Π‘Π°Π΄Π° ΡΠ΅ ΡΠ²Π΅ ΡΠΏΡΠ΅ΠΌΠ½ΠΎ Π·Π° ΠΎΠ΄Π»Π°Π·Π°ΠΊ Π½Π° Π°Π΄ΡΠ΅ΡΡ Ρ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ localhost:80 ΠΈ ΠΈΡΠΏΡΠΎΠ±Π°ΡΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ.
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° Π°ΠΊΠΎ ΡΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΠΎΡΡ Π·Π° sa-webapp, ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΠΎΡΠΊΠ΅Ρ Π²ΠΈΡΡΡΠ΅Π»Π½Ρ ΠΌΠ°ΡΠΈΠ½Ρ, ΠΌΠΎΡΠ°ΡΠ΅ΡΠ΅ Π΄Π° ΡΡΠ΅Π΄ΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ App.js ΠΈΠ· ΡΠ°ΡΡΠΈΠΊΠ»Π΅ sa-frontendΠΏΡΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π±ΡΠΎΡΠ° ΠΏΠΎΡΡΠ° Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ analyzeSentence(), Π·Π°ΠΌΠ΅ΡΡΡΡΡΠΈ Π°ΠΊΡΡΠ΅Π»Π½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΡΠΌΠ΅ΡΡΠΎ Π·Π°ΡΡΠ°ΡΠ΅Π»ΠΈΡ
ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°. ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, ΠΌΠΎΡΠ°ΡΠ΅ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΡΠ°ΡΡΠ°Π²ΠΈΡΠΈ ΡΠ»ΠΈΠΊΡ ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ΅.
ΠΠ²Π°ΠΊΠΎ ΡΠ°Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° Π½Π°Ρ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.

ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ ΡΠ°Π΄Π΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°
Π Π΅Π·ΠΈΠΌΠ΅: Π·Π°ΡΡΠΎ Π½Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ?
Π£ΠΏΡΠ°Π²ΠΎ ΡΠΌΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°Π»ΠΈ ΡΠ°ΡΠ»ΠΎΠ²Π΅ Dockerfile, Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠΈ ΡΠ»ΠΈΠΊΠ΅ ΠΈ Π³ΡΡΠ½ΡΡΠΈ ΠΈΡ
Ρ ΠΠΎΡΠΊΠ΅Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅. ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, Π½Π°ΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ±ΡΠ·Π°ΠΌΠΎ ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΏΠΎΠΌΠΎΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ .dockerignore. ΠΠ°ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΎΠ³Π°, Π½Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ ΡΠ°Π΄Π° ΡΠ°Π΄Π΅ Ρ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°. ΠΠ²Π΄Π΅ ΡΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΄Π° ΠΈΠΌΠ°ΡΠΈ ΡΠ°ΡΠ²ΠΈΠΌ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ ΠΏΠΈΡΠ°ΡΠ΅ Π·Π°ΡΡΠΎ Π½Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ. ΠΡΡΠ³ΠΈ Π΄Π΅ΠΎ ΠΎΠ²ΠΎΠ³ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° Π±ΠΈΡΠ΅ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΡ Π½Π° ΠΎΠ²ΠΎ ΠΏΠΈΡΠ°ΡΠ΅. Π£ ΠΌΠ΅ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Ρ, ΡΠ°Π·ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΠ΅:
ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π½Π°ΡΠ° Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΡΡΠ°Π»Π° ΠΏΠΎΠΏΡΠ»Π°ΡΠ½Π° ΡΠΈΡΠΎΠΌ ΡΠ²Π΅ΡΠ°. Π‘Π²Π°ΠΊΠΎΠ³ ΠΌΠΈΠ½ΡΡΠ° ΠΌΡ ΡΡΠΈΠΆΡ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π·Π°Ρ
ΡΠ΅Π²Π°. Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ sa-webapp ΠΈ sa-logic Π±ΠΈΡΠ΅ ΠΏΠΎΠ΄ ΠΎΠ³ΡΠΎΠΌΠ½ΠΈΠΌ ΠΎΠΏΡΠ΅ΡΠ΅ΡΠ΅ΡΠ΅ΠΌ. ΠΠ°ΠΊΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΊΠΎΡΠΈ ΠΏΠΎΠΊΡΠ΅ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅?
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ
Π°Π±Ρ.ΡΠΎΠΌ
