แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒ’แƒ•แƒกแƒฃแƒ แƒก แƒ’แƒแƒ’แƒ˜แƒ–แƒ˜แƒแƒ แƒแƒ— แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ’แƒ–แƒ.
แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒกแƒ™แƒแƒšแƒแƒก แƒ”แƒœแƒแƒ–แƒ” แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒขแƒ˜แƒžแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—. แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒ แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜. แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒฌแƒ˜แƒœแƒแƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒแƒกแƒžแƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ แƒกแƒแƒ”แƒ แƒ—แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ–แƒ”.

แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

(ะฝะฐ ั€ัƒััะบะพะผ)

แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜

แƒซแƒšแƒ˜แƒ”แƒ แƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒกแƒฌแƒแƒ แƒ˜ แƒ“แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”. แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ (แƒขแƒ”แƒ แƒแƒคแƒแƒ แƒ›แƒฃแƒšแƒ˜, แƒแƒœแƒกแƒ˜แƒ‘แƒ˜แƒšแƒ˜ แƒแƒœ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜) แƒ“แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ (แƒฎแƒจแƒ˜แƒ แƒแƒ“ - แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก/แƒ แƒแƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก). แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒ•แƒกแƒฃแƒ แƒก แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒกแƒแƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ” (แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒจแƒ”แƒ’แƒ•แƒ”แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒฃแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜). JVM แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜ แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ แƒ›แƒแƒ˜แƒœแƒช แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”.

แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒแƒก? แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ–แƒ” แƒ›แƒ˜แƒกแƒ•แƒšแƒแƒ›แƒ“แƒ” แƒฃแƒœแƒ“แƒ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ”แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒจแƒ”แƒ•แƒซแƒšแƒแƒ— แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ”แƒฅแƒกแƒขแƒ แƒแƒžแƒแƒšแƒแƒชแƒ˜แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ–แƒ”, แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜ แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜.

แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ’แƒ–แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”. แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ’แƒ–แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒแƒก. (แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ’แƒ–แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ.) แƒแƒกแƒ” แƒ แƒแƒ›, แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ˜แƒงแƒแƒก, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ  แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ’แƒ–แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”.

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒš แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ แƒ•แƒ˜แƒ—แƒแƒ แƒ“แƒ”แƒ‘แƒ. แƒฉแƒ•แƒ”แƒœ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒ”แƒ•แƒแƒšแƒฃแƒชแƒ˜แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ”แƒ‘แƒ˜. แƒ’แƒแƒœแƒ˜แƒ•แƒ แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒคแƒแƒ แƒ•แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ แƒ“แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ”แƒขแƒ˜แƒ™แƒ”แƒขแƒ˜แƒ—. แƒ—แƒฃ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒ, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ”แƒ แƒ—แƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜. แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ”แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒกแƒแƒฌแƒแƒ แƒ›แƒแƒ แƒ’แƒแƒ แƒ”แƒ›แƒ. แƒ“แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ” แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜. แƒแƒกแƒ” แƒ แƒแƒ›, แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ”แƒฌแƒแƒ“แƒแƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ แƒ“แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒชแƒแƒšแƒกแƒแƒฎแƒแƒ“ แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒก แƒ”แƒขแƒ˜แƒ™แƒ”แƒขแƒ˜ แƒ“แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก, แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก, แƒ’แƒแƒ แƒ” แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก, แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ— แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒแƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”. แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒคแƒแƒ แƒแƒ•แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ— แƒ’แƒแƒœแƒจแƒขแƒแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ’แƒแƒœแƒ•แƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก แƒกแƒแƒ›แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒแƒœแƒ˜ แƒแƒ—แƒแƒ‘แƒ˜แƒ—แƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ— (1.2.3), แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒฎแƒ•แƒ แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜.

แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒฎแƒ”แƒšแƒ˜แƒ— แƒแƒฆแƒแƒ  แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ. แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ—
แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ“แƒ แƒแƒ แƒแƒกแƒแƒ“แƒ”แƒก แƒจแƒ”แƒ”แƒฎแƒแƒ— แƒ›แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒแƒกแƒ” แƒ แƒแƒ›, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ•แƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ—, แƒ แƒแƒขแƒแƒ› แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒคแƒแƒ แƒ›แƒแƒขแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก? แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒกแƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒจแƒ˜ แƒ“แƒ แƒ˜แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒแƒก แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ•แƒแƒšแƒ˜แƒ“แƒแƒชแƒ˜แƒ˜แƒกแƒ’แƒแƒœ.

แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒš แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒจแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒแƒก.

แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

แƒแƒ› แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก. แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก แƒแƒ แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ“แƒ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ - แƒ”แƒฅแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ“แƒ แƒ”แƒฅแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒแƒ แƒ˜แƒ•แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒ—. แƒ”แƒ แƒ—แƒ˜ แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ›แƒ”แƒแƒ แƒ” แƒ”แƒ แƒ—แƒ˜ แƒแƒ แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒกแƒ’แƒแƒœ. แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

sealed trait NodeId
case object Backend extends NodeId
case object Frontend extends NodeId

แƒแƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“

case class NodeId(hostName: String)

แƒแƒœ แƒ—แƒฃแƒœแƒ“แƒแƒช

object Singleton
type NodeId = Singleton.type

แƒ”แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜ แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ”แƒœ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ แƒแƒšแƒก, แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ”แƒœ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก แƒ“แƒ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ”แƒซแƒšแƒแƒ— แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ—แƒแƒœ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ TCP/HTTP แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.

TCP แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒžแƒแƒ แƒขแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒ˜. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ“แƒแƒ•แƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ–แƒ” แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒ”แƒœ. แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒ•แƒแƒชแƒฎแƒแƒ“แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ™แƒšแƒแƒกแƒ˜:

