π₯ Π£Π²ΠΎΠ»ΡΡΠ΅ ΡΠ²ΠΎΠΈΡ
HR Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π³ΠΎΠ²ΠΎΡΡΡ Π²Π°ΠΌ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΠ»ΠΈΡΡ ΡΠΈΠ»ΡΡΡΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠΆΠ΅ΡΡΠΎΡΠΈΡΡ ΡΠΊΡΠΈΠ½ΠΈΠ½Π³.
β Π ΠΊΡΠΎ ΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΊΡΠΈΠ½ΠΈΠ½Π³?
β Π‘Π°ΠΌΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΡ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅:
ΠΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ, ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ²Π΅. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΎΠΏΡΠΎΡΠ½ΠΈΠΊ Π΄Π»Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠ². ΠΠ°Π±ΡΠΎΡΠ°ΠΉΡΠ΅ ΡΠΈΠΏΠΎΠ²ΡΡ
issue, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅. ΠΠΏΠΈΡΠΈΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½. ΠΠ°Π½Π΄ΠΈΠ΄Π°ΡΡ ΡΠ°ΠΌΠΈ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ΅Π±Ρ, ΠΏΠΎΡΡΠ½ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ. HR, Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΠΆΠ°Π΅Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌΠΈ, Π½Π΅ Π΄Π°Π²Π°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΡΡΡ ΠΊ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌ, Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΡΡΠΈΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌ ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΡΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠΌΠΈ. ΠΠ΅ Π±ΠΎΠΉΡΠ΅ΡΡ, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅, ΠΎΠ±ΠΌΠ°Π½ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΌΡΡΠ» ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΡ Π²ΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Π²ΡΡΡΠ½ΠΈΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ. ΠΠ°, Π±ΡΠ΄ΡΡ ΡΠ±ΠΎΠΈ Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π±ΡΠ΄ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½Π΅Π°Π΄Π΅ΠΊΠ²Π°ΡΡ, Π½ΠΎ ΡΠ°Π·Π²Π΅ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠΎΡ
ΠΎΠ΄ΡΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠ»ΡΡΡΡ? Π Π² ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π»ΡΠ΄ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠ΅Π±Ρ ΠΎΡΠ΅Π½ΠΈΡΡ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎ.
ΠΡΠ΄Π° ΠΈΠ΄Π΅Ρ Metarhia: Π ΠΌΠΈΡΠ΅ Java ΠΈ C# Π²ΡΠ΅ ΡΠ΅ΡΠ°ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠ°Β hibernate. ΠΠ΄Π΅-ΡΠΎ ΠΎΠ½ΠΈ ΠΈΠ΄ΡΡ ΠΊΠ°ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, Π½ΠΎ Π±Π΅Π·Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π°Ρ, Π° Π³Π΄Π΅-ΡΠΎ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΌΡΡΠ» - Π² Π½ΠΈΡ Π²ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΌΠ°Π½ΠΎ, Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ Π·Π°Π΄Π°Ρ, ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠΆΠ΅ ΡΠ΅ΡΠ΅Π½Ρ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. Π ΠΌΠΈΡΠ΅ node.js ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ, ΡΡΡ Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΡΒ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, Π½ΠΎ ΠΈΡ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅. ΠΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ 80% Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΈΡ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ, Π½Π°Π»Π°ΠΆΠΈΠ²Π°ΡΡ, ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²ΡΠ²Π°ΡΡ. Π’ΠΎ Π»ΠΎΠ³Π³Π΅Ρ ΠΎΡΠΏΠ°Π», ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ ΠΏΠΎΡΠΊΠΎΠ»ΡΠ·Π½ΡΠ»ΡΡ, ΡΠΎ ΡΠΎΡΡΠΈΠ½Π³ ΡΠ°Π·Π»Π΅ΡΠ΅Π»ΡΡ, ΡΠΎ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΎΡΠΏΠ°Π»Π°. ΠΡΠ΅ ΡΡΠΎ ΠΈΠ·-Π·Π° Π²Π΅ΡΡΠΈΠΉ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ , ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΈΡ ΠΆΠ΅ Π°Π²ΡΠΎΡΡ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ ΡΠ΅Π±Ρ ΠΈ ΡΠ²ΠΎΠΈ Π½ΡΠΆΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡΡΡ. Π‘ΠΎΠ±ΠΈΡΠ°ΡΡ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ ΠΏΠ°Π·Π»Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½ΠΎΠΆΠ½ΠΈΡ ΠΈ ΠΊΠ»Π΅Ρ - ΡΠ°ΠΊΠ°Ρ ΡΠ΅Π±Π΅ Π·Π°ΡΠ΅Ρ, Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½Π° ΡΠ΅ΡΠ°Π΅ΠΌΠ°, Π½ΠΎ Π²ΡΠ΅ ΡΠ°ΡΡΡΠΏΠ°Π΅ΡΡΡ Π² ΡΡΠΊΠ°Ρ , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠ΅ΡΠ°ΡΡ ΠΈΡ Π³ΠΎΡΠΎΠ²ΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π΄Π°ΠΆΠ΅ Π·Π½Π°Π½ΠΈΠΉ ΠΏΠΎ Π½ΠΎΠ΄Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅ΡΒ Π² Π΄Π΅ΡΡΡΠΊΠΈ ΡΠ°Π· ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π½Π° ΡΠΈΡΡΠΎΠΉ Π½ΠΎΠ΄Π΅Β ΠΏΠΈΡΠ°ΡΡ, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΏΡΠΎ ΡΠ°Π·Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΡΠ΅ ΠΏΠΈΡΠ°Π»ΠΎ ΡΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². ΠΠΎ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΡΠΎ ΡΠΎ, ΡΡΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ Π΅Π΅ ΡΠ΅ΡΠ°ΡΡ, Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π½ΠΎ Π²ΡΠ΅ ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠΈΡΡ ΡΠΎ ΡΡΠ°ΡΡΠ°, ΠΈ ΡΡΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π»ΠΎΡΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° "ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°", ΡΠΎ Π΅ΡΡΡ, Π΅ΡΡΡ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , Π΅ΡΡΡ Π°ΠΏΠΈ ΠΈ Π΄ΠΎΠΌΠ΅Π½Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°. Π’Π°ΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΌΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈ ΠΈΠ³ΡΡ ΠΈ ΠΊΠΎΠ»Π°Π±ΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅Β ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΡΡΠΈΠΌΠΈΠ½Π³ ΠΈ ΡΠ°ΡΡ ΠΈ ΡΠΆΠ΅ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ, Π½ΠΎ Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ 3-4 ΡΠΈΠΏΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π² 100 ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π½Π°Β ΡΡΠ΅ΠΉΠ²ΠΎΡΠΊΠ°Ρ Β ΡΠΈΠΏΠ° nest.js, ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ Π±Π΅ΡΠ΅ΠΌ ΠΈΠ΄Π΅Ρ ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΡ Java ΠΈ C#, Π½ΠΎ Π½Π΅ Π±Π΅ΡΠ΅ΠΌ Π²Π΅ΡΡ ΠΊΡΠΎΠ²Π°Π²ΡΠΉ ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ·, Π° Π΄Π΅Π»Π°Π΅ΠΌ Π²ΡΠ΅ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΌ, Π΄Π°ΠΆΠ΅ DDD ΠΈ ΡΠΈΡΡΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Ρ Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ ΠΈ Π±Π΅Π· ΠΎΠ²Π΅ΡΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΠ½Π³Π°. ΠΠΎΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π° 30 ΠΌΠΈΠ½ΡΡ Π²ΡΡ https://github.com/metarhia/Docs ΠΠΎ ΠΊΠΎΠ½ΡΠ° ΠΌΠ΅ΡΡΡΠ° Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ-ΠΊΡΡΡ Ρ ΡΠ°Π·Π±ΠΎΡΠΎΠΌ Π΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈΒ Π·Π° ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π½Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ.
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ΅ΠΊ Metarhia ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ Π³ΠΎΡΠΎΠ²ΠΈΡΡΡ ΠΊΡΡΡ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. https://github.com/metarhia/Docs
- ΠΠ΅ΡΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Node.js Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ API-Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΊ API ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°ΠΌ (Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠ°ΡΡΡΡΡΡ Π²ΡΡΡΠ½ΡΡ)
- Π’Π°ΠΉΠΌ-Π°ΡΡΡ ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
- Π‘Ρ Π΅ΠΌΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² API, Π°Π²ΡΠΎ-Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ²: HTTP, HTTPS, WS, WSS
- Π Π°Π·Π½ΡΠ΅ ΡΡΠΈΠ»ΠΈ API: RPC ΡΠ΅ΡΠ΅Π· AJAX ΠΈ ΡΠ΅ΡΠ΅Π· Websocket, REST ΠΈ Π²Π΅Π±-Ρ ΡΠΊΠΈ
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π½Π° Π»Π΅ΡΡ, Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°
- ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ graceful shutdown Ρ Ρ ΡΠΊΠ°ΠΌΠΈ start ΠΈ stop
- ΠΠ²ΡΠΎ-Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠ΄Π° ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
- ΠΠΈΠ½ΠΈΠΌΡΠΌ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠ΄Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π½Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
- Π‘Π»ΠΎΠ΅Π½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°: api, Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ°, Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄
- ΠΠ΅ΡΠΎΡΠ½ΠΈΡΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
- ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·Π½Π΅Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π·Π°Π³ΡΡΠ·Π½Π΅Π½ΠΈΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ
- ΠΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ΠΏΠΎΡΡΡ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ²
- ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ API ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
- ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ² Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
- Π‘Π»ΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·Π΅, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ Ρ PostgreSQL, Ρ Π·Π°ΡΠΈΡΠΎΠΉ ΠΎΡ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠΉ
- ΠΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ, Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅
- ΠΡΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π»ΠΎΠ³ (Π»Π΅Π½ΠΈΠ²Π°Ρ Π·Π°ΠΏΠΈΡΡ) Ρ ΡΠΎΡΠ°ΡΠΈΠ΅ΠΉ (Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ N Π΄Π½Π΅ΠΉ)
- ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΡΡ ΡΠ°Π½Π½Π΅Ρ node.js ΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ
- Π£ΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ²: Π·Π°Π³ΡΡΠ·ΠΊΠ°, ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅, partial-content ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ
- ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
π Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΡΡΠΎΡ β ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ, ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡΡΠΎΡ, ΡΡΠΎ Π²ΡΠ΅, ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΠ΅, ΡΡΠΎ Π½Π΅ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΡΠΈΡΠ°Π΅ΠΌΠΎΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ, Π²ΡΠ΅, ΡΡΠΎ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π΄ΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΡΡΠΈ, Π»ΠΈΡΠ½ΠΈΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΈ, ΠΊΠ»Π°ΡΡΡ, Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ, ΠΈ Π²ΡΠ΅, ΡΡΠΎ Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΡΡΡ, ΠΊΠΎΠΏΠΈΠΏΠ°ΡΡΠΈΡΡ, Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΡΡΠΎΡ, ΡΡΠΎ ΡΠΎ, ΠΈΠ· ΡΠ΅Π³ΠΎ Π½Π° 80% ΡΠΎΡΡΠΎΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ ΡΠΎΡ, ΡΡΠΎ Π²Ρ ΡΡΠ½Π΅ΡΠ΅ ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΏΡΠΎΠ΅ΠΊΡ.
π ΠΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠ΅ΠΊΡ, ΠΈ Ρ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠ²ΡΡΠ²ΡΡ Π²ΠΈΠ½Ρ Π·Π° Π΅Π³ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅: ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΡΠ·ΡΠΊ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π½ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π° ΡΠ»ΠΎΠΆΠ½ΡΡ Π»Π΅ΠΊΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΡΡΡΠΎΠ΅Π½ΠΎ Π²Π½ΡΡΡΠΈ, ΠΎ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡ , Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ, ΡΠ±ΠΎΡΠΊΠ΅ ΠΌΡΡΠΎΡΠ°, ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΈΠ²Π΅Π½ΡΠ»ΡΠΏΠ΅ ΠΈ Ρ.Π΄. ΠΈ Π²ΠΎΡ Π΅ΠΌΡ Π΄Π°ΡΡ Π·Π°Π΄Π°ΡΡ (ΠΈΠ»ΠΈ ΠΎΠ½ ΡΠ°ΠΌ ΡΠ΅Π±Π΅ Π΅Π΅ ΡΡΠ°Π²ΠΈΡ) Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: Β«ΡΠ΄Π΅Π»Π°ΡΡ Π°ΠΏΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΏΠΈΡΠΊΠ° Π³ΠΎΡΠΎΠ΄ΠΎΠ²Β» ΠΈ ΡΡΡ ΠΎΠ½ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΏΡΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ, Π±Π΅ΠΊΠΏΡΠ΅ΡΠ΅Ρ Π² ΡΡΡΠΈΠΌΠ°Ρ , ΠΏΡΠΎ ΠΈΠ½Π²Π΅ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ... Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎ Π½Π°ΡΠΊΠ΅, ΡΡΠΎΠ± ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈΡΠ»ΠΎ ΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ 10 ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΡΠ½ΠΈ ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π΅ Π² JSON ΡΠ»Π°ΡΡ, Π° ΠΏΡΠΈΠ΄ΡΠΌΠ°Π΅ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΌ Π½Π° ΠΊΠ°Π²ΡΡΠΊΠ°Ρ ΠΈ Π·Π°ΠΏΡΡΡΡ , Π±ΡΠ΄Π΅ΠΌ ΡΡΡΠΎΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»Π°ΡΡ Π±Π°ΠΉΡΠΎΠΌ FF, ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΠΈ Π΄ΠΎΠΊΠ°ΡΠΊΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΎΡΠ²Π°Π»ΠΎΡΡ Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΡΠ° ΠΈ ΡΡΠΎΠ± ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, Π½ΠΎ Π±ΡΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ... Π Π΅ΡΠ»ΠΈ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²Π΅Π±ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΏΡΠΈΡΡΠ»Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΈ ΡΠ°ΠΉΠΌΠ°ΡΡ Π΄Π΅ΡΠΆΠ°ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π΄ΠΎΠΊΠ°ΡΠΊΠ° Π½Π΅ Π½Π°ΡΠ°Π»Π°ΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ 5 ΠΌΠΈΠ½ΡΡ, ΡΠΎ ΡΠΆΠ΅ Π½Π΅ Π½Π°ΡΠ½Π΅ΡΡΡ, Π° Π΅ΡΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, Π½ΠΎ ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈΡΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΡ, Π° Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΠ»ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΆΠ΅... ΠΈ ΡΡΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ°ΠΊ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΠ°ΡΡ ΠΎΡ Π²Π»ΠΈΡΠ½ΠΈΡ ΠΊΠΎΡΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π»ΡΡΠ΅ΠΉ... Ρ ΡΠΆΠ΅ Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΠΏΡΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΡΡ ΠΈ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½ΡΠΆΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ Π³ΠΎΠ½ΡΡΡ ΠΏΠ°ΡΡ ΡΠ°ΡΠΎΠ². ΠΡ... Π²ΡΠ΅ ΡΡΠΎ... ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡ Π»Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈ Ρ Π½Π΅ Ρ ΠΎΡΡ ΠΎΡΠ³ΠΎΠ²Π°ΡΠΈΠ²Π°ΡΡ ΠΎΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΉΡΠ΅ΡΡ ΡΠ΅Π±Π΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π· Π³ΠΎΠ΄, Π΄Π²Π°, ΡΡΠΈ, ΠΏΡΠΈΠΊΠΈΠ½ΡΡΠ΅ Π³ΡΡΠ±ΠΎ, Π½Ρ Π½Π° 2 ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΈ Π΄Π°ΡΡ ΡΠ΅Π±Π΅ ΠΎΡΡΡΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π»ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ R&D.
Π’ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠ² ΠΊ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠΌΡ API (Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ fetch
), ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ fetch
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ AbortController
, Π½ΠΎ Π½Π΅ Π²ΡΠ΅ Π·Π½Π°ΡΡ ΠΏΡΠΎ AbortSignal.timeout()
ΠΈ Π΅ΡΡΡ API Π±Π΅Π· ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Π΅ΡΡΡ ΡΡΠΎ. https://github.com/HowProgrammingWorks/AbortController
ΠΠΎΠΊΠ° Π΄Π΅Π»Π°Π» Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ WebAssembly Π΄Π»Ρ ΠΊΡΡΡΠ° ΠΏΠΎ Node.js Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Rust, C++, WAT, AssemblyScript, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ wasm-pack ΠΈΠΌΠ΅Π΅Ρ Π½Π΅Π²ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΈ Π³Π»ΡΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ Π½Π° 3 ΠΊΠΈΠ»Π°, Π²ΠΎΡ ΡΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ Π½Π° 10 ΡΡΡΠΎΠΊ Π΄Π»Ρ Π½ΠΎΠ΄Ρ https://github.com/HowProgrammingWorks/WebAssembly ΠΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠΆΠ΅ Π² npm, Π»Π΅ΠΆΠΈΡ ΡΡΡ: https://github.com/tshemsedinov/wasm-import
π ΠΠ΅ΡΠ½ΠΎΠΉ Ρ ΡΠ΄Π΅Π»Π°Π» ΡΠ΅ΠΊΠ»ΠΈΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ #NodeJS β ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ 14.x ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΠ· 16.x, 18.x, 20.x β https://github.com/tshemsedinov/Drop-Nodejs14 β‘οΈ Π‘Π΅ΠΉΡΠ°Ρ ΡΠΆΠ΅ Π½Π°ΡΠ°Π» Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ 16.x, Ρ.Π΅. ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π² 18.x ΠΈ 20.x β‘οΈ ΠΠ°ΠΌΠ΅ΡΡ, Π³Π»Π°Π²Π½ΡΠΉ ΡΠΏΠΎΡ ΡΡΡ, Π½Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡΡ , Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠ°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ.
ΠΠ°ΠΈΠ»ΡΡΡΠΈΠΉ ΠΈΠ· ΠΌΠ½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΡΠ°Π²ΠΈΡΡ SQL Π² ΠΊΠΎΠ΄ Π½Π° JavaScript Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΡ
ΡΡΡΠΎΠΊ, ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ${name}
ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅ΡΠ΅Π· ${'name'}
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ. ΠΠΎΠ΄ ΠΈ ΡΠ΅ΡΡΡ (ΠΎΠ½ΠΈ ΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π²ΡΠ·ΠΎΠ²Π°) ΡΡΡ: https://github.com/metarhia/metasql/pull/273/files
const query = db.sql`
SELECT * FROM "City"
WHERE "cityId" < ${5} AND "name" <> 'La Haye-en-Touraine'
ORDER BY name LIMIT 3
`;
const cityCodes = await query6.dict('name', 'cityId');
// { Alexandria: '3', Athens: '4', Paris: '1' }
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΠΏΠ΅ΡΠ΄ΡΠ΄ΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Π±ΠΈΠ»Π΄Π΅ΡΠ°. ΠΠ΅Π½ΠΈΠ²ΡΠΉ ΡΡΠΈΡ Π΄Π²Π°ΠΆΠ΄Ρ: Π΅ΡΠ»ΠΈ ΠΊΡΠΎ ΡΡΠΈΠ» ORM, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠΈΡΡ SQL, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΡ ΠΈ ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΠΈΠ»Π΄Π΅ΡΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² (ΡΠ΅ΠΈΠ½ΠΈΠ½Π³) ΠΈ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Thenable: https://github.com/HowProgrammingWorks/Thenable/blob/master/JavaScript/a-query.js
const sql = await new Query('cities')
.where({ country: 10, type: 1 })
.order('population')
.limit(10);
ΠΠ°ΠΊΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΡΠ΅Π±Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ? ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈΠ»ΠΈ data-aware (Π° ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ²), ΡΠΈΡΡΠ΅ΠΌ Π³Π΄Π΅ Π΅ΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΎΡΠ΅ΡΡΡ. Π‘ΡΠ΄Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ Π»ΠΎΠΆΠΈΡΡΡ ΠΈ Π²Π΅Π± ΠΈ ΡΠ½ΡΠ΅ΡΠΏΡΠ°ΠΉΠ·. Π’Π°ΠΊ Π²ΠΎΡ, ΡΡΠ΅Π±Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π»ΡΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡ Π½Π΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»Π³ΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΈ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π³ΡΡΠΏΠΏΠΎΠ²ΠΎΠΉ, Π΄Π΅Π»Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ, ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Ρ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ΠΌ, Π²ΠΊΠ»ΡΡΠ°ΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΠΈΠ·: Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠ°Π², ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΠΎΡΡΠΈΠ½Π³ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ², ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΡ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ΅ΡΡΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ±ΠΎΡΠΊΠ°, ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ ΠΈ ΡΠ±ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π²Π΅ΡΠ°Π½ΠΈΠ΅, ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ»ΠΈ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΠ»Π»Π°Π±ΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠ°ΡΡΠΈΠ½Π³, ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ, ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅ΡΡΠΈΠΈ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΠΎΡΠΈΠΏΠ½ΡΡ Π‘Π£ΠΠ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ postgresql ΠΈ redis), ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠΉΠ½ΠΎΡΡΡ, ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ (Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Ρ.Π΄.), ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠ°ΡΡΡΠ»ΠΊΠ° ΠΏΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΠΈΡ Π½ΠΎΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ.
- ΠΡΠΈΠΌΠ΅ΡΠΈΡ consistent return Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
void
ΠΊΠ°ΠΊ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΅ΡΠ΅Π·return
, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρcallback
: https://github.com/HowProgrammingWorks/ConsistentReturn/tree/main/JavaScript - Eslint ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ: https://eslint.org/docs/latest/rules/consistent-return
ΠΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ Middleware Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΡΠ½ΠΈΡΡ, ΠΎΠ½ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ race condition, Π° ΡΠΎΡΠ½Π΅Π΅ ΠΈ ΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌ ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΈ ΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌ ΠΏΠΎ control flow, Π½ΠΎ Π΅ΡΠ΅ ΠΈ Π²ΡΡΡΠ΅ΡΠΊΠΈ ΡΡΠΈΠ»ΠΈΠ²Π°Π΅Ρ Π·Π°ΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (coupling) ΠΊΠΎΠ΄Π°:
β οΈ ΠΡΠΎΠ²ΠΎΡΠΈΡΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ΠΉ (mixins), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: res.sessionStarted = true; ΠΈ ΠΏΠΎΡΠΎΠ² Π² ΠΊΡΡΠ΅ ΠΌΠ΅ΡΡ if res.sessionStartedΒ ΠΈΠ»ΠΈ res.userName = 'idiot';β οΈ ΠΡΠΎΠ²ΠΎΡΠΈΡΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΠΊΠ°Π½ΠΈΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ - ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°Π»Π΅Π·Π°Π΅ΠΌ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ req ΠΈ res ΠΈ ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅Β ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ, ΡΠΎΠΊΠ΅ΡΠΎΠ², Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ Ρ.Π΄. Π½Π΅ ΡΠ΅ΡΠ΅Π· Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Ρ.Π΅. ΠΌΠ΅ΡΠΎΠ΄Ρ, Π½Π΅ ΠΏΠΎ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ, Π° ΠΏΠ°ΡΡΠ°ΠΌΠΈ, ΠΎΠ±Π΅ΡΡΠΊΠ°ΠΌΠΈ, Π² ΠΎΠ±ΡΠ΅ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ws (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²Π΅Π±ΡΠΎΠΊΠ΅ΡΠΎΠ²) ΠΏΠ°ΡΡΠΈΡ http ΡΠ΅ΡΠ²Π΅Ρ ΠΈ Π²Π½Π΅Π΄ΡΡΠ΅ΡΡΡ Π² Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄Π° Π΄ΠΎ Π²Π΅Π±ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ, ΡΡΠΎ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² JavaScript, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΡΠ΅ΡΠΈΡΡ Π»ΡΠ±ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠ΄ΡΠΌΠ°ΡΡ, ΠΏΠΎΠΊΡΡΡΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ, ΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΡΠ°Π·Π²Π°Π»ΠΈΡΡΡ Π²ΡΠ΅ ΠΆΠ΅ Π²Π΅Π»ΠΈΠΊΠ°. Π ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠΊ, Π° Π²ΠΎΡ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΠΎΠΌ Π½ΡΠΆΠ½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΆΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΠΊΠ°Π½ΠΈΠ΅, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅Π³ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ, ΡΠΌ. "ΠΠ°ΠΊΠΎΠ½ Π΄ΡΡΡΠ²ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ".β οΈ ΠΡΠΎΠ²ΠΎΡΠΈΡΡΠ΅Ρ reference pollution ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ: ΡΡΡΠ»ΠΊΠΈ Π½Π° req ΠΈ res ΡΠ°ΡΠΏΠΎΠ»Π·Π°ΡΡΡΡ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΠ°ΡΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: serviceName.method(req, res, ...); ΠΈΠ»ΠΈ Π½Π° ΡΠ°ΡΡΠΈ req ΠΈ res, ΠΏΡΠΈΠΌΠ΅Ρ: serviceName.method(req.socket, ...); ΠΈΠ»ΠΈ ΡΠ°ΠΊ: outside.emit('request', req); ΠΌΠ½ΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²: const f1 = method.bind(req); ΠΈΠ»ΠΈ const f2 = method(req)(res); ΠΈ Π΅ΡΠ΅ ΡΠΎΡΠ½ΠΈ.β οΈ ΠΡΠΎΠ²ΠΎΡΠΈΡΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ (race condition): ΡΠ΅ΡΠ΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ middleware ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π²Π½ΡΡΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ middleware ΡΡΠ°Π·Ρ ΠΈΠ»ΠΈ Π·Π° ΡΡΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π° req ΠΈ res ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΎΡΡΡΠ΄Π° ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΆΠ΅ Π±Π΅Π· ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ next, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎ setTimeout ΠΊΡΠΎ-ΡΠΎ ΡΠ΄Π΅Π»Π°Π» ΡΠ°ΠΉΠΌΠ°ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ»ΠΈ Π½Π° ΠΏΠΎ ΠΏΡΠΈΡ ΠΎΠ΄Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· ΡΡΡΠΈΠΌΠΎΠ²Β req ΠΈ res ΠΊΡΠΎ-ΡΠΎ Ρ Π΅Π°Π΄Π΅ΡΡΒ ΠΏΠΈΡΠ΅Ρ, Π° ΠΏΠΎΡΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΈΠ΄Π»Π²Π°Ρ ΡΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Ρ Π΅Π°Π΄Π΅ΡΡΒ Π·Π°ΠΏΠΈΡΠ°ΡΡ. ΠΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²Ρ ΡΠ°Π·Π²Π΅ Π½Π΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΈΠ΄Π»Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠ°ΠΊΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ ΡΠ°ΠΊΠΈ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΎΡΡ, ΡΠ°ΠΊ Π²ΠΎΡ ΡΡΠΎ ΠΏΠ»ΠΎΡ Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΎΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΡΠ²Π°Π΅Ρ Π³ΠΎΠ½ΠΊΡ, Π½ΠΎ ΠΏΡΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ»Π΅Π·ΡΠΈ.β οΈ ΠΡΠΎΠ²ΠΎΡΠΈΡΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ»ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ Π² Π½ΠΈΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ»ΠΎΠΈ, Π½Ρ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²ΡΠ΅, ΡΠ°ΠΊΠΎΠΉ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΅ ΡΡΠ°Π·Ρ, ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ http ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ, ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· SQL ΠΈ Π·Π°ΠΏΠΈΡΡ ΠΊΠ΅ΡΠ°Β Π² redis ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ, Π΄Π° ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π²ΡΠ΅ ΠΏΡΠΎΡΡΡΠ½Π΅ΠΉ... Π½Π΅Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½ΠΈΠΊΡΠΎ ΡΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ Π½Π΅ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ, ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π²ΡΠ΅ Π² ΠΊΡΡΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ»ΠΎΠΈ, ΠΈ Π²ΡΠ΄Π΅Π»ΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Ρ.Π΄., ΡΠΎΡΠ½Π΅Π΅, Π·Π½Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅, Π½ΠΎ ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ.β οΈ ΠΠΎΠ²ΡΡΠ°Π΅Ρ Π·Π°ΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ (code coupling) - Π²ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ, ΠΈ ΠΏΠΎΡΠ΅Π²Π΅Π»ΠΈΡΡ ΠΎΠ΄Π½ΠΎ, Π° Π»ΠΎΠΌΠ°Π΅ΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
π‘ Π‘Π°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅: ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ JavaScript ΠΈ Node.js
- 𧩠EventEmitter (ΠΎΠ½ ΠΆΠ΅ Observer), Π²ΡΡΡΠΎΠ΅Π½ Π² Π½ΠΎΠ΄Ρ, Π° Π½Π° ΡΡΠΎΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠ» ΠΈΠ»ΠΈ EventTarget,
- 𧩠Proxy - Π²ΡΡΡΠΎΠ΅Π½ Π² ΡΠ·ΡΠΊ, ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ,
- 𧩠Strategy - Ρ Π½Π°Ρ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Object ΠΈΠ»ΠΈ Map - ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ², Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ ΠΈ Ρ.Π΄.,
- 𧩠Facade - ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΌΠ½ΠΎΠ³ΠΎ Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ http2.createSecureServer ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΎΡ Π½Π°Ρ ΠΊΠ°ΠΊ TLS, ΡΠ°ΠΊ ΠΈ HTTP, ΠΏΠΎΡΠΎΠΊΠΈ, ΡΠ΅ΡΡΠΈΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ,
- 𧩠Adapter - ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±Π΅ΡΡΠΊΠ°, wrapper, ΠΏΡΠΈΠΌΠ΅ΡΡ: promisify, callbackify, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠ» fetch, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π²Π½ΡΡΡΠΈ XMLHttpRequest, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π°Π΄Π°ΠΏΡΠ΅Ρ, ΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, Π½ΠΎ Π½Π΅ ΡΠ°ΡΠ°Π΄, ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π·Π° ΡΠ°ΡΠ°Π΄ΠΎΠΌ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ»ΠΈ ΡΠ΅Π»Π°Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°,
- 𧩠Factory - Π€Π°Π±ΡΠΈΠΊΠ°, ΡΡΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ°, Π½ΠΎ Π² JS ΡΠ°Π±ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ², Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ,
- 𧩠ChainOfResponsibility - ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎ-Π°Π½Π°Π»ΠΎΠ³ Middleware, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ Π·Π° ΡΠ°ΡΠ΅Π½ΡΠΉ ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ°ΠΊ Π²Π΅Π΄Π΅Ρ Π½Π°Ρ ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π³ΠΎΠ½ΠΊΠΈ, ΠΏΡΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ChainOfResponsibility Π²ΡΠ΅ΠΌ ΡΡΠΎΠΈΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Middleware,
- 𧩠Decorator - Π²ΡΡΡΠΎΠ΅Π½ΡΠΉ Π² ΡΠ·ΡΠΊ, ΠΏΡΠΈ ΡΠ΅ΠΌ Π² JavaScript ΠΈ Π² TypeScript, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, Π½ΠΎ ΡΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π·Π° ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ,
- 𧩠Singleton - ΡΡΠΎ Ρ Π½Π°Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π°ΠΆΠ΅ ΠΊΠ»Π°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ,
- 𧩠Revealing constructor - ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ write Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Writable ΡΠ΅ΡΠ΅Π· options ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Writable Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π±Π΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΆΠ΅ ΠΈ Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Promise, ΠΌΡ ΡΠ°ΠΊ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΠΊ ΡΡΠΎΠΌΡ, Π½ΠΎ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΡΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° Π»ΡΠ΄Π΅ΠΉ:
- ΠΠ°ΡΡΠΈΠ»ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΡΡΠ΄Ρ β ΡΡΡΡΠΎΠΈΠ»ΡΡ ΡΠΎΡΠΌΠΎΡΠ»Π΅ΠΏΠΎΠΌ.
- ΠΠ°ΡΡΠΈΠ»ΡΡ Π΄Π΅Π»Π°ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠ΅, Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅, Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ β ΡΡΡΡΠΎΠΈΠ»ΡΡ ΡΠΎΡΠΌΠΎΡΠ»Π΅ΠΏΠΎΠΌ.
ΠΡΠ»ΠΈ ΠΡ ΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΈΠΏΠΈΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅ ΠΈΠ»ΠΈ Π°ΡΡΡΠΎΡΡΠ΅, Π² ΡΡΠ°ΡΡΠ°ΠΏΠ΅ ΠΈΠ»ΠΈ ΡΡΠΈΠ»Π°Π½ΡΠ΅, ΡΠΎ Π²ΠΎΡ Π½Π° ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ. ΠΠΎ ΡΡΠΎ Π½Π΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠ΅Ρ , ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ ΡΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Π’Π°ΠΊ Π²ΠΎΡ, ΡΡΠΎΠ±Ρ Π±ΡΡΡΡΠ΅Π΅ ΡΡΠΈΡΡΡΡ ΠΈ ΡΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅:
- ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ Π·Π°Π΄Π°ΡΠΈ Ρ Π»ΠΈΡΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Π΅Π²Π°ΡΡ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ. ΠΠΎ Π½ΡΠΆΠ΅Π½ Π½Π°Π²ΡΠΊ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΠΠΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° + GRASP ΠΈ SOLID.
- ΠΡΡΠΊΠΈΠ΅ ΡΡΠ΅Π±Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΠΈΠΏΠ° todo Π»ΠΈΡΡΠ°, ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°, ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ. ΠΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ, ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
- ΠΠ΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΡΠΎΠΆΠ΅ Π½ΠΈ ΠΊ ΡΠ΅ΠΌΡ Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅Π²ΡΡ ΠΊΠΎΠ΄Π°, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡ Π½Π°ΡΡΠ°Π²Π½ΠΈΠΊΠ° ΠΈΠ»ΠΈ ΠΎΡ Π΄ΡΡΠ·Π΅ΠΉ.
- ΠΠ°Π΄Π°ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ Π½Π΅ Π½ΡΠΆΠ½Ρ, ΠΡΠΎ Π·Π½Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½Ρ Π»ΠΈΠ΄Ρ, Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΡ ΠΈ CTO ΠΈ Π²Π°Π»ΠΈΠ΄Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠΈ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
- ΠΠΈΠΊΡΠΎΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΡΠΈΠΏΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ object[key], obejct.key ΠΈ Object.assign. Π Π½Π°ΡΠ°Π»Π΅ ΠΏΡΡΠΈ ΠΎΠ΄Π½Π° Π·Π°Π΄Π°ΡΠ° - ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
- ΠΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ (GoF ΠΈ Π΅ΡΠ΅ ΡΠΎΡΠ½Ρ), Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²ΡΠ΅Π³ΠΎ 2-3 ΡΠ°Π±Π»ΠΎΠ½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
- ΠΠ΅ ΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΈΠ·ΡΡΠΈΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ event loop, garbage collection, goroutine scheduler, ΡΡΠΎ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π½Π° ΡΠΎΠ±Π΅ΡΠ°Ρ , Π½ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π² ΡΠ°Π±ΠΎΡΠ΅.
- ΠΠ΅ Π²Π΅Π΄ΠΈΡΠ΅ΡΡ Π½Π° ΠΊΡΡΡΡΠ΅ ΡΠ΅ΠΌΡ, ΡΠΈΠΏΠ° Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ , ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈ ΡΡΠΏΠ΅Ρ-Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Π°Ρ ΠΊ Π½ΠΈΠΌ Π΅ΡΠ΅ Π΄ΠΎΠ»Π³ΠΎ Π½Π΅ Π΄ΠΎΠΏΡΡΡΡΡ.
- ΠΠ΅ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅, ΡΠ·ΡΠΊ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΡΡΠ»ΠΈΠ½Π³Π°, ΠΏΠΎΠ΄Π½Π°ΠΆΠΌΠΈΡΠ΅ Π½Π° git, github, Π»ΠΈΠ½ΡΠ΅ΡΡ, ide, docker, ci ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠ»Ρ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
- ΠΠΈΡΡΠΎ ΡΠ°ΠΊ Π½Π΅ ΠΎΡΠ²Π»Π΅ΠΊΠ°Π΅Ρ ΠΎΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΠ£Π ΠΈ Π½Π΅ Π²Π½ΡΡΠ°Π΅Ρ Π»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΡΠ²ΡΡΠ²Π° ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ ΠΠ’-ΠΊΡΡΡΡ ΠΎΡ ΠΈΠ½ΡΠΎΠΆΡΠ»ΠΈΠΊΠΎΠ².