ΠΠ΄ΡΠ°Π²Π΅ΠΉ, Π₯Π°Π±Ρ!
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ ΡΠ°Π·ΠΊΠ°Π·Π° Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΅ ΡΡΡΡΠΎΠ΅Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Ρ.

ΠΠ°ΡΠΎ ΡΠΌΡΡΠ°ΠΌΠ΅, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ? ΠΡΡΠ²ΠΎ, Π·Π°ΡΠΎΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° β1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ 8β Π΅ Π³ΠΎΠ»ΡΠΌΠΎ (ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 10 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° ΠΊΠΎΠ΄) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° C++ (ΠΊΠ»ΠΈΠ΅Π½Ρ, ΡΡΡΠ²ΡΡ ΠΈ Ρ.Π½.), JavaScript (Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ), ΠΈ ΠΎΡ ΡΠΊΠΎΡΠΎ ΠΈ . ΠΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΠ½Π΅ Π·Π°ΡΠ°Π΄ΠΈ ΠΌΠ°ΡΠ°Π±Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠΏΡΠΎΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ Π·Π°Π±Π΅Π»ΡΠ·Π²Π°Ρ Π² ΠΌΠ°Π»ΠΊΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π±Π°Π·ΠΈ, Π² ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈΠ·Π»ΠΈΠ·Π°Ρ Π½Π° ΠΏΡΠ΅Π΄Π΅Π½ ΠΏΠ»Π°Π½. ΠΡΠΎΡΠΎ, β1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅β Π΅ ΡΠΈΡΠ°ΠΆΠΈΡΡΠ΅ΠΌ, βΠΊΠΎΡΠΎΠ±ΡΡΠ΅Π½β ΠΏΡΠΎΠ΄ΡΠΊΡ, Π° ΡΡΠ°ΡΠΈΠΈ Π·Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Π₯Π°Π±ΡΠ° ΡΠ° ΡΡΠ²ΡΠ΅ΠΌ ΠΌΠ°Π»ΠΊΠΎ. Π Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° Π½Π°ΡΡΠΈΠΌ ΠΊΠ°ΠΊ ΠΆΠΈΠ²Π΅ΡΡ Π² Π΄ΡΡΠ³ΠΈΡΠ΅ Π΅ΠΊΠΈΠΏΠΈ ΠΈ ΡΠΈΡΠΌΠΈ.
ΠΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π½ΡΠΊΠΎΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°, ΡΠ΅ ΠΎΡΠ΅ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΠΉΠ·Π°ΠΆΠ°, Π±Π΅Π· Π΄ΡΠ»Π±ΠΎΠΊΠΎ ΠΏΠΎΡΠ°ΠΏΡΠ½Π΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ°. ΠΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΈΡΡ ΡΠ°Π·ΠΊΠ°Π· Π±ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π» ΠΎΡΠ΄Π΅Π»Π½Π° ΡΡΠ°ΡΠΈΡ, Π° Π·Π° Π½ΡΠΊΠΎΠΈ β ΡΡΠ»Π° ΠΊΠ½ΠΈΠ³Π°!
ΠΡΡΠ²ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Ρ Π±Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π½Π΅ΡΠ° β ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° β1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅β ΠΈ ΠΎΡ ΠΊΠ°ΠΊΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ΅ ΡΡΡΡΠΎΠΈ. ΠΡΠ³ΠΎΠ²ΠΎΡΡΡ Π½Π° ΡΠΎΠ·ΠΈ Π²ΡΠΏΡΠΎΡ Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΡΠΎΡΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ΄ ΡΠ΅ΡΠΌΠΈΠ½Π° βΠΠ»Π°ΡΡΠΎΡΠΌΠ°β (Π·Π° ΠΊΡΠ°ΡΠΊΠΎΡΡ ΡΠ΅ Ρ Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΊΠ°) ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ° ΠΈ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅. Π£ΡΠ»ΠΎΠ²Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠΊΡΠΎΠΈΠΌ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΡΡΠ°Π²ΠΊΠΈ:
- ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΎΡ ΡΡΡΠ²ΡΡΠΈ
- βΡΡΠΌΠ΅Π½β ΠΊΠ»ΠΈΠ΅Π½Ρ, ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° ΡΡΡ ΡΡΡΠ²ΡΡΠ° ΠΏΠΎ http ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
- ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π² Π΄Π²ΡΡΠ»ΠΎΠΉΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π½Π° ΡΠ²ΡΡΠ΄ Π΄ΠΈΡΠΊ ΠΈΠ»ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΏΠ°ΠΏΠΊΠ°
- Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ
- ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°
- ΡΡΠ΅Π΄Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° (ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΊΠ°ΡΠΎ ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡ)
- ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π° iOS, Android ΠΈ Windows Phone (ΠΌΠΎΠ±ΠΈΠ»Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° 1Π‘)
ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ°ΡΡΠΈ, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° C++. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π½Π°ΡΠΊΠΎΡΠΎ Π±Π΅ Π°Π½ΠΎΠ½ΡΠΈΡΠ°Π½ , Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Java.
ΠΠ°ΡΠΈΠ²Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π°εη ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° C++03. ΠΠΎΠ΄ Windows Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Microsoft Visual C++ 12 (ΠΏΡΠΎΡΠΈΠ», ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Windows XP), Π° ΠΏΠΎΠ΄ Linux ΠΈ Android β gcc 4.8, Π·Π° iOS β clang 5.0. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΅ Π΅Π΄ΠΈΠ½Π½Π° Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΠ‘ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ β STLPort. Π’ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° STL. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠ΅Ρ
ΠΎΠ΄ ΠΊΡΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° STL, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Ρ CLang, ΡΡΠΉ ΠΊΠ°ΡΠΎ STLPort Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΠ» ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ ΡΠΈ ΠΈ Π½Π΅ Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° C++11 Π² gcc.
ΠΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Π½Π° ΡΡΡΠ²ΡΡΠ° Π΅ ΠΎΠ±ΡΠ° Π½Π° 99%, Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° β Π½Π° 95%. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π΄ΠΎΡΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΡΠΈΡ C++ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΠΈ 'Π³ΠΎΠ»ΡΠΌΠ°ΡΠ°', Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅Π½ΡΡΡ Π½Π° ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π½ΠΈΡΡΠΊ.
ΠΠ°ΠΊΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° C++, Π½ΠΈΠ΅ Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΠΈΡΠ°ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° 100% ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Boost, Π° ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° β Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°ΠΌΠ΅:
- STL (Π² ΡΠ°ΡΡΠ½ΠΎΡΡ, ΡΡΡΠΈΠ½Π³ΠΎΠ²Π΅, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ)
- ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
- ΡΠ°Π±Π»ΠΎΠ½ΠΈ
- ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
- ΡΠΌΠ½ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ)
Π§ΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°Π½ΠΈΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ (Π½Π°ΠΏΡΠ»Π½ΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅) ΡΡΠ°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½Π° ΠΌΠΎΠ΄Π΅Π», Π·Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
FAudio
ΠΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π½ΠΎΡΡ, ΡΠ΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°ΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (*.dll Π·Π° Windows, *.so β Π·Π° Linux). ΠΠ±ΡΠΈΡΡ Π±ΡΠΎΠΉ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Ρ ΠΈΠ»ΡΠ΄Π° ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ :
backend
Π‘ΡΠ΄ΡΡΠΆΠ° 'Π΄Π²ΠΈΠΆΠΊΠ°' Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°
accnt
ΠΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ½ΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠ΅ΡΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ (ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈ Π½Π° ΡΡΠ΅ΡΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ)
bsl
ΠΠ²ΠΈΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ Π΅Π·ΠΈΠΊ
nuke
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π°Π»ΠΎΠΊΠ°ΡΠΎΡ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ
dbeng8
ΠΠ²ΠΈΠΆΠΊΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π°. ΠΡΠΎΡΡΠ° ΡΠ°ΠΉΠ»-ΡΡΡΠ²ΡΡΠ½Π° ΠΌΠ°ΡΠΈΠ½Π° Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ISAM, ΠΊΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΈ ΠΏΡΠΎΡΡ SQL-ΠΏΡΠΎΡΠ΅ΡΠΎΡ
wbase
Π‘ΡΠ΄ΡΡΠΆΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΊΠ»Π°ΡΠΎΠ²Π΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° Windows β ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ, Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ GDI ΠΈ Ρ.Π½.
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³Π»Π΅Π΄Π½ΠΈ ΡΠΎΡΠΊΠΈ:
- Π Π°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ ΡΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ΄Π°
- ΠΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΌΠΎΠΆΠ΅ Π³ΡΠ²ΠΊΠ°Π²ΠΎ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°:
- ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ½ΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ° wbase, Π½ΠΎ Π½ΡΠΌΠ° Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π° backend.
- Π° Π½Π° ΡΡΡΠ²ΡΡΠ° wbase, ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅.
- ΠΈ Π΄Π²Π°ΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠ°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ nuke ΠΈ bsl.
ΠΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΡΠΎΠ·ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π°Ρ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°. Π ΡΠ°ΡΡΠ½ΠΎΡΡ, ΡΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° Π½Π° SCOM ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅, Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅ Π΄ΡΠΌΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
SCOM
ΠΠ° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° ΠΏΠΎ-Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° SCOM β ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΠΎ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ATL. ΠΠ° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠ°Π±ΠΎΡΠΈΠ»ΠΈ Ρ ATL, Π½Π°ΠΊΡΠ°ΡΠΊΠΎ ΡΠ΅ ΠΈΠ·Π±ΡΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ.
ΠΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΎΡΠΎΡΠΌΠ΅Π½ ΠΊΠ»Π°Ρ SCOM:
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°Π±ΡΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»Π°Ρ ΠΎΡ Π΄ΡΡΠ³ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΏΠΎΠ·Π½Π°Π²Π°ΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ ΠΈΠΌΠ΅ΡΠΎ ΠΌΡ (Π±Π΅Π· ΡΠ°Π·ΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ°).
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Ρ Π±ΡΠΎΠ΅Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ. ΠΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ Π½Π° SCOM ΠΊΠ»Π°ΡΠ° Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ ΡΡΡΠ½ΠΎ.
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π΄Π°Π»ΠΈ ΠΎΠ±Π΅ΠΊΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π» Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
- Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΠ±Π΅ΠΊΡ-ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄Π° get_service ΠΈ Ρ.Π½.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° json.dll ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ ΠΊΠ»Π°Ρ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° JSON (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, JSONStreamReader).
ΠΠ»Π°ΡΠΎΠ²Π΅, Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈ Π² SCOM ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°:
SCOM_CLASS_ENTRY(JSONStreamReader)
Π’ΠΎΠ·ΠΈ ΠΌΠ°ΠΊΡΠΎΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΡΠ°ΡΠΈΡΠ΅Π½ ΠΊΠ»Π°Ρ-ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡ, ΡΠΈΠΉΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½ ΠΏΡΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² Π΄ΡΡΠ³Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
IJSONStreamReaderPtr jsonReader = create_instance(SCOM_CLSIDOF(JSONStreamReader));
ΠΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅ SCOM ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π°, Π΄ΠΎΡΡΠ° ΡΠ»ΠΎΠΆΠ½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°. Π¦Π΅Π½ΡΡΠ°Π»Π½ΠΎ Π² Π½Π΅Ρ Π΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΡΠΎ SCOM ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ (Ρ.Π΅. ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠΎΠ»Ρ Π½Π° Service Locator) ΠΈ ΡΡΠ΄ΡΡΠΆΠ° Π²ΡΡΠ·ΠΊΠ° Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ. SCOM ΠΏΡΠΎΡΠ΅ΡΡΡ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΠΠ‘. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π°, Π²ΡΡΡΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
SCOM_Process* process = core::current_process();
if (process)
return get_service(process);
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ (SCOM) ΠΏΡΠΎΡΠ΅ΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠΎΡΠΎΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠΈ ΡΠ΅ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. Π’Π°ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° Π½Π°ΡΠΈΡΡ ΡΡΠ½ΡΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° β Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΠ‘ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π΄Π²Π° SCOM ΠΏΡΠΎΡΠ΅ΡΠ°, Π΅Π΄ΠΈΠ½ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π° Π²ΡΠΎΡΠΈΡΡ β ΡΡΡ ΡΡΡΠ²ΡΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π°, ΡΠ°ΠΊΠ° ΠΈ Π² βΠΈΡΡΠΈΠ½ΡΠΊΠ°ΡΠ°β ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΡΡΠ²ΡΡ Π²Π΅ΡΡΠΈΡ. Π¦Π΅Π½Π°ΡΠ° Π·Π° ΡΠ°Π·ΠΈ Ρ ΠΎΠΌΠΎΠ³Π΅Π½Π½ΠΎΡΡ ΡΠ° ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅, Π½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ ΡΠΈ ΡΡΡΡΠ²Π°Ρ.
ΠΠ° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½Π°ΡΠ° ΠΌΠΎΠ΄Π΅Π» SCOM Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΈ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ°, ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° 1Π‘: ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅.
ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π·Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅. ΠΠΈΠ΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈ Π½Π° Windows, Π½Π°ΡΠΈΡΠ΅ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Windows API. ΠΠ° Linux Π²Π΅ΡΡΠΈΡΡΠ° Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ ΡΠ»ΠΎΠΉ, ΡΠ°Π±ΠΎΡΠ΅Ρ ΡΡΠ΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° wxWidgets.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠ°ΡΡΠΈ Π½Π° Β«1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅Β» ΠΈ Π½ΠΈΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΡΠ΅ Π² Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ°Π»ΠΊΠΈ Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΡΡΠΈΠ»ΠΈΡΠΈ.
ΠΡΠ΅Π· Π³ΠΎΠ΄ΠΈΠ½ΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅, Π²ΠΈΠ΄ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ΅ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ», Π½ΠΎ ΡΠ΅ΡΠΈΠΎΠ·Π½Π°ΡΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ ΡΠ΅ Π΅ ΡΠ»ΡΡΠΈΠ»Π° ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ, ΠΏΡΠ΅Π· 2009 Π³ΠΎΠ΄ΠΈΠ½Π°, Ρ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΡΡΠΈΡ 8.2 ΠΈ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° Β«ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΈ ΡΠΎΡΠΌΠΈΒ». ΠΡΠ²Π΅Π½ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΈΡ Π²ΠΈΠ΄, ΠΏΡΠΈΠ½ΡΠΈΠΏΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ» ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ β ΠΎΡΠΊΠ°Π·Π°Π½ΠΎ Π΅ ΠΎΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π² ΠΏΠΎΠ»Π·Π° Π½Π° flow ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² Π½ΠΎΠ²ΠΈΡ ΠΌΠΎΠ΄Π΅Π», Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡΡ Π½Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, Π° ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ DTO ().
Π’Π΅Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ
Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° Β«1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅Β», ΠΏΠΎΠ²ΡΠ°ΡΡΡ C++ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ΅ Π½Π° JavaScript. ΠΠΈΠ΅ ΡΠ΅ ΡΡΠ°ΡΠ°Π΅ΠΌ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½Π°ΡΠ° Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΠΈΡ ΠΈ ΡΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π ΡΠ»ΡΡΠ°ΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΡΠ°Π΄ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡΠ΅ ΠΎΡ JavaScript API (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°), ΡΠ΅ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΡΠ΅Π· ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π±ΡΠ°ΡΠ·Π΅ΡΠΈΡΠ΅, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° C++. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌΠ΅ Internet Explorer ΠΈ Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows ΠΈ Linux) ΠΈ Safari (MacOS).
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈΡΠ΅ ΡΠΎΡΠΌΡΠ»ΡΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° 1Π‘. ΠΠ° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ΅ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° βΡΠΎΠ΄Π½ΠΈβ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π·Π° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° ΠΈ ΡΠ΅Π°ΠΊΡΠΈΡΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΡΠΈΡΡ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊΡΠ²ΡΠΎ Π΅ ΠΈ Π² βΠ³ΠΎΠ»ΡΠΌΠ°ΡΠ°β ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° β1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅β.

ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π½Π° 1Π‘ ΠΏΠΎΠ΄ ΠΠ‘ Linux

ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π½Π° 1Π‘ Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π½Π° 1Π‘ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ 
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π½Π° 1Π‘ ΠΏΠΎΠ΄ ΠΠ‘ Windows

ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π½Π° 1Π‘ β ΡΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½Ρ
Π‘ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° C++ ΠΏΠΎΠ΄ Windows (MFC, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈ ΠΎΡ WinAPI), Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΈΡΠ΅ΠΌ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ°ΠΌΠΈ. ΠΠ΅ΡΠ΅ Π±Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° , Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅:
- Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ HTTP ΠΈ FTP.
- Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° TLS ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
- Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ Π½Π° XML
- Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ (POP3, SMTP, IMAP)
- Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ Π½Π° ΠΈΠΌΠ΅ΠΉΠ» ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ
- Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΆΡΡΠ½Π°Π»Π° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅
- Π·Π° ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Π‘ΠΏΠΈΡΡΠΊΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΈΠ»Π½ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΈ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ
Π° Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΌΠΎΠ΄Π΅Π»Π° SCOM Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅.
Π Π°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎΡΡΡΠ° Π½Π° 1Π‘ ΠΏΡΠ°Π²ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΎΡΠ»ΠΈΡΠ΅Π½ ΡΠ΅ΡΡ Π·Π° ΠΈΠ·Π΄ΡΡΠΆΠ»ΠΈΠ²ΠΎΡΡ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ Π² Π½Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π Π°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ΡΠΎ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π±ΡΡΠ·ΠΎ ΠΎΡΠΊΡΠΈΠ²Π° Π³ΡΠ΅ΡΠΊΠΈ Π΄ΠΎΡΠΈ Π² Π½Π°ΠΉ-ΡΡΠ΄ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ ΡΡΠ°ΡΡΡΡΠΈ ΠΎΡ ΠΊΠΎΠ΄Π°. ΠΠΈΠ΅ Π³ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΡΠΌΠ΅ ΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° Π³ΠΈ Π²ΡΡΠ½Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅. ΠΠΏΠΈΡΡΡ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ΅Π½.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ Π±ΡΡΠ·ΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° pull-request, Π½ΠΎ ΠΏΠ°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π½Π°ΠΌ ΡΠ°ΠΊΠ° ΠΈ Π½Π΅ ΡΡΠΏΡΡ
ΠΌΠ΅ Π΄Π° Π²ΡΡΠ½Π΅ΠΌ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ Π΄ΠΎΠΊΠΎΡΠ½Π°Ρ
ΠΌΠ΅ Π΄ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π°ΡΠΏΠ΅ΠΊΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° β1Π‘: ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅β. Π ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΎΠ±Π΅ΠΌ ΡΡΠ°ΡΠΈΡΡΠ° Π·Π°ΡΠ΅Π³Π½Π° ΡΠ°ΠΌΠΎ Π½ΡΠΊΠΎΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ, ΠΏΠΎ Π½Π°ΡΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, Π°ΡΠΏΠ΅ΠΊΡΠΈ.
ΠΠ±ΡΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ .
ΠΠ°ΠΊΠ²ΠΈ ΡΠ΅ΠΌΠΈ Π±ΠΈΡ
Π° Π²ΠΈ Π±ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ?
ΠΠ°ΠΊ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° 1Π‘?
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π½Π° ΡΠ΅Π± ΠΊΠ»ΠΈΠ΅Π½ΡΠ°?
ΠΠ»ΠΈ, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅?
ΠΠΈΡΠ΅ΡΠ΅ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