case class TcpEndPoint[Protocol](node: NodeId, port: Port[Protocol])

แƒกแƒแƒ“แƒแƒช Port แƒแƒ แƒ˜แƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ Int แƒ“แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒš แƒ“แƒ˜แƒแƒžแƒแƒ–แƒแƒœแƒจแƒ˜:

type PortNumber = Refined[Int, Closed[_0, W.`65535`.T]]

แƒ“แƒแƒฎแƒ•แƒ”แƒฌแƒ˜แƒšแƒ˜ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜

แƒแƒ’แƒ แƒ”แƒ—แƒ•แƒ” แƒ“แƒแƒฎแƒ•แƒ”แƒฌแƒ˜แƒšแƒ˜ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ. แƒ›แƒแƒ™แƒšแƒ”แƒ“, แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒ“แƒ แƒแƒ˜แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒ˜ แƒกแƒฎแƒ•แƒ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ–แƒ”. แฒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ Int แƒ“แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ 16-แƒ‘แƒ˜แƒขแƒ˜แƒแƒœแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒ“แƒ”แƒก แƒžแƒแƒ แƒขแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ แƒก. แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒแƒ› แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒแƒ› แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒซแƒแƒšแƒ˜แƒแƒœ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒฏแƒ“แƒ”แƒ‘แƒ.

HTTP-แƒกแƒ—แƒ•แƒ˜แƒก (REST) โ€‹โ€‹แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒ–แƒ:

type UrlPathPrefix = Refined[String, MatchesRegex[W.`"[a-zA-Z_0-9/]*"`.T]]
case class PortWithPrefix[Protocol](portNumber: PortNumber, pathPrefix: UrlPathPrefix)

แƒคแƒแƒœแƒขแƒแƒ›แƒฃแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜

แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒก แƒ“แƒ แƒแƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Scala-แƒก แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒ”แƒšแƒก แƒขแƒ˜แƒžแƒ˜แƒก แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Protocol แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ™แƒšแƒแƒกแƒจแƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ”.แƒฌ แƒคแƒแƒœแƒขแƒแƒ›แƒฃแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜. แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒฉแƒ•แƒ”แƒœ แƒ˜แƒจแƒ•แƒ˜แƒแƒ—แƒแƒ“ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒแƒ  แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒ›แƒแƒก. แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒกแƒแƒก แƒ”แƒก แƒคแƒแƒœแƒขแƒแƒ›แƒฃแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜ แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒขแƒ˜แƒžแƒ˜แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒžแƒแƒ แƒขแƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒ—.

แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒคแƒแƒ แƒ—แƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜ แƒแƒ แƒ˜แƒก REST API Json แƒกแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒ—:

sealed trait JsonHttpRestProtocol[RequestMessage, ResponseMessage]

แƒกแƒแƒ“แƒแƒช RequestMessage แƒแƒ แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒขแƒ˜แƒžแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ“แƒ ResponseMessage แƒแƒ แƒ˜แƒก แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒ”แƒ‘แƒ”แƒœ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ—.

แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก:

sealed trait SimpleHttpGetRest[RequestMessage, ResponseMessage]

แƒแƒ› แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒจแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ url-แƒก แƒ“แƒ แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜.

แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ—, แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒšแƒ”แƒฅแƒชแƒ˜แƒ˜แƒ— แƒ“แƒ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒ’แƒ–แƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒฌแƒแƒ แƒ›แƒแƒ•แƒแƒ“แƒ’แƒ˜แƒœแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ”แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜ Scala-แƒจแƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, HList, แƒแƒšแƒ’แƒ”แƒ‘แƒ แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜). แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒขแƒแƒ แƒขแƒ˜แƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒก แƒ“แƒ แƒฌแƒแƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒ’แƒ”แƒœแƒ— แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒœแƒแƒญแƒ แƒ”แƒ‘แƒก (แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒก), แƒ แƒแƒ’แƒแƒ แƒช แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒก. (แƒขแƒแƒ แƒขแƒ˜แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒแƒ› แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒ“แƒ”แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ.)

แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ˜แƒงแƒแƒก Cake Pattern-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒแƒšแƒ แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜:

  type EchoProtocol[A] = SimpleHttpGetRest[A, A]

  trait EchoConfig[A] extends ServiceConfig {
    def portNumber: PortNumber = 8081
    def echoPort: PortWithPrefix[EchoProtocol[A]] = PortWithPrefix[EchoProtocol[A]](portNumber, "echo")
    def echoService: HttpSimpleGetEndPoint[NodeId, EchoProtocol[A]] = providedSimpleService(echoPort)
  }

Echo แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒžแƒแƒ แƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒ”แƒก แƒžแƒแƒ แƒขแƒ˜ แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ”แƒฅแƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒก. แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒžแƒแƒ แƒขแƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ แƒแƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒขแƒฃแƒšแƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ”แƒ™แƒšแƒแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜. แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒขแƒฃแƒš แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒก, แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ˜แƒ›แƒžแƒšแƒ”แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒจแƒ˜. แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒแƒฌแƒแƒ“แƒ”แƒ— แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ (8081) แƒ“แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ, แƒ—แƒฃ แƒ›แƒแƒก แƒ’แƒแƒ›แƒแƒ•แƒขแƒแƒ•แƒ”แƒ‘แƒ— แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒแƒชแƒฎแƒแƒ“แƒแƒ— แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒ”แƒฅแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜:

  trait EchoClientConfig[A] {
    def testMessage: String = "test"
    def pollInterval: FiniteDuration
    def echoServiceDependency: HttpSimpleGetEndPoint[_, EchoProtocol[A]]
  }

แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒแƒฅแƒ•แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒขแƒ˜แƒžแƒ˜, แƒ แƒแƒช echoService. แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒก แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก. แƒแƒฅแƒ”แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒงแƒแƒ—, แƒ แƒแƒ› แƒ—แƒฃ แƒแƒ› แƒแƒ  แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒ“แƒแƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ—, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒœ.

แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ

แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒœแƒ˜แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. (แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ’แƒแƒ“แƒแƒ›แƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.) แƒ˜แƒกแƒ”แƒ• แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒกแƒ”แƒ—แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒขแƒ˜แƒžแƒ˜แƒก แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜). แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ™แƒ•แƒšแƒแƒ• แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒขแƒแƒ แƒขแƒ˜แƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒก. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฌแƒแƒ แƒ›แƒแƒ•แƒแƒ“แƒ’แƒ˜แƒœแƒแƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— cats.Resource แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ™แƒ•แƒ” แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒ‘แƒ แƒ”แƒ™แƒ”แƒขแƒ˜แƒœแƒ’แƒ˜แƒก แƒ“แƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก. แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒ”แƒœแƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ•แƒแƒฌแƒแƒ“แƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ“แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜. แƒแƒกแƒ” แƒ แƒแƒ›, แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒแƒ“แƒ”แƒก:

  type ResourceReader[F[_], Config, A] = Reader[Config, Resource[F, A]]

  trait ServiceImpl[F[_]] {
    type Config
    def resource(
      implicit
      resolver: AddressResolver[F],
      timer: Timer[F],
      contextShift: ContextShift[F],
      ec: ExecutionContext,
      applicative: Applicative[F]
    ): ResourceReader[F, Config, Unit]
  }

แƒกแƒแƒ“แƒแƒช

  • Config โ€” แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒแƒ› แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
  • AddressResolver โ€” แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒฅแƒ•แƒก แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ (แƒ’แƒแƒœแƒแƒ’แƒ แƒซแƒ”แƒ— แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก).

แƒกแƒฎแƒ•แƒ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ“แƒ˜แƒก cats:

  • F[_] - แƒ”แƒคแƒ”แƒฅแƒขแƒ˜แƒก แƒขแƒ˜แƒžแƒ˜ (แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ F[A] แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ () => A. แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— cats.IO.)
  • Reader[A,B] โ€” แƒ›แƒ”แƒข-แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ“ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒกแƒ˜แƒœแƒแƒœแƒ˜แƒ›แƒ˜แƒ A => B
  • cats.Resource - แƒแƒฅแƒ•แƒก แƒจแƒ”แƒซแƒ”แƒœแƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ–แƒ”แƒ‘แƒ˜
  • Timer โ€” แƒซแƒ˜แƒšแƒ˜แƒก/แƒ“แƒ แƒแƒ˜แƒก แƒ’แƒแƒ–แƒแƒ›แƒ•แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ˜แƒซแƒšแƒ”แƒ•แƒ
  • ContextShift - แƒแƒœแƒแƒšแƒแƒ’แƒ˜ ExecutionContext
  • Applicative - แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ (แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒ›แƒแƒœแƒแƒ“แƒ) (แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒจแƒ”แƒ•แƒชแƒ•แƒแƒšแƒแƒ— แƒ˜แƒ’แƒ˜ แƒกแƒฎแƒ•แƒ แƒ แƒแƒ›แƒ˜แƒ—)

แƒแƒ› แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒแƒคแƒ”แƒ แƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก:

  trait ZeroServiceImpl[F[_]] extends ServiceImpl[F] {
    type Config <: Any
    def resource(...): ResourceReader[F, Config, Unit] =
      Reader(_ => Resource.pure[F, Unit](()))
  }

(แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - แƒ”แƒฅแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜,
แƒ”แƒฅแƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ›แƒ“แƒ” แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ”แƒ‘แƒ˜.)

แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก (แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒฏแƒแƒญแƒ•แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ Cake Pattern-แƒ˜แƒ—):

object SingleNodeImpl extends ZeroServiceImpl[IO]
  with EchoServiceService
  with EchoClientService
  with FiniteDurationLifecycleServiceImpl
{
  type Config = EchoConfig[String] with EchoClientConfig[String] with FiniteDurationLifecycleConfig
}

แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ–แƒฃแƒกแƒขแƒ”แƒ‘แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ–แƒฃแƒกแƒข แƒขแƒ˜แƒžแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒแƒ› แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒแƒ  แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒฃแƒคแƒšแƒ”แƒ‘แƒแƒก แƒแƒ•แƒแƒจแƒ”แƒœแƒแƒ— แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ (Cake) แƒแƒ แƒแƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒขแƒ˜แƒžแƒ˜แƒ—, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒแƒก Config แƒขแƒ˜แƒžแƒ˜. แƒแƒกแƒ”แƒ•แƒ”, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒจแƒ”แƒ•แƒซแƒšแƒ”แƒ‘แƒ— แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒแƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒก แƒ’แƒแƒ แƒฉแƒ”แƒ•แƒแƒ“แƒแƒ‘แƒ

แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒงแƒแƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒฐแƒแƒกแƒขแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒงแƒแƒก แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜. แƒแƒฅแƒ”แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ’แƒ–แƒ, แƒ แƒแƒ—แƒ แƒ›แƒ˜แƒ•แƒแƒฌแƒแƒ“แƒแƒ— แƒ แƒฃแƒ™แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก id-แƒกแƒ แƒ“แƒ แƒ›แƒ˜แƒก แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ• แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒก แƒจแƒแƒ แƒ˜แƒก. แƒ”แƒก แƒ แƒฃแƒฅแƒ แƒแƒ แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ:

case class NodeAddress[NodeId](host: Uri.Host)
trait AddressResolver[F[_]] {
  def resolve[NodeId](nodeId: NodeId): F[NodeAddress[NodeId]]
}

