ΠŸΡ€Π΅Ρ‚Π²ΠΎΡ€Π°ΡšΠ΅ Π½Π° FunC Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ со Π₯аскСл: Како SerokΠ΅Π» ΠΏΠΎΠ±Π΅Π΄ΠΈ Π½Π° Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ΠΎΡ‚ Π·Π° Π±Π»ΠΎΠΊΡ‡Π΅Ρ˜Π½ Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ°

Π’Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ стС ја ΡΠ»ΡƒΡˆΠ½Π°Π»Π΅ Ρ‚Π°Π° Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌΠ° Π΅ Π½Π° ΠΏΠ°Ρ‚ Π΄Π° ја лансира Π±Π»ΠΎΠΊΡ‡Π΅Ρ˜Π½ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π’ΠΎΠ½. Но, ΠΌΠΎΠΆΠ΅Π±ΠΈ стС ја ΠΏΡ€ΠΎΠΏΡƒΡˆΡ‚ΠΈΠ»Π΅ вСста Π΄Π΅ΠΊΠ° Π½Π΅ ΠΎΠ΄Π°ΠΌΠ½Π° Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ Ρ€Π°ΡΠΏΠΈΡˆΠ° конкурс Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ Π·Π° ΠΎΠ²Π°Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.

Π’ΠΈΠΌΠΎΡ‚ Π½Π° Serokell, со долгогодишно искуство Π²ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π»ΠΎΠΊΡ‡Π΅Ρ˜Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Π½Π΅ моТСшС Π΄Π° застанС настрана. На Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ΠΎΡ‚ Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Π²ΠΌΠ΅ ΠΏΠ΅Ρ‚ Π²Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ, Π° Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ ΠΏΠΎΠ΄ΠΎΡ†Π½Π° Ρ‚ΠΈΠ΅ Π³ΠΎ освоија ΠΏΡ€Π²ΠΎΡ‚ΠΎ мСсто Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄ (Π½Π΅)скромниот случаСн ΠΏΡ€Π΅ΠΊΠ°Ρ€ БСкси ΠΊΠ°ΠΌΠ΅Π»Π΅ΠΎΠ½. Π’ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ќС Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ˜Π° Ρ‚ΠΎΠ°. Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π²ΠΎ слСднитС дСсСт ΠΌΠΈΠ½ΡƒΡ‚ΠΈ Π±Π°Ρ€Π΅ΠΌ ќС ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ нСкоја интСрСсна ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π°, Π° Π½Π°Ρ˜ΠΌΠ½ΠΎΠ³Ρƒ Π²ΠΎ Π½Π΅Π° ќС Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ Π½Π΅ΡˆΡ‚ΠΎ корисно ΡˆΡ‚ΠΎ ќС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°.

Но, Π΄Π° ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ со ΠΌΠ°Π»ΠΊΡƒ контСкст.

ΠšΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ Π½Π΅Ρ˜Π·ΠΈΠ½ΠΈΡ‚Π΅ услови

Π—Π½Π°Ρ‡ΠΈ, Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° учСсницитС Π±Π΅Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ давањС ΠΏΡ€Π΅Π΄Π»ΠΎΠ·ΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° TON СкосистСмот. ΠšΠΎΠ½ΠΊΡƒΡ€ΡΠΎΡ‚ Ρ‚Ρ€Π°Π΅ΡˆΠ΅ ΠΎΠ΄ 24 сСптСмври Π΄ΠΎ 15 ΠΎΠΊΡ‚ΠΎΠΌΠ²Ρ€ΠΈ, Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ Π±Π΅Π° објавСни Π΄ΡƒΡ€ΠΈ Π½Π° 15 Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ. Доста Π΄ΠΎΠ»Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅, имајќи ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° Π·Π° Ρ‚ΠΎΠ° Π²Ρ€Π΅ΠΌΠ΅ Telegram успСа Π΄Π° ΠΎΠ΄Ρ€ΠΆΠΈ ΠΈ објави Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΠ΄ конкурси Π·Π° дизајн ΠΈ Ρ€Π°Π·Π²ΠΎΡ˜ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ C++ Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΎΡ†Π΅Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π΅Ρ‚ΠΎΡ‚ Π½Π° VoIP ΠΏΠΎΠ²ΠΈΡ†ΠΈΡ‚Π΅ Π²ΠΎ Telegram.

Π˜Π·Π±Ρ€Π°Π²ΠΌΠ΅ Π΄Π²Π° ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ ΠΎΠ΄ списокот ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΎΠ΄ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅. Π—Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½ΠΈΠ² користСвмС Π°Π»Π°Ρ‚ΠΊΠΈ дистрибуирани со TON, Π° Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ бСшС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ Π½Π° Π½ΠΎΠ² јазик Ρ€Π°Π·Π²ΠΈΠ΅Π½ ΠΎΠ΄ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ Π·Π° TON ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ Π²ΠΎ Haskell.