แƒแƒกแƒ”แƒ—แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒ’แƒ–แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก.

  1. แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒชแƒ˜แƒ— แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒแƒ›แƒ“แƒ”, แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒฐแƒแƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ Scala แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒจแƒ˜ (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒแƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก). แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ แƒฃแƒ™แƒ”แƒ‘แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒแƒ“ แƒ“แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ“แƒ”แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ›แƒ“แƒ” Map[NodeId, NodeAddress].
  2. แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ, แƒแƒœ แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฏแƒ”แƒ  แƒแƒ  แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ”แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒงแƒ•แƒ”แƒšแƒ แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒฌแƒ˜แƒœ แƒ“แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ›แƒ แƒ™แƒ•แƒแƒœแƒซแƒ›แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒแƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒแƒ› แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒจแƒ˜ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ”แƒ แƒแƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜.
  3. แƒ—แƒฃ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ•แƒชแƒ•แƒแƒšแƒแƒ— /etc/hostsแƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜ (แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ my-project-main-node แƒ›แƒ“แƒ” echo-backend) แƒ“แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒ”แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ ip แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ—แƒแƒœ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก.

แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ”แƒ‘แƒก แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“. แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒ—แƒแƒ›แƒแƒจแƒแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒ•แƒแƒœแƒซแƒก แƒ”แƒฅแƒœแƒ”แƒ‘แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ - 127.0.0.1.

แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒแƒ  แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒแƒก:

  1. แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ, แƒกแƒแƒ“แƒแƒช แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ›แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ”แƒ แƒ— แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”.
  2. แƒแƒ แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ, แƒกแƒแƒ“แƒแƒช แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”แƒ.

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜แƒ:

แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

object SingleNodeConfig extends EchoConfig[String] 
  with EchoClientConfig[String] with FiniteDurationLifecycleConfig
{
  case object Singleton // identifier of the single node 
  // configuration of server
  type NodeId = Singleton.type
  def nodeId = Singleton

  /** Type safe service port specification. */
  override def portNumber: PortNumber = 8088

  // configuration of client

  /** We'll use the service provided by the same host. */
  def echoServiceDependency = echoService

  override def testMessage: UrlPathElement = "hello"

  def pollInterval: FiniteDuration = 1.second

  // lifecycle controller configuration
  def lifetime: FiniteDuration = 10500.milliseconds // additional 0.5 seconds so that there are 10 requests, not 9.
}

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ”แƒ แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒ— แƒกแƒแƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ แƒชแƒ˜แƒ™แƒšแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒจแƒ”แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ lifetime แƒ˜แƒœแƒขแƒ”แƒ แƒ•แƒแƒšแƒ˜ แƒ’แƒแƒ“แƒ˜แƒก.

แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒแƒ แƒ˜ แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒแƒ แƒ˜ แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒ—:

แƒแƒ แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ

  object NodeServerConfig extends EchoConfig[String] with SigTermLifecycleConfig
  {
    type NodeId = NodeIdImpl

    def nodeId = NodeServer

    override def portNumber: PortNumber = 8080
  }

  object NodeClientConfig extends EchoClientConfig[String] with FiniteDurationLifecycleConfig
  {
    // NB! dependency specification
    def echoServiceDependency = NodeServerConfig.echoService

    def pollInterval: FiniteDuration = 1.second

    def lifetime: FiniteDuration = 10500.milliseconds // additional 0.5 seconds so that there are 10 request, not 9.

    def testMessage: String = "dolly"
  }

แƒœแƒแƒฎแƒ”แƒ—, แƒ แƒแƒ’แƒแƒ  แƒ•แƒแƒ–แƒฃแƒกแƒขแƒ”แƒ‘แƒ— แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒš แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒคแƒแƒœแƒขแƒแƒ›แƒฃแƒ  แƒขแƒ˜แƒžแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒก. แƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ’แƒ•แƒ”แƒฅแƒœแƒ”แƒ‘แƒ แƒกแƒฌแƒแƒ แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก ID. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒแƒกแƒžแƒ”แƒฅแƒขแƒ˜. แƒ˜แƒก แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— แƒžแƒแƒ แƒขแƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ“แƒ แƒ“แƒแƒ•แƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒกแƒฌแƒแƒ  แƒžแƒแƒ แƒขแƒก แƒ›แƒ˜แƒ•แƒ›แƒแƒ แƒ—แƒแƒ•แƒ—.

แƒแƒ แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ

แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒแƒก. แƒแƒ แƒแƒœแƒแƒ˜แƒ แƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ แƒกแƒแƒ”แƒ แƒ—แƒแƒ“. แƒ—แƒฃแƒ›แƒชแƒ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒ  แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒš แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ˜แƒ›แƒžแƒšแƒ”แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก:

  object TwoJvmNodeServerImpl extends ZeroServiceImpl[IO] with EchoServiceService with SigIntLifecycleServiceImpl {
    type Config = EchoConfig[String] with SigTermLifecycleConfig
  }

  object TwoJvmNodeClientImpl extends ZeroServiceImpl[IO] with EchoClientService with FiniteDurationLifecycleServiceImpl {
    type Config = EchoClientConfig[String] with FiniteDurationLifecycleConfig
  }

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒ“แƒ แƒ›แƒแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒ›แƒ”แƒแƒ แƒ” แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก แƒ“แƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒœแƒแƒฌแƒ˜แƒšแƒก. แƒแƒ แƒ˜แƒ•แƒ” แƒ™แƒ•แƒแƒœแƒซแƒก แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒก แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒ. แƒแƒ› แƒกแƒแƒคแƒแƒกแƒขแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒก แƒ”แƒฅแƒœแƒ”แƒ‘แƒ แƒฃแƒกแƒแƒกแƒ แƒฃแƒšแƒ แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ”, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒฌแƒงแƒ“แƒ”แƒก SIGTERM, แƒฎแƒแƒšแƒ echo แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒจแƒ”แƒฌแƒงแƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒกแƒ แƒฃแƒšแƒ˜ แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ“แƒแƒ›แƒฌแƒงแƒ”แƒ‘ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜

แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒชแƒ•แƒšแƒ˜แƒก แƒ”แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ’แƒ–แƒแƒก.

แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒก. แƒ›แƒ˜แƒ–แƒแƒœแƒจแƒ”แƒฌแƒแƒœแƒ˜แƒšแƒ˜แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ แƒกแƒฎแƒ•แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ. แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ”แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ™แƒแƒ“แƒ˜แƒก แƒ‘แƒแƒ–แƒแƒ–แƒ”. แƒ“แƒ แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ”แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ•แƒแƒ แƒฉแƒ˜แƒแƒ— แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ”แƒก แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒ˜ แƒ“แƒแƒ แƒฉแƒ”แƒ‘แƒ, แƒ แƒแƒชแƒ แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก แƒ’แƒแƒœแƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ—.

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ. แƒแƒกแƒ” แƒ แƒแƒ›, แƒ˜แƒก แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ“แƒแƒคแƒแƒ แƒฃแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒ—:

แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ˜ -> PR -> แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ -> แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ -> แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ -> แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ

แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒ:

  1. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜.
  2. แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ— แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜. แƒฃแƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒแƒ แƒจแƒ”แƒกแƒ•แƒšแƒ แƒ“แƒ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ. แƒแƒกแƒ” แƒ แƒแƒ›, แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒ˜แƒคแƒขแƒ˜ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ“ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ.
  3. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก.
  4. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ แƒ›แƒแƒฐแƒงแƒ•แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ›แƒแƒ•แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒก แƒ“แƒ แƒ’แƒแƒ˜แƒ•แƒšแƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒแƒก.

แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ—แƒฃ แƒแƒ แƒ แƒชแƒแƒšแƒ™แƒ” แƒกแƒแƒชแƒแƒ•แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก? แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒกแƒ”แƒœแƒกแƒ˜แƒขแƒ˜แƒฃแƒ  แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒ•แƒกแƒฃแƒ แƒก แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒฃแƒฌแƒ•แƒ“แƒแƒ›แƒ”แƒš แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ—. แƒแƒกแƒ” แƒ แƒแƒ›, แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒฆแƒ˜แƒ แƒ“แƒ”แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒฃแƒšแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ•แƒงแƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒแƒ  แƒœแƒแƒฌแƒ˜แƒšแƒแƒ“ - แƒ”แƒ แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฆแƒ˜แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก แƒ“แƒ แƒ”แƒ แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒ แƒœแƒแƒฌแƒ˜แƒšแƒก. แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒ˜แƒกแƒชแƒ”แƒ›แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ“ แƒฃแƒ›แƒ แƒแƒ•แƒšแƒ”แƒกแƒแƒ‘แƒแƒ–แƒ”, แƒฎแƒแƒšแƒ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒแƒ แƒ—แƒšแƒแƒช แƒ›แƒ’แƒ แƒซแƒœแƒแƒ‘แƒ˜แƒแƒ แƒ” แƒกแƒแƒ’แƒœแƒ”แƒ‘แƒ–แƒ”. แƒแƒ›แƒ˜แƒก แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ แƒจแƒฃแƒแƒšแƒ”แƒ“แƒฃแƒ แƒ˜ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ—.

แƒ•แƒแƒ แƒ˜แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜

แƒ•แƒœแƒแƒฎแƒแƒ— แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒ แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ”แƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒแƒกแƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—.

แƒฃแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ”แƒก แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ, แƒฉแƒ•แƒ”แƒœ แƒฉแƒแƒ›แƒแƒ•แƒ—แƒ•แƒšแƒ˜แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒ•แƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒ–แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒแƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

  1. แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜ แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”.
  2. แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ (แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ etcd/zookeeper).
  3. แƒฅแƒ•แƒ”แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ/แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.
  4. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ— แƒ“แƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜.

แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜ แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒ›แƒแƒฅแƒœแƒ˜แƒšแƒแƒ‘แƒแƒก ad-hoc แƒจแƒ”แƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—. แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ•แƒ˜แƒ“แƒ”แƒก แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜, แƒจแƒ”แƒ˜แƒขแƒแƒœแƒแƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ™แƒแƒ แƒ’แƒ˜ แƒ˜แƒงแƒแƒก แƒฃแƒคแƒ แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ›แƒ แƒ™แƒ•แƒแƒšแƒ˜ แƒแƒ  แƒ แƒฉแƒ”แƒ‘แƒ. แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒ แƒฌแƒงแƒ•แƒ˜แƒšแƒ˜ แƒ—แƒ•แƒแƒšแƒ˜แƒ—. แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒ•แƒ, แƒ—แƒฃ แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ. แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ˜. แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒžแƒ”แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒ˜แƒ•แƒ˜แƒฌแƒงแƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜.

(Btw, แƒ—แƒฃ แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ, แƒฉแƒ•แƒ”แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒžแƒแƒ แƒกแƒ”แƒ แƒ˜ + แƒ•แƒแƒšแƒ˜แƒ“แƒแƒขแƒแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒก แƒฌแƒแƒ แƒ›แƒแƒฅแƒ›แƒœแƒ˜แƒก Config แƒแƒ™แƒ แƒ˜แƒคแƒ”แƒ— แƒ“แƒ แƒ”แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“. แƒ”แƒก แƒแƒกแƒ”แƒ•แƒ” แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ” แƒชแƒแƒขแƒ แƒฃแƒคแƒ แƒ แƒ›แƒชแƒ˜แƒ แƒ”แƒ แƒ•แƒ˜แƒ“แƒ แƒ” แƒขแƒ”แƒฅแƒกแƒขแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”, แƒ แƒแƒ“แƒ’แƒแƒœ แƒขแƒ”แƒฅแƒกแƒขแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒš แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ™แƒแƒ“แƒ˜.)

แƒชแƒ”แƒœแƒขแƒ แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜-แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜แƒ แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ›แƒ”แƒขแƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ•แƒ˜แƒคแƒ˜แƒฅแƒ แƒแƒ— แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒแƒก แƒ›แƒ˜แƒ•แƒ˜แƒฉแƒœแƒ”แƒ•แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒ แƒ แƒแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜. แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ C => A => B แƒฉแƒ•แƒ”แƒœ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒ— แƒ˜แƒจแƒ•แƒ˜แƒแƒ—แƒแƒ“ แƒชแƒ•แƒแƒšแƒ”แƒ‘แƒแƒ“ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒก C "แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ", แƒฎแƒแƒšแƒ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒแƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ A - แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ”แƒฌแƒแƒ“แƒแƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ” แƒแƒ“แƒ แƒ” A. แƒแƒ› แƒ˜แƒ“แƒ”แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ แƒแƒ› แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒšแƒแƒ“แƒœแƒ”แƒšแƒ˜ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ, แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒšแƒแƒ“ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ. แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒแƒ“แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒฌแƒงแƒแƒ แƒแƒ“แƒแƒœ (แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒ“แƒแƒœ) แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ›แƒแƒ“แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒฌแƒงแƒแƒ แƒแƒ“แƒแƒœ (แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜). แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ—แƒแƒœ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒแƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒก แƒ–แƒ แƒ“แƒแƒก. แƒแƒกแƒ”แƒ—แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ’แƒ•แƒ˜แƒฌแƒ”แƒ•แƒก แƒ›แƒแƒ—แƒ˜ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ˜, แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒ“แƒ แƒ•แƒแƒšแƒ˜แƒ“แƒแƒชแƒ˜แƒ, แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ˜แƒ แƒจแƒ”แƒ•แƒแƒ›แƒชแƒ˜แƒ แƒแƒ— แƒ˜แƒ› แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก (แƒแƒœ แƒ—แƒฃแƒœแƒ“แƒแƒช แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒฆแƒ›แƒแƒ•แƒคแƒฎแƒ•แƒ แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜).

แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒก แƒžแƒ”แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ˜แƒ•แƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒ•แƒแƒกแƒฎแƒ•แƒแƒ•แƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ“แƒ แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜. แƒ—แƒฃ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ˜แƒจแƒ•แƒ˜แƒแƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ›แƒแƒ— แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ•แƒฃแƒฌแƒแƒ“แƒแƒ— แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜. แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜แƒ แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ แƒ แƒ”แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ’แƒแƒฎแƒ“แƒ”แƒก แƒกแƒฎแƒ•แƒ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ”แƒ‘แƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒแƒก แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ.
(แƒฉแƒ”แƒ›แƒ˜ แƒ›แƒแƒ™แƒ แƒซแƒแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ–แƒ แƒ˜แƒ, แƒ แƒแƒ› แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ•แƒ˜แƒชแƒ˜แƒšแƒแƒ— แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒ–แƒ แƒ“แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒก.
แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ˜แƒงแƒแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ OS-แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒแƒ–แƒ” แƒ“แƒแƒงแƒ แƒ“แƒœแƒแƒ‘แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒแƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒ˜แƒงแƒแƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜.)

แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒแƒกแƒžแƒ”แƒฅแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒแƒ˜แƒซแƒฃแƒšแƒ”แƒ‘แƒก แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒก แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒœ แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ (แƒกแƒฎแƒ•แƒ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”) แƒแƒ แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒจแƒ”แƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก. แƒ›แƒแƒ แƒ—แƒšแƒแƒช, แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒฌแƒ”แƒ•แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒขแƒแƒœแƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ  แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒฎแƒ“แƒ”แƒก. แƒจแƒ”แƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก. แƒ—แƒฃ แƒ”แƒก แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒ’แƒ”แƒ’แƒ›แƒแƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒœแƒ•แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒ— AWS ELB แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒ“แƒ แƒ”แƒœแƒแƒŸแƒ˜. แƒแƒ› แƒกแƒชแƒ”แƒœแƒแƒ แƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ, แƒฉแƒ•แƒ”แƒœ แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒแƒ“ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒฎแƒแƒš แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒก, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— แƒ›แƒแƒกแƒ–แƒ” ELB-แƒ–แƒ”, แƒฎแƒแƒšแƒ แƒซแƒ•แƒ”แƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒก แƒ•แƒแƒซแƒšแƒ”แƒ•แƒ— แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒแƒก แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜.

แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒแƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒฃแƒšแƒ˜ แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ—แƒฃ แƒ’แƒแƒ แƒ”แƒ—? แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ แƒแƒ› แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒ› แƒ’แƒแƒ˜แƒแƒ แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒฎแƒ•แƒ แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ”แƒ‘แƒ›แƒ. แƒแƒกแƒ” แƒ แƒแƒ›, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก, แƒ แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ“แƒ แƒกแƒแƒœแƒ“แƒแƒ. แƒžแƒ˜แƒ แƒ˜แƒฅแƒ˜แƒ—, แƒชแƒแƒšแƒ™แƒ” แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ™แƒ•แƒแƒšแƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ•แƒ˜แƒœ แƒ“แƒ แƒ แƒแƒขแƒแƒ› แƒจแƒ”แƒ˜แƒขแƒแƒœแƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒ› แƒคแƒแƒ˜แƒšแƒจแƒ˜. แƒ”แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ? แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒฏแƒ”แƒ แƒ, แƒ แƒแƒ› แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜แƒ แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ.

แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒแƒ แƒ™แƒ•แƒ˜แƒแƒ— แƒ แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ, แƒ แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก, แƒ แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒ แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜/แƒ’แƒแƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜, แƒ•แƒ˜แƒœ แƒ˜แƒงแƒ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒแƒ–แƒ”. แƒ›แƒแƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒซแƒแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒก แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒ แƒ”แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒก แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜แƒ.

แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒ แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ”แƒ”แƒ‘แƒ˜

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒกแƒฃแƒ แƒก แƒ’แƒแƒ›แƒแƒ•แƒงแƒแƒ— แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ แƒ“แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ”.

แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ”แƒ‘แƒ˜

แƒกแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜:

  1. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ. แƒ”แƒก แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ“แƒแƒœแƒ˜แƒก แƒœแƒ“แƒแƒ‘แƒแƒก, แƒ แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒกแƒฌแƒแƒ แƒ˜แƒ แƒขแƒ˜แƒžแƒ˜แƒก แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—.
  2. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ“แƒ˜แƒ“แƒแƒ แƒ˜ แƒ”แƒœแƒ. แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒกแƒฎแƒ•แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ›แƒแƒ˜แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒ แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒฃแƒ› แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ˜แƒ—.
    Scala-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ”แƒœแƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ แƒ—แƒ แƒกแƒžแƒ”แƒฅแƒขแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒกแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒšแƒแƒ“. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒกแƒแƒงแƒแƒคแƒแƒ“, แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒ•แƒ›แƒแƒ แƒ—แƒแƒ— vals แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ’แƒแƒ แƒ” แƒ–แƒแƒœแƒแƒจแƒ˜ (DRY). แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒšแƒ˜แƒขแƒ”แƒ แƒแƒขแƒฃแƒ แƒฃแƒšแƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒแƒœ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ (Seq, Map, แƒ“แƒ แƒ.แƒจ.).
  3. DSL. Scala-แƒก แƒแƒฅแƒ•แƒก แƒฆแƒ˜แƒ แƒกแƒ”แƒฃแƒšแƒ˜ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ DSL แƒ“แƒแƒ›แƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒœแƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒงแƒแƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒคแƒ แƒ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒ—แƒ แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ›แƒแƒ›แƒ“แƒ” แƒ˜แƒงแƒแƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
  4. แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ‘แƒ แƒ“แƒ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒแƒ‘แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒจแƒ˜. แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ›แƒ™แƒแƒชแƒ แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก, แƒกแƒแƒ“แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒแƒกแƒ”แƒ•แƒ” แƒแƒ™แƒ แƒ˜แƒคแƒ”แƒ— แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒžแƒแƒ แƒขแƒ˜แƒก แƒ“แƒ”แƒ™แƒšแƒแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ แƒแƒ—แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒก, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒกแƒฌแƒแƒ  แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ”แƒœแƒแƒ–แƒ” แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘แƒ”แƒœ. แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒแƒจแƒ™แƒแƒ แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก, แƒ แƒแƒช แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒแƒก.
  5. แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜ PR แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—, แƒแƒ“แƒ’แƒ”แƒœแƒก แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ›แƒแƒฆแƒแƒš แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ”แƒ‘แƒก แƒแƒกแƒ”แƒ•แƒ” แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜.
  6. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒแƒก.
  7. แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒ. แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก แƒแƒ  แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ. แƒ”แƒก แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก แƒ›แƒ—แƒšแƒ˜แƒแƒœ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก. (แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ–แƒ แƒ“แƒ แƒแƒ แƒ˜แƒก แƒ—แƒแƒ•แƒแƒ“ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ’แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒแƒญแƒ แƒแƒ‘แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ—.) แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ - แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ“แƒแƒ™แƒแƒ แƒ’แƒฃแƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜. แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ“แƒ”แƒ‘แƒ.
  8. แƒ•แƒ”แƒ แƒกแƒ˜แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ˜แƒฅแƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒแƒฐแƒงแƒ•แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒก, แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒแƒ แƒขแƒ”แƒคแƒแƒฅแƒขแƒก แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ—. แƒ”แƒก แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฃแƒ™แƒแƒœ แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒœแƒ•แƒแƒ—แƒแƒ•แƒกแƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ แƒ“แƒ แƒ˜แƒก แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ’แƒ–แƒ˜แƒ—. แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒแƒ‘แƒแƒก แƒ“แƒ แƒกแƒแƒ˜แƒ›แƒ”แƒ“แƒแƒแƒ‘แƒแƒก. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ“แƒ แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒแƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜.
  9. แƒ›แƒแƒ“แƒฃแƒšแƒแƒ แƒฃแƒšแƒแƒ‘แƒ. แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฉแƒแƒ แƒฉแƒ แƒ›แƒแƒ“แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ”แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ˜แƒ—
    แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ (แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ/แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ). แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— แƒ›แƒชแƒ˜แƒ แƒ” แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜. แƒ›แƒ˜แƒ–แƒแƒœแƒจแƒ”แƒฌแƒแƒœแƒ˜แƒšแƒ˜แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ.
  10. แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ. แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒ›แƒ˜แƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ แƒ“แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ“. แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒšแƒ˜ แƒ˜แƒ›แƒ˜แƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ“แƒ”แƒก แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“.
  11. แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ. แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒจแƒ˜ แƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒขแƒแƒ แƒ”แƒ‘แƒ. แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒกแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฉแƒแƒกแƒแƒฌแƒ”แƒ แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ•แƒแƒขแƒแƒ แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ”แƒ แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ’แƒ–แƒ˜แƒ—. แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ‘แƒแƒซแƒ•แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ
    แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ›แƒ˜แƒฃแƒฌแƒ•แƒ“แƒแƒ›แƒ”แƒšแƒ˜แƒ.

แƒœแƒแƒ™แƒšแƒแƒ•แƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ "แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜" แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒ แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ›แƒแƒ”แƒ แƒ’แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒแƒก. แƒแƒฅ แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒ—แƒ˜ แƒ›แƒฎแƒแƒ แƒ”:

  1. แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ˜แƒงแƒแƒก แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ“แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ–แƒแƒ›แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒแƒ•แƒšแƒ˜แƒ—. แƒ”แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒฃแƒคแƒ แƒ แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒก. แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ แƒ“แƒ แƒฎแƒ”แƒšแƒแƒฎแƒแƒšแƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒแƒช แƒ“แƒ แƒขแƒ•แƒ˜แƒ แƒ—แƒ˜แƒช.
  2. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒชแƒ˜แƒ. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ แƒแƒ˜แƒ›แƒ” แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒก แƒ›แƒ˜แƒ”แƒ , แƒ”แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒแƒก (แƒ แƒแƒช, แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ•แƒ”แƒ  แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ“แƒ”แƒก). แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒซแƒแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒก แƒแƒ› แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒก build แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜.
  3. แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜. แƒ“แƒฆแƒ”แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฃแƒแƒ›แƒ แƒแƒ•แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒงแƒ แƒ“แƒœแƒแƒ‘แƒ แƒขแƒ”แƒฅแƒกแƒขแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒš แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก. แฒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜
    แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒกแƒแƒก.
  4. แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒแƒ–แƒ แƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ. แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ DevOps แƒ˜แƒชแƒœแƒแƒ‘แƒ”แƒœ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒก. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒก แƒ˜แƒ“แƒ”แƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฃแƒชแƒœแƒแƒฃแƒ แƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒก.
  5. แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒแƒ›แƒ“แƒ” แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜.

แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก:

  1. แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ˜แƒ›แƒžแƒšแƒ”แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ , แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒแƒ  แƒ“แƒแƒ’แƒ•แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒแƒ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒ›แƒžแƒšแƒ”แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒแƒจแƒ˜. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ“แƒ”แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— HList แƒแƒœ ADT-แƒ”แƒ‘แƒ˜ (แƒฅแƒ”แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜) แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒœแƒ˜แƒจแƒแƒœ-แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ Cake Pattern-แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“.
  2. แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ•แƒแƒฌแƒแƒ“แƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฅแƒ•แƒแƒ‘แƒ˜แƒก แƒคแƒ˜แƒ แƒคแƒ˜แƒขแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜: (package, import, object แƒ“แƒ”แƒ™แƒšแƒแƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜;
    override def's แƒ˜แƒ› แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒแƒฅแƒ•แƒ— แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜). แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒ’แƒแƒ“แƒแƒ˜แƒญแƒ แƒแƒก DSL-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.
  3. แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ  แƒ แƒ”แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก.

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒแƒ› แƒžแƒแƒกแƒขแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ˜แƒ“แƒ”แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒก แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒฌแƒงแƒแƒ แƒแƒก แƒ™แƒแƒ“แƒจแƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒ’แƒ–แƒ˜แƒ—. แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช xml- แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒขแƒ”แƒฅแƒกแƒขแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ Scala-แƒจแƒ˜, แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒ—แƒแƒ แƒ’แƒ›แƒœแƒแƒก แƒกแƒฎแƒ•แƒ แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒ“ แƒ”แƒœแƒ”แƒ‘แƒ–แƒ” (แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Kotlin, C#, Swift แƒ“แƒ แƒ.แƒจ.). แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒชแƒแƒ“แƒ แƒ”แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒแƒฎแƒแƒš แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜ แƒ“แƒ, แƒ—แƒฃ แƒ˜แƒก แƒ™แƒแƒ แƒ’แƒแƒ“ แƒแƒ  แƒฏแƒ“แƒ”แƒ‘แƒ, แƒ’แƒแƒ“แƒแƒ”แƒ แƒ—แƒ แƒซแƒ•แƒ”แƒšแƒ›แƒแƒ“แƒฃแƒ  แƒ’แƒ–แƒแƒ–แƒ”.

แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒก. แƒแƒ›แƒ˜แƒก แƒกแƒแƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒ˜แƒก แƒ’แƒ•แƒžแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ—แƒแƒœแƒแƒ‘แƒ แƒแƒ“ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ›แƒขแƒ™แƒ˜แƒชแƒ” แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒแƒก.

แƒ”แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ•แƒ“แƒ”แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ˜แƒ—:

  1. แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒ›แƒแƒ™แƒ แƒแƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ•แƒแƒšแƒ˜แƒ“แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒ แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ‘แƒ˜แƒ–แƒœแƒ”แƒก-แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜.
  2. DSL แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก, แƒ แƒแƒ—แƒ แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ˜แƒœแƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒ–แƒ˜แƒ—.
  3. แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒ แƒ”แƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ แƒ”แƒ’แƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒ•แƒกแƒฃแƒ แƒก (1) แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ›แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒœ แƒแƒ“แƒœแƒแƒ• แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ; (2) แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“.

แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ

แƒ›แƒ˜แƒœแƒ“แƒ แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ แƒ’แƒแƒ“แƒแƒ•แƒฃแƒฎแƒแƒ“แƒ แƒแƒœแƒ“แƒ แƒ”แƒ˜ แƒกแƒแƒฅแƒกแƒแƒœแƒแƒ•แƒก, แƒžแƒแƒ•แƒ”แƒš แƒžแƒแƒžแƒแƒ•แƒก, แƒแƒœแƒขแƒแƒœ แƒœแƒ”แƒฐแƒแƒ”แƒ•แƒก แƒแƒ› แƒžแƒแƒกแƒขแƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ” แƒ˜แƒœแƒกแƒžแƒ˜แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒฎแƒ›แƒแƒฃแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒช แƒ“แƒแƒ›แƒ”แƒฎแƒ›แƒแƒ แƒ แƒฃแƒคแƒ แƒ แƒœแƒแƒ—แƒšแƒแƒ“ แƒ’แƒแƒ›แƒ”แƒฎแƒกแƒœแƒ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com