Π˜Π·Π±ΠΎΡ€ΠΎΡ‚ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ програмски јазик Π½Π΅ Π΅ случаСн. Π’ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π΅Π½ Π±Π»ΠΎΠ³ ЧСстопати Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ Π·ΠΎΡˆΡ‚ΠΎ мислимС Π΄Π΅ΠΊΠ° слоТСноста Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈΡ‚Π΅ Ρ˜Π°Π·ΠΈΡ†ΠΈ Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΡƒΠ²Π°ΡšΠ΅ ΠΈ Π·ΠΎΡˆΡ‚ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ Π³ΠΈ ΠΏΡ€Π΅Ρ‚ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΌΠ΅ намСсто ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Ρ˜Π°Π·ΠΈΡ†ΠΈ. ΠŸΠ°Ρ‚Π΅ΠΌ, содрТи ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΡ‚ Π½Π° овој напис.

Π—ΠΎΡˆΡ‚ΠΎ Π²ΠΎΠΎΠΏΡˆΡ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° учСствувамС?

Накратко, Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° сС нСстандардни ΠΈ слоТСни ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΊΠΎΠΈ Π±Π°Ρ€Π°Π°Ρ‚ посСбни Π²Π΅ΡˆΡ‚ΠΈΠ½ΠΈ ΠΈ чСсто сС ΠΎΠ΄ Π½Π°ΡƒΡ‡Π½Π° врСдност Π·Π° ИВ Π·Π°Π΅Π΄Π½ΠΈΡ†Π°Ρ‚Π°. НиС силно Π³ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°ΠΌΠ΅ Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° софтвСр со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΈ смС Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½ΠΈ Π²ΠΎ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠΏΡƒΠ»Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°, Π° исто Ρ‚Π°ΠΊΠ° соработувамС со Π²ΠΎΠ΄Π΅Ρ‡ΠΊΠΈ руски ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·ΠΈΡ‚Π΅Ρ‚ΠΈ Π²ΠΎ областа Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠ°Ρ‚Π° Π½Π°ΡƒΠΊΠ° ΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°Ρ‚Π°.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ΠΎΡ‚ ΠΈ вклучСноста Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ сакан ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π±Π΅Π° сами ΠΏΠΎ сСбС ΠΎΠ΄Π»ΠΈΡ‡Π½Π° ΠΌΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΡ˜Π°, Π½ΠΎ Π½Π°Π³Ρ€Π°Π΄Π½ΠΈΠΎΡ‚ Ρ„ΠΎΠ½Π΄ стана Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΠΎΡ‚Ρ‚ΠΈΠΊ. πŸ™‚

Π˜ΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° Π±Π»ΠΎΠΊΡ‡Π΅Ρ˜Π½ ВОН

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ Π³ΠΈ слСдимС Π½ΠΎΠ²ΠΈΡ‚Π΅ ΡΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ° Π²ΠΎ Π±Π»ΠΎΠΊΡ‡Π΅Ρ˜Π½ΠΎΡ‚, Π²Π΅ΡˆΡ‚Π°Ρ‡ΠΊΠ°Ρ‚Π° ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ†ΠΈΡ˜Π° ΠΈ ΠΌΠ°ΡˆΠΈΠ½ΡΠΊΠΎΡ‚ΠΎ ΡƒΡ‡Π΅ΡšΠ΅ ΠΈ сС Ρ‚Ρ€ΡƒΠ΄ΠΈΠΌΠ΅ Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡˆΡ‚ΠΈΠΌΠ΅ Π½ΠΈΡ‚Ρƒ Π΅Π΄Π½ΠΎ Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΎ сСкоја ΠΎΠ΄ областитС Π²ΠΎ ΠΊΠΎΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅. Π—Π°Ρ‚ΠΎΠ°, Π΄ΠΎ ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ Π½Π° Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ΠΎΡ‚, Π½Π°ΡˆΠΈΠΎΡ‚ Ρ‚ΠΈΠΌ вСќС бСшС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Π½ со ΠΈΠ΄Π΅ΠΈΡ‚Π΅ ΠΎΠ΄ ВОН Π±Π΅Π»Π° Ρ…Π°Ρ€Ρ‚ΠΈΡ˜Π°. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΡ€Π΅Π΄ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ со Ρ€Π°Π±ΠΎΡ‚Π° со ВОН, Π½Π΅ ја Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π²ΠΌΠ΅ Ρ‚Π΅Ρ…Π½ΠΈΡ‡ΠΊΠ°Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΈ вистинскиот ΠΈΠ·Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΏΡ€Π²ΠΈΠΎΡ‚ Ρ‡Π΅ΠΊΠΎΡ€ бСшС сосСма ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π΅Π½ - Ρ‚Π΅ΠΌΠ΅Π»Π½ΠΎ ΠΏΡ€ΠΎΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½Π°Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° Онлајн ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ.

Π”ΠΎ ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ Π½Π° Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ΠΎΡ‚, ΠΊΠΎΠ΄ΠΎΡ‚ вСќС бСшС објавСн, ΠΏΠ° Π·Π° Π΄Π° Π·Π°ΡˆΡ‚Π΅Π΄ΠΈΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅, Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ±Π°Ρ€Π°ΠΌΠ΅ Π²ΠΎΠ΄ΠΈΡ‡ ΠΈΠ»ΠΈ Ρ€Π΅Π·ΠΈΠΌΠ΅ напишано ΠΎΠ΄ ΠΎΠ΄ страна Π½Π° корисницитС. Π—Π° ΠΆΠ°Π», Ρ‚ΠΎΠ° Π½Π΅ Π΄Π°Π΄Π΅ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ - освСн инструкции Π·Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Ubuntu, Π½Π΅ најдовмС Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»ΠΈ.

Π‘Π°ΠΌΠ°Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° бСшС Π΄ΠΎΠ±Ρ€ΠΎ истраТСна, Π½ΠΎ бСшС Ρ‚Π΅ΡˆΠΊΠΎ Π΄Π° сС ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π° Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ области. Доста чСсто ΠΌΠΎΡ€Π°Π²ΠΌΠ΅ Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈΠΌΠ΅ Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌΠ΅ ΠΎΠ΄ описи Π½Π° апстрактни ΠΈΠ΄Π΅ΠΈ Π½Π° високо Π½ΠΈΠ²ΠΎ Π½Π° Π΄Π΅Ρ‚Π°Π»ΠΈ Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ.

Π‘ΠΈ Π±ΠΈΠ»ΠΎ полСсно Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π²ΠΎΠΎΠΏΡˆΡ‚ΠΎ Π½Π΅ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π΄Π΅Ρ‚Π°Π»Π΅Π½ опис Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π°Ρ‚Π° машина Π³ΠΎ прСтставува ΡΠ²ΠΎΡ˜ΠΎΡ‚ оџак Π΅ ΠΏΠΎΠ²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ Π΄Π° Π³ΠΎ ΠΎΠ΄Π²Π»Π΅ΠΊΡƒΠ²Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ создаваат ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° TON ΠΎΡ‚ΠΊΠΎΠ»ΠΊΡƒ Π΄Π° ΠΈΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚.

Никс: ΡΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚

Π’ΠΎ SerokΠ΅Π» смС Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±ΠΎΠΆΠ°Π²Π°Ρ‚Π΅Π»ΠΈ Ник. НиС Π³ΠΈ собирамС Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ со Π½Π΅Π³ΠΎ ΠΈ Π³ΠΈ распорСдувамС ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ NixOps, ΠΈ инсталиран Π½Π° ситС наши сСрвСри Nix OS. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ²Π°, ситС наши изданија сС Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΡ†ΠΈΡ€Π°Π°Ρ‚ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° кој Π±ΠΈΠ»ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ систСм Π½Π° кој ΠΌΠΎΠΆΠ΅ Π΄Π° сС инсталира Nix.

Π’Π°ΠΊΠ° ΠΏΠΎΡ‡Π½Π°Π²ΠΌΠ΅ со создавањС Никс ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏ со ΠΈΠ·Ρ€Π°Π· Π·Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ TON. Π‘ΠΎ Π½Π΅Π³ΠΎΠ²Π° помош, ΡΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° TON Π΅ ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ поСдноставно:

$ cd ~/.config/nixpkgs/overlays && git clone https://github.com/serokell/ton.nix
$ cd /path/to/ton/repo && nix-shell
[nix-shell]$ cmakeConfigurePhase && make

Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° инсталиратС Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ зависности. Никс ΠΌΠ°Π³ΠΈΡ‡Π½ΠΎ ќС Π½Π°ΠΏΡ€Π°Π²ΠΈ сС Π·Π° вас, Π±Π΅Π· Ρ€Π°Π·Π»ΠΈΠΊΠ° Π΄Π°Π»ΠΈ користитС NixOS, Ubuntu ΠΈΠ»ΠΈ macOS.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅ Π·Π° TON

ΠšΠΎΠ΄ΠΎΡ‚ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° TON Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π°Ρ‚Π° машина TON (TVM). TVM Π΅ покомплСксСн ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини ΠΈ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρƒ интСрСсна функционалност, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ со Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π°ΡšΠ° ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΈ Π΄ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, ΠΌΠΎΠΌΡ†ΠΈΡ‚Π΅ ΠΎΠ΄ ВОН создадоа Ρ‚Ρ€ΠΈ Π½ΠΎΠ²ΠΈ програмски Ρ˜Π°Π·ΠΈΡ†ΠΈ:

ΠŸΠ΅Ρ‚ΠΊΠ° Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·Π°Π»Π΅Π½ програмски јазик Π½Π° стСк кој Π½Π°Π»ΠΈΠΊΡƒΠ²Π° Π½Π° Π§Π΅Ρ‚Π²Ρ€Ρ‚ΠΎ. НСговата супСр способност Π΅ способноста Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со Π’Π’Πœ.

FunC Π΅ програмски јазик Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ кој Π΅ сличСн Π½Π° C ΠΈ сС составува Π½Π° Π΄Ρ€ΡƒΠ³ јазик - Fift Assembler.

ΠŸΠ΅Ρ‚Ρ‚ΠΈ ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ΅Ρ€ β€” ΠŸΠ΅Ρ‚Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π±ΠΈΠ½Π°Ρ€Π΅Π½ ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° TVM. Fifth Assembler Π½Π΅ΠΌΠ° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€. Ова Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π΅Π½ јазик Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ Π΄ΠΎΠΌΠ΅Π½ (eDSL).

ΠΠ°ΡˆΠΈΠΎΡ‚ Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄ Π½Π°ΡˆΠΈΡ‚Π΅ Π½Π°ΠΏΠΎΡ€ΠΈ.

Асинхрон ΠΊΠ°Π½Π°Π» Π·Π° плаќањС

ΠšΠ°Π½Π°Π»ΠΎΡ‚ Π·Π° плаќањС Π΅ ΠΏΠ°ΠΌΠ΅Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ кој ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° Π΄Π²Π°Ρ˜Ρ†Π° корисници Π΄Π° ΠΈΡΠΏΡ€Π°ΡœΠ°Π°Ρ‚ плаќања Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ Π±Π»ΠΎΠΊΡ‡Π΅Ρ˜Π½ΠΎΡ‚. Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, Π·Π°ΡˆΡ‚Π΅Π΄ΡƒΠ²Π°Ρ‚Π΅ Π½Π΅ само ΠΏΠ°Ρ€ΠΈ (Π½Π΅ΠΌΠ° ΠΏΡ€ΠΎΠ²ΠΈΠ·ΠΈΡ˜Π°), Ρ‚ΡƒΠΊΡƒ ΠΈ Π²Ρ€Π΅ΠΌΠ΅ (Π½Π΅ ΠΌΠΎΡ€Π° Π΄Π° Ρ‡Π΅ΠΊΠ°Ρ‚Π΅ Π΄Π° сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ слСдниот Π±Π»ΠΎΠΊ). ΠŸΠ»Π°ΡœΠ°ΡšΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ ΠΌΠ°Π»ΠΈ ΠΊΠΎΠ»ΠΊΡƒ ΡˆΡ‚ΠΎ сакатС ΠΈ Ρ‚ΠΎΠ»ΠΊΡƒ чСсто ΠΊΠΎΠ»ΠΊΡƒ ΡˆΡ‚ΠΎ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ. Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, странитС Π½Π΅ ΠΌΠΎΡ€Π° Π΄Π° си Π²Π΅Ρ€ΡƒΠ²Π°Π°Ρ‚ Π΅Π΄Π½ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ, бидСјќи правичноста Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡ‚ΠΎ ΠΏΠΎΡ€Π°ΠΌΠ½ΡƒΠ²Π°ΡšΠ΅ Π΅ Π·Π°Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π° со ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈΠΎΡ‚ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€.

НајдовмС ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Сдноставно Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚. Π”Π²Π΅ страни ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Ρ€Π°Π·ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎΡ‚ΠΏΠΈΡˆΠ°Π½ΠΈ ΠΏΠΎΡ€Π°ΠΊΠΈ, ΠΎΠ΄ ΠΊΠΎΠΈ сСкоја ќС содрТи Π΄Π²Π° Π±Ρ€ΠΎΡ˜Π° - цСлосниот износ ΡˆΡ‚ΠΎ Π³ΠΎ плаќа сСкоја страна. ОвиС Π΄Π²Π° Π±Ρ€ΠΎΡ˜Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚ Π²Π°ΠΊΠ° вСкторски часовник Π²ΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈΡ‚Π΅ дистрибуирани систСми ΠΈ поставСтС Π³ΠΎ рСдослСдот β€žΡΠ΅ случи ΠΏΠΎΡ€Π°Π½ΠΎβ€œ Π½Π° трансакциитС. ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΡ‚ ќС ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Ρ€Π΅ΡˆΠΈ сСкој ΠΌΠΎΠΆΠ΅Π½ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚.

Π’ΡΡƒΡˆΠ½ΠΎΡΡ‚, Π΅Π΄Π΅Π½ Π±Ρ€ΠΎΡ˜ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ Π·Π° Π΄Π° сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΎΠ²Π°Π° идСја, Π½ΠΎ Π³ΠΈ оставивмС ΠΈ Π΄Π²Π΅Ρ‚Π΅ бидСјќи Π½Π° овој Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Π²ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΏΠΎΡƒΠ΄ΠΎΠ±Π΅Π½ кориснички ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ Π²ΠΊΠ»ΡƒΡ‡ΠΈΠΌΠ΅ износот Π·Π° плаќањС Π²ΠΎ сСкоја ΠΏΠΎΡ€Π°ΠΊΠ°. Π‘Π΅Π· Π½Π΅Π³ΠΎ, Π°ΠΊΠΎ ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° сС ΠΈΠ·Π³ΡƒΠ±ΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ нСкоја ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, Ρ‚ΠΎΠ³Π°Ρˆ, ΠΈΠ°ΠΊΠΎ ситС износи ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ‚Π° прСсмСтка ќС Π±ΠΈΠ΄Π°Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΈ, корисникот ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ΠΌΠ° Π΄Π° ја Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ Π·Π°Π³ΡƒΠ±Π°Ρ‚Π°.

Π—Π° Π΄Π° ја тСстирамС Π½Π°ΡˆΠ°Ρ‚Π° идСја, Π±Π°Ρ€Π°Π²ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Ρ‚Π°ΠΊΠΎΠ² СдноставСн ΠΈ ΠΊΠΎΠ½Ρ†ΠΈΠ·Π΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° ΠΊΠ°Π½Π°Π» Π·Π° плаќањС. Π˜Π·Π½Π΅Π½Π°Π΄ΡƒΠ²Π°Ρ‡ΠΊΠΈ, најдовмС само Π΄Π²Π΅:

  1. Опис сличСн пристап, само Π·Π° ΡΠ»ΡƒΡ‡Π°Ρ˜ΠΎΡ‚ Π½Π° СднонасочСн ΠΊΠ°Π½Π°Π».
  2. Упатство, која ја ΠΎΠΏΠΈΡˆΡƒΠ²Π° истата идСја ΠΊΠ°ΠΊΠΎ Π½Π°ΡˆΠ°Ρ‚Π°, Π½ΠΎ Π±Π΅Π· ΠΎΠ±Ρ˜Π°ΡΠ½ΡƒΠ²Π°ΡšΠ΅ ΠΌΠ½ΠΎΠ³Ρƒ Π²Π°ΠΆΠ½ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΎΠΏΡˆΡ‚Π°Ρ‚Π° корСктност ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈΡ‚Π΅ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ.

Π‘Ρ‚Π°Π½Π° јасно Π΄Π΅ΠΊΠ° ΠΈΠΌΠ° смисла Π΄Π΅Ρ‚Π°Π»Π½ΠΎ Π΄Π° сС опишС Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΏΠΎΡΠ²Π΅Ρ‚ΡƒΠ²Π°Ρ˜ΡœΠΈ посСбно Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° исправност. По Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π°ΡšΠ°, ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° бСшС Π³ΠΎΡ‚ΠΎΠ²Π°, Π° сСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈ Π²ΠΈΠ΅. ПоглСдни ја.

Π“ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π²ΠΌΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΎ FunC ΠΈ ја напишавмС Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° линија Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со Π½Π°ΡˆΠΈΠΎΡ‚ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ цСлосно Π²ΠΎ Fift, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡Π°Π½ΠΎ ΠΎΠ΄ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅. МоТСвмС Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌΠ΅ кој Π±ΠΈΠ»ΠΎ Π΄Ρ€ΡƒΠ³ јазик Π·Π° Π½Π°ΡˆΠΈΠΎΡ‚ CLI, Π½ΠΎ Π±Π΅Π²ΠΌΠ΅ заинтСрСсирани Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠ±Π°ΠΌΠ΅ Fit Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° Π²ΠΎ пракса.

Π”Π° Π±ΠΈΠ΄Π°ΠΌ искрСн, ΠΎΡ‚ΠΊΠ°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Π²ΠΌΠ΅ со Fift, Π½Π΅ Π²ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ ΡƒΠ±Π΅Π΄Π»ΠΈΠ²ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π΄Π° Π³ΠΎ ΠΏΡ€Π΅Ρ‚ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΌΠ΅ овој јазик ΠΎΠ΄ ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½ΠΈΡ‚Π΅ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ користСнитС Ρ˜Π°Π·ΠΈΡ†ΠΈ со Ρ€Π°Π·Π²ΠΈΠ΅Π½ΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° јазик Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° стСк Π΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Π½Π΅ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π½ΠΎ, бидСјќи ΠΌΠΎΡ€Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ Π΄Π° Π³ΠΎ Ρ‡ΡƒΠ²Π°Ρ‚Π΅ Π²ΠΎ Π²Π°ΡˆΠ°Ρ‚Π° Π³Π»Π°Π²Π° ΠΎΠ½Π° ΡˆΡ‚ΠΎ Π΅ Π½Π° ΠΎΡŸΠ°ΠΊΠΎΡ‚, Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚ Π½Π΅ ΠΏΠΎΠΌΠ°Π³Π° Π²ΠΎ Ρ‚ΠΎΠ°.

Π—Π°Ρ‚ΠΎΠ°, спорСд нас, СдинствСното ΠΎΠΏΡ€Π°Π²Π΄ΡƒΠ²Π°ΡšΠ΅ Π·Π° ΠΏΠΎΡΡ‚ΠΎΠ΅ΡšΠ΅Ρ‚ΠΎ Π½Π° Fift Π΅ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΡƒΠ»ΠΎΠ³Π° ΠΊΠ°ΠΊΠΎ јазик домаќин Π½Π° Fift Assembler. Но, Π·Π°Ρ€Π΅ΠΌ Π½Π΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ Π΄Π° сС Π²Π³Ρ€Π°Π΄ΠΈ Π’Π’Πœ асСмблСр Π²ΠΎ нСкој постоСчки јазик, намСсто Π΄Π° сС измисли Π½ΠΎΠ² Π·Π° ΠΎΠ²Π°Π° ΡΡƒΡˆΡ‚ΠΈΠ½ΡΠΊΠ° СдинствСна Ρ†Π΅Π»?

TVM Haskell eDSL

Π‘Π΅Π³Π° Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ Π·Π° Π½Π°ΡˆΠΈΠΎΡ‚ Π²Ρ‚ΠΎΡ€ ΠΏΠ°ΠΌΠ΅Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€. РСшивмС Π΄Π° Ρ€Π°Π·Π²ΠΈΠ΅ΠΌΠ΅ ΠΏΠ°Ρ€ΠΈΡ‡Π½ΠΈΠΊ со повСќС потписи, Π½ΠΎ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΡƒΡˆΡ‚Π΅ Π΅Π΄Π΅Π½ ΠΏΠ°ΠΌΠ΅Ρ‚Π΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π²ΠΎ FunC Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΡ€Π΅ΠΌΠ½ΠΎΠ³Ρƒ досадно. Π‘Π°ΠΊΠ°Π²ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ ΠΌΠ°Π»ΠΊΡƒ вкус, Π° Ρ‚ΠΎΠ° бСшС Π½Π°ΡˆΠΈΠΎΡ‚ сопствСн јазик Π·Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π½Π° Π’Π’Πœ.

Како ΠΈ Fift Assembler, Π½Π°ΡˆΠΈΠΎΡ‚ Π½ΠΎΠ² јазик Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½, Π½ΠΎ Π³ΠΎ ΠΈΠ·Π±Ρ€Π°Π²ΠΌΠ΅ Haskell Π·Π° домаќин намСсто Fift, ΡˆΡ‚ΠΎ Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° цСлосно Π΄Π° Π³ΠΈ искористимС Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Π½Π°ΠΏΡ€Π΅Π΄Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π½Π° систСмот. Кога Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ со ΠΏΠ°ΠΌΠ΅Ρ‚Π½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Ρ†Π΅Π½Π°Ρ‚Π° Π½Π° Π΄ΡƒΡ€ΠΈ ΠΈ ΠΌΠ°Π»Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠ³Ρƒ висока, статичкото ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅, спорСд нашС мислСњС, Π΅ Π³ΠΎΠ»Π΅ΠΌΠ° прСдност.

Π—Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° асСмблСрот TVM Π²Π³Ρ€Π°Π΄Π΅Π½ Π²ΠΎ Haskell, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π²ΠΌΠ΅ стандардСн ΠΏΠ°Ρ€ΠΈΡ‡Π½ΠΈΠΊ Π½Π° Π½Π΅Π³ΠΎ. Π•Π²Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° ΠΊΠΎΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΎΠ±Ρ€Π½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:

  • Овој Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ сС состои ΠΎΠ΄ Π΅Π΄Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° користитС ΠΊΠΎΠ»ΠΊΡƒ ΡˆΡ‚ΠΎ сакатС. Кога Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ (Ρ‚.Π΅. Haskell), Π½Π°ΡˆΠΈΠΎΡ‚ eDSL Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ сакатС Ρ‚Π°Π° Π΄Π° станС посСбна Ρ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΎ TVM ΠΈΠ»ΠΈ Сдноставно Π΄Π° сС Π²ΠΌΠ΅Ρ‚Π½Π΅ Π½Π° мСстото Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚.
  • Како Π₯аскСл, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΈΠΌΠ°Π°Ρ‚ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΊΠΎΠΈ сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅. Π’ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ eDSL, Π²Π»Π΅Π·Π½ΠΈΠΎΡ‚ Ρ‚ΠΈΠΏ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π΅ Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° стСк ΡˆΡ‚ΠΎ Π³ΠΎ ΠΎΡ‡Π΅ΠΊΡƒΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π°, Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΎΡ‚ Π΅ Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° стСк ΡˆΡ‚ΠΎ ќС сС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚.
  • ΠšΠΎΠ΄ΠΎΡ‚ ΠΈΠΌΠ° ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ stacktype, ΠΎΠΏΠΈΡˆΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΎ ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°Π½ΠΈΠΎΡ‚ Ρ‚ΠΈΠΏ Π½Π° оџак Π²ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅. Π’ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΎΡ‚ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π·Π° ΠΏΠ°Ρ€ΠΈΡ‡Π½ΠΈΠΊ Ρ‚ΠΎΠ° Π±Π΅Π° само ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ, Π½ΠΎ Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ eDSL Ρ‚ΠΈΠ΅ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ сС Π΄Π΅Π» ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΈ сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅. Π’ΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° послуТат ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΈΠ»ΠΈ изјави ΠΊΠΎΠΈ ΠΌΡƒ ΠΏΠΎΠΌΠ°Π³Π°Π°Ρ‚ Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Π΄Π° Π³ΠΎ најдС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚ Π°ΠΊΠΎ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΈ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° стСкот. Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, Ρ‚Π°ΠΊΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ Π½Π΅ Π²Π»ΠΈΡ˜Π°Π°Ρ‚ Π½Π° пСрформанситС Π½Π° Ρ‚Ρ€Π°Π΅ΡšΠ΅, бидСјќи Π·Π° Π½ΠΈΠ² Π½Π΅ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π’Π’Πœ-ΠΊΠΎΠ΄.
  • Ова Π΅ сè ΡƒΡˆΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ напишан Π·Π° Π΄Π²Π΅ Π½Π΅Π΄Π΅Π»ΠΈ, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΈΠΌΠ° ΡƒΡˆΡ‚Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ситС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ ΠΎΠ΄ класитС ΡˆΡ‚ΠΎ Π³ΠΈ Π³Π»Π΅Π΄Π°Ρ‚Π΅ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π°Ρ‚ автоматски.

Π’Π°ΠΊΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° мултисиг ΠΏΠ°Ρ€ΠΈΡ‡Π½ΠΈΠΊ Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ eDSL:

main :: IO ()
main = putText $ pretty $ declProgram procedures methods
  where
    procedures =
      [ ("recv_external", decl recvExternal)
      , ("recv_internal", decl recvInternal)
      ]
    methods =
      [ ("seqno", declMethod getSeqno)
      ]

data Storage = Storage
  { sCnt :: Word32
  , sPubKey :: PublicKey
  }

instance DecodeSlice Storage where
  type DecodeSliceFields Storage = [PublicKey, Word32]
  decodeFromSliceImpl = do
    decodeFromSliceImpl @Word32
    decodeFromSliceImpl @PublicKey

instance EncodeBuilder Storage where
  encodeToBuilder = do
    encodeToBuilder @Word32
    encodeToBuilder @PublicKey

data WalletError
  = SeqNoMismatch
  | SignatureMismatch
  deriving (Eq, Ord, Show, Generic)

instance Exception WalletError

instance Enum WalletError where
  toEnum 33 = SeqNoMismatch
  toEnum 34 = SignatureMismatch
  toEnum _ = error "Uknown MultiSigError id"

  fromEnum SeqNoMismatch = 33
  fromEnum SignatureMismatch = 34

recvInternal :: '[Slice] :-> '[]
recvInternal = drop

recvExternal :: '[Slice] :-> '[]
recvExternal = do
  decodeFromSlice @Signature
  dup
  preloadFromSlice @Word32
  stacktype @[Word32, Slice, Signature]
  -- cnt cs sign

  pushRoot
  decodeFromCell @Storage
  stacktype @[PublicKey, Word32, Word32, Slice, Signature]
  -- pk cnt' cnt cs sign

  xcpu @1 @2
  stacktype @[Word32, Word32, PublicKey, Word32, Slice, Signature]
  -- cnt cnt' pk cnt cs sign

  equalInt >> throwIfNot SeqNoMismatch

  push @2
  sliceHash
  stacktype @[Hash Slice, PublicKey, Word32, Slice, Signature]
  -- hash pk cnt cs sign

  xc2pu @0 @4 @4
  stacktype @[PublicKey, Signature, Hash Slice, Word32, Slice, PublicKey]
  -- pubk sign hash cnt cs pubk

  chkSignU
  stacktype @[Bool, Word32, Slice, PublicKey]
  -- ? cnt cs pubk

  throwIfNot SignatureMismatch
  accept

  swap
  decodeFromSlice @Word32
  nip

  dup
  srefs @Word8

  pushInt 0
  if IsEq
  then ignore
  else do
    decodeFromSlice @Word8
    decodeFromSlice @(Cell MessageObject)
    stacktype @[Slice, Cell MessageObject, Word8, Word32, PublicKey]
    xchg @2
    sendRawMsg
    stacktype @[Slice, Word32, PublicKey]

  endS
  inc

  encodeToCell @Storage
  popRoot

getSeqno :: '[] :-> '[Word32]
getSeqno = do
  pushRoot
  cToS
  preloadFromSlice @Word32

ЦСлосниот ΠΈΠ·Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π·Π° eDSL ΠΈ ΠΏΠ°Ρ€ΠΈΡ‡Π½ΠΈΠΊ со повСќС потписи ΠΌΠΎΠΆΠ΅ Π΄Π° сС најдС Π½Π° ΠΎΠ²Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅. И повСќС Π΄Π΅Ρ‚Π°Π»Π½ΠΎ ΠΊΠ°ΠΆΠ°Π½ΠΎ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ Ρ˜Π°Π·ΠΈΡ†ΠΈ, Π½Π°ΡˆΠΈΠΎΡ‚ ΠΊΠΎΠ»Π΅Π³Π° Π“Π΅ΠΎΡ€Π³ΠΈ Агапов.

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ Π·Π° Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ΠΎΡ‚ ΠΈ ВОН

Π’ΠΊΡƒΠΏΠ½ΠΎ, Π½Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Ρ‚Ρ€Π°Π΅ΡˆΠ΅ 380 часа (Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ запознавањС со Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, состаноци ΠΈ вистински Ρ€Π°Π·Π²ΠΎΡ˜). ΠŸΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ учСствуваа Π²ΠΎ Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ΡƒΠ²Π°Ρ‡ΠΊΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: CTO, Ρ€Π°ΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π» Π½Π° Ρ‚ΠΈΠΌΠΎΡ‚, ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΡΡ‚ΠΈ Π·Π° Π±Π»ΠΎΠΊΡ‡Π΅Ρ˜Π½ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΈ Π½Π° софтвСр Haskell.

НајдовмС рСсурси Π·Π° Π΄Π° учСствувамС Π²ΠΎ Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€ΠΎΡ‚ Π±Π΅Π· ΠΏΠΎΡ‚Π΅ΡˆΠΊΠΎΡ‚ΠΈΠΈ, бидСјќи Π΄ΡƒΡ…ΠΎΡ‚ Π½Π° Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½ΠΎΡ‚, блиската тимска Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π±Ρ€Π·ΠΎ Π΄Π° сС Π½ΡƒΡ€Π½Π΅ΠΌΠ΅ Π²ΠΎ аспСктитС Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ сСкогаш сС Π²ΠΎΠ·Π±ΡƒΠ΄Π»ΠΈΠ²ΠΈ. НСколку нСпроспиСни ноќи Π·Π° ΠΏΠΎΡΡ‚ΠΈΠ³Π½ΡƒΠ²Π°ΡšΠ΅ максимални Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π²ΠΎ услови Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ рСсурси сС ΠΊΠΎΠΌΠΏΠ΅Π½Π·ΠΈΡ€Π°Π°Ρ‚ со Π½Π΅ΠΏΡ€ΠΎΡ†Π΅Π½Π»ΠΈΠ²ΠΎ искуство ΠΈ ΠΎΠ΄Π»ΠΈΡ‡Π½ΠΈ спомСни. ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Ρ‚Π°ΠΊΠ²ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π΅ сСкогаш Π΄ΠΎΠ±Π°Ρ€ тСст Π·Π° процСситС Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ˜Π°Ρ‚Π°, бидСјќи Π΅ исклучитСлно Ρ‚Π΅ΡˆΠΊΠΎ Π΄Π° сС постигнат навистина ΠΏΡ€ΠΈΡΡ‚ΠΎΡ˜Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π±Π΅Π· Π΄ΠΎΠ±Ρ€ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π°.

ВСкстовитС настрана: Π±Π΅Π²ΠΌΠ΅ импрСсионирани ΠΎΠ΄ ΠΎΠ±Π΅ΠΌΠΎΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΠ΄ Ρ‚ΠΈΠΌΠΎΡ‚ Π½Π° ВОН. УспСаа Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄Π°Ρ‚ комплСксСн, ΡƒΠ±Π°Π² ΠΈ ΡˆΡ‚ΠΎ Π΅ најваТно, Ρ€Π°Π±ΠΎΡ‚Π΅Π½ систСм. ВОН сС ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° со Π³ΠΎΠ»Π΅ΠΌ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π». Π‘Π΅ΠΏΠ°ΠΊ, Π·Π° Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ΅ овој СкосистСм, Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ повСќС, ΠΊΠ°ΠΊΠΎ Π²ΠΎ однос Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π²ΠΎ Π±Π»ΠΎΠΊΡ‡Π΅Ρ˜Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ Π²ΠΎ смисла Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈΡ‚Π΅ Π°Π»Π°Ρ‚ΠΊΠΈ. Π“ΠΎΡ€Π΄ΠΈ смС ΡˆΡ‚ΠΎ сСга смС Π΄Π΅Π» ΠΎΠ΄ овој процСс.

Ако ΠΏΠΎ Ρ‡ΠΈΡ‚Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° сè ΡƒΡˆΡ‚Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΡ€Π°ΡˆΠ°ΡšΠ° ΠΈΠ»ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ ΠΈΠ΄Π΅ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ користитС TON Π·Π° Π΄Π° Π³ΠΈ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½ΠΈ β€” со задоволство ќС Π³ΠΎ сподСлимС Π½Π°ΡˆΠ΅Ρ‚ΠΎ искуство.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€