āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻāĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻĒā§āĻ°āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻžāĻˇāĻžāĻ¯āĻŧ (Scala) āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻĒā§āĻ¸ā§āĻāĻāĻŋ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĻāĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°ā§āĨ¤
āĻā§āĻŽāĻŋāĻāĻž
āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¯ā§āĻā§āĻ¯ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋāĻ° āĻ āĻ°ā§āĻĨ āĻšāĻ˛ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄ āĻ¸āĻ āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ DevOps āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ (āĻā§āĻ°āĻžāĻĢāĻ°ā§āĻŽ, āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻŦāĻž āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§) āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ (āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ)āĨ¤ āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻšāĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻ¨ā§āĻĄ āĻ āĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻā§ (āĻāĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻš)āĨ¤ āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻ āĻ¸āĻā§āĻāĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻšāĻŦā§āĨ¤ JVM āĻŦāĻŋāĻļā§āĻŦā§, āĻāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻšāĻ˛ āĻ¯ā§ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻāĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻ°ā§āĻŦāĻ¤ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻāĨ¤
āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋ? āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻā§āĻ¸ā§āĻāĻŋāĻ āĻ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻāĻ¨āĻŋāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻā§āĨ¤ (āĻāĻŽāĻžāĻĻā§āĻ° āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻā§āĻ¸āĻā§āĻ°āĻžāĻĒā§āĻ˛ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻŦāĻļā§āĻ¯āĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻŦāĻ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻāĻāĻāĻŋ āĻ āĻāĻŋāĻ¨ā§āĻ¨ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤)
āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻ°ā§āĻŦāĻ¤ā§āĻ° āĻāĻāĻ āĻā§āĻ˛āĻžāĻ¸āĻĒāĻĨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻ¸āĻšāĻ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻāĻāĻ āĻā§āĻ˛āĻžāĻ¸āĻĒāĻĨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ (āĻ¯āĻĻāĻŋāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸āĻĒāĻĨā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¨ā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻāĻŦ, āĻāĻāĻŋ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻāĻŦāĻ āĻāĻā§āĻāĻ°āĻŖ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ¯āĻŧ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¯ā§āĻ āĻāĻ°ā§āĨ¤) āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§, āĻāĻŽāĻ°āĻž āĻ§āĻ°ā§ āĻ¨āĻŋāĻā§āĻāĻŋ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄ āĻāĻāĻ āĻā§āĻ˛āĻžāĻ¸āĻĒāĻĨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĨ¤
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻŦāĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ§āĻžāĻĒ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻžāĻ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¨āĻŋāĻā§āĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻ°āĻžāĻā§āĻ¨āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŽā§āĻŦāĻ°āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ, āĻ¤āĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻļāĻžāĻāĻž āĻāĻŦāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻāĻāĻŋ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ˛ā§āĻŦā§āĻ˛ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻļāĻžāĻāĻžāĻ° āĻ¨āĻžāĻŽ)āĨ¤ āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻ¸āĻ āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§ āĻ
āĻ¨āĻ¨ā§āĻ¯āĻāĻžāĻŦā§ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¨ā§āĻĄ, āĻĒā§āĻ°ā§āĻ, āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻŦāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻŽāĻŋāĻļā§āĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻ
āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻŦ āĻ¯ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻļāĻžāĻāĻž āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨ā§āĻĻā§ (1.2.3) āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻĨāĻ āĻāĻ°āĻž āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻāĻ§ā§āĻ¨āĻŋāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻā§āĻŦ āĻāĻŽāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻ¤āĻžāĻ°āĻž āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ° āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž (āĻ¤āĻžāĻ
āĻāĻ āĻĒā§āĻ¸ā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻ āĻ¨ā§āĻŦā§āĻˇāĻŖ āĻāĻ°āĻŦāĨ¤
āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
āĻāĻ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤ āĻĻā§āĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻ¯āĻŧ - āĻāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻŦāĻ āĻāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĨ¤ āĻāĻ āĻĻā§āĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§, āĻĻā§āĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒā§, āĻāĻāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻāĻ āĻ¨ā§āĻĄā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤, āĻ āĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻ˛ā§āĻĒā§ - āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¨ā§āĻĄā§āĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¨ā§āĻĄ āĻĨāĻžāĻā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻŋāĻā§ āĻ§āĻ°āĻŖā§āĻ° āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨ā§āĻĄ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ NodeId
:
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]]
āĻĒāĻ°āĻŋāĻŽāĻžāĻ°ā§āĻāĻŋāĻ¤ āĻĒā§āĻ°āĻāĻžāĻ°
āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻĻā§āĻā§āĻ¨
HTTP (REST) ââāĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ° āĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻĒāĻĨā§āĻ°āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§:
type UrlPathPrefix = Refined[String, MatchesRegex[W.`"[a-zA-Z_0-9/]*"`.T]]
case class PortWithPrefix[Protocol](portNumber: PortNumber, pathPrefix: UrlPathPrefix)
āĻĢā§āĻ¯āĻžāĻ¨ā§āĻāĻŽ āĻĒā§āĻ°āĻāĻžāĻ°
āĻāĻŽā§āĻĒāĻžāĻāĻ˛ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻžāĻāĻĒ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻ¯āĻž āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤āĻāĻŋ āĻāĻ āĻāĻžāĻ°āĻŖā§ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻ¨āĻž, āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ°āĻā§ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻĒāĻ¯ā§āĻā§āĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻŦ āĻ¨āĻžāĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ Json āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻ¸āĻš REST API:
sealed trait JsonHttpRestProtocol[RequestMessage, ResponseMessage]
āĻ¯ā§āĻāĻžāĻ¨ā§ RequestMessage
- āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ§āĻ°āĻ¨, ResponseMessage
- āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻāĻžāĻ°āĨ¤
āĻ
āĻŦāĻļā§āĻ¯āĻ, āĻāĻŽāĻ°āĻž āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ° āĻ¯āĻĨāĻžāĻ°ā§āĻĨāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻ°āĻ˛ā§āĻā§āĻ¤ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ:
sealed trait SimpleHttpGetRest[RequestMessage, ResponseMessage]
āĻāĻāĻžāĻ¨ā§ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ url-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻ˛ HTTP āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻŽā§āĻ˛ āĻ āĻāĻļā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻāĨ¤
āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¨āĻžāĻŽ, āĻĒā§āĻ°ā§āĻ āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ¸ā§āĻāĻžāĻ˛āĻžāĻ¯āĻŧ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, HList
-s, āĻŦā§āĻāĻāĻžāĻŖāĻŋāĻ¤āĻŋāĻ āĻĄā§āĻāĻž āĻĒā§āĻ°āĻāĻžāĻ°)āĨ¤ āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§, āĻāĻŽāĻ°āĻž āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ āĻāĻŦāĻ āĻŽāĻĄāĻŋāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°āĻŦ trait
's (āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻā§āĻŦāĻ˛ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĨ¤)
āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ°ā§āĻāĻā§āĻ˛āĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ EndPoint
āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ°:
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)
}
āĻāĻāĻāĻŋ āĻāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻž āĻĻāĻ°āĻāĻžāĻ° āĻ¤āĻž āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ° āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ¤ āĻ¯ā§ āĻĒā§āĻ°ā§āĻāĻāĻŋ āĻāĻā§ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒā§āĻ°ā§āĻ āĻāĻ˛ā§āĻ˛ā§āĻ āĻ¨āĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻžāĻ°āĻŖ... āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ (āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ)āĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻāĻŋ āĻāĻāĻā§āĻ°āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ°āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ° āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§āĻāĻŋ, āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¨āĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŽāĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻŋ:
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
â āĻāĻāĻāĻŋ āĻāĻĢā§āĻā§āĻ āĻāĻžāĻāĻĒ āĻā§āĻ˛āĻžāĻ¸ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻĢā§āĻā§āĻ (āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻŽā§āĻ¨āĻžāĻĄ) āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻžāĻ˛ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧMonad
/ConcurrentEffect
.
āĻāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŽāĻ°āĻž āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¯āĻž āĻāĻŋāĻā§āĻ āĻāĻ°ā§ āĻ¨āĻž:
trait ZeroServiceImpl[F[_]] extends ServiceImpl[F] {
type Config <: Any
def resource(...): ResourceReader[F, Config, Unit] =
Reader(_ => Resource.pure[F, Unit](()))
}
(āĻ¸ā§āĻŽāĻŋ.
и
āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¯āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻāĻ¨ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ):
object SingleNodeImpl extends ZeroServiceImpl[IO]
with EchoServiceService
with EchoClientService
with FiniteDurationLifecycleServiceImpl
{
type Config = EchoConfig[String] with EchoClientConfig[String] with FiniteDurationLifecycleConfig
}
āĻĻāĻ¯āĻŧāĻž āĻāĻ°ā§ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻ¨ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻ āĻŋāĻ āĻ§āĻ°āĻ¨āĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻāĻŋāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛ā§ āĻ¯āĻžāĻ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻ¨ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻšāĻŦā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻŦ āĻ¨āĻž āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĄā§āĻāĻž āĻ¸āĻš āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ§āĻ°āĻŖā§āĻ° āĻāĻŋāĻā§ āĻ āĻŦāĻā§āĻā§āĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŋāĨ¤
āĻšā§āĻ¸ā§āĻ āĻ¨ā§āĻŽ āĻ°ā§āĻā§āĻ˛āĻŋāĻāĻļāĻ¨
āĻāĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻšā§āĻ¸ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻāĻ¸āĻ˛ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ˇ āĻāĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¯ā§ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻāĻŋ āĻŦāĻžāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻā§āĻ¯āĻŧā§ āĻĒāĻ°ā§ āĻāĻžāĻ¨āĻž āĻ¯āĻžāĻŦā§āĨ¤ āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĻāĻ°āĻāĻžāĻ° āĻ¯āĻž āĻāĻāĻāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¨ā§āĻĄ āĻāĻāĻĄāĻŋ āĻŽā§āĻ¯āĻžāĻĒ āĻāĻ°ā§:
case class NodeAddress[NodeId](host: Uri.Host)
trait AddressResolver[F[_]] {
def resolve[NodeId](nodeId: NodeId): F[NodeAddress[NodeId]]
}
āĻāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧ āĻāĻā§:
- āĻ¯āĻĻāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻāĻžāĻ˛āĻž āĻā§āĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ
āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻžāĻ˛āĻžāĻŦā§āĨ¤
āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻāĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻšāĻŦā§ āĻāĻŦāĻ āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§āĻĄā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§Map[NodeId, NodeAddress]
. - āĻāĻŋāĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¨ā§āĻĄ āĻļā§āĻ°ā§ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§āĻ āĻĒā§āĻ°āĻā§āĻ¤ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻāĻžāĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ "āĻāĻŦāĻŋāĻˇā§āĻāĻžāĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž" āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯āĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨ā§āĻĄā§āĻ° āĻāĻā§ āĻāĻ˛ā§ āĻāĻŦāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄ āĻāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨ā§āĻĄā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻŦā§āĨ¤ - āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ
/etc/hosts
, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°ā§āĻŦāĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšā§āĻ¸ā§āĻāĻ¨āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ (āĻ¯ā§āĻŽāĻ¨my-project-main-node
иecho-backend
) āĻāĻŦāĻ āĻā§āĻŦāĻ˛ āĻāĻ āĻ¨āĻžāĻŽāĻā§āĻ˛āĻŋ āĻ˛āĻŋāĻā§āĻ āĻāĻ°ā§āĻ¨
āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ¸āĻšāĨ¤
āĻāĻ āĻĒā§āĻ¸ā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻŽāĻžāĻŽāĻ˛āĻžāĻā§āĻ˛āĻŋāĻā§ āĻāĻ°āĻ āĻŦāĻŋāĻļāĻĻā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŦ āĻ¨āĻžāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯
āĻāĻāĻāĻŋ āĻā§āĻ˛āĻ¨āĻž āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄā§āĻ° āĻāĻāĻ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĨāĻžāĻāĻŦā§ - 127.0.0.1
.
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŋ:
- āĻāĻāĻāĻŋ āĻ¨ā§āĻĄā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĨ¤
- āĻāĻŦāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¨ā§āĻĄā§ āĻāĻā§ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻāĻŦāĻ āĻāĻā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻšā§āĻ¸ā§āĻ āĻāĻ°āĻžāĨ¤
āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
āĻāĻāĻ āĻ¨ā§āĻĄ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
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
āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§āĻ¨āĨ¤ (Ctrl-CāĻ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻŽā§āĻā§āĻ¤ āĻāĻ°ā§āĨ¤)
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ā§āĻ° āĻāĻāĻ āĻ¸ā§āĻ āĻ¸āĻŽāĻ¨ā§āĻŦāĻŋāĻ¤ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻĻā§āĻāĻŋ āĻ¨ā§āĻĄ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
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"
}
āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ ! āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋ āĻā§āĻāĻžāĻŦā§ āĻ˛āĻŋāĻā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§ āĻ āĻ¨ā§āĻ¯ āĻ¨ā§āĻĄā§āĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻŋāĨ¤ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻāĻžāĻāĻĒ āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻžāĻ°āĻŖ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻāĻžāĻāĻĒ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻšāĻ˛ā§, āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ¸āĻ āĻŋāĻ āĻāĻžāĻ°ā§āĻā§āĻ āĻ¨ā§āĻĄ āĻāĻāĻĄāĻŋ āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŦā§āĨ¤ āĻāĻ āĻ¸ā§āĻāĻŋāĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ, āĻāĻŽāĻ°āĻž āĻ āĻŋāĻ āĻāĻāĻŦāĻžāĻ° āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻ āĻŋāĻ āĻĒā§āĻ°ā§āĻ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻžāĻ° āĻ¨āĻŋāĻļā§āĻāĻ¯āĻŧāĻ¤āĻž āĻĻāĻŋāĻāĨ¤
āĻĻā§āĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¨ā§āĻĄ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨
āĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻšāĻ˛ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻ¨ āĻĻā§āĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°ā§:
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
'āĻāĻŽ, āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¨ā§āĻĄ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻĒāĻ°ā§ āĻļā§āĻˇ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¸ā§āĻŽāĻŋ.
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
āĻāĻ¸ā§āĻ¨ āĻĻā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§āĨ¤
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻŦāĻžāĻāĻŋ āĻā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ (.jar) āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§ āĻ°āĻžāĻāĻž āĻ āĻ°ā§āĻĨāĻĒā§āĻ°ā§āĻŖ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§āĨ¤ āĻāĻ° āĻāĻžāĻ°āĻŖ āĻšāĻ˛ āĻāĻāĻ āĻā§āĻĄā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŦāĻžāĻ°, āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻļāĻžāĻāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻļāĻŋāĻ˛ā§āĻĒāĻāĻ°ā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¯āĻāĻ¨āĻ āĻāĻŽāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸ā§āĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ āĻ¤āĻāĻ¨ āĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻāĻŋāĻ°āĻ¤āĻ°ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¯ā§āĻā§āĻ¨ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻāĻāĻŋ āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ āĻ¤āĻžāĻ, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻāĻŋ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻā§āĻŖāĻŽāĻžāĻ¨ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤āĻāĻ°āĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻā§āĻāĻžāĻĻāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻŦā§:
āĻŦāĻžāĻ āĻā§āĻ°ā§āĻ¯āĻžāĻāĻžāĻ°ā§ āĻāĻŋāĻāĻŋāĻ -> PR -> āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž -> āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻ āĻļāĻžāĻāĻžāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°ā§āĻ¨ ->
āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ -> āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž
āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§āĻ˛āĻŋ āĻšāĻ˛:
-
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄ āĻā§āĻĄāĻŧā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻšāĻŦā§āĨ¤ āĻāĻ āĻāĻžāĻ°āĻŖā§ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄ āĻāĻāĻ āĻāĻ¤ā§āĻ¸ āĻĨā§āĻā§ āĻāĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻžāĻ¯āĻŧāĨ¤
-
āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¨ā§āĻĄā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ¯ā§āĻā§āĻ¤āĨ¤ āĻ āĻ¤āĻāĻŦ, "āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĄā§āĻ°āĻŋāĻĢāĻ" āĻ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯āĨ¤
-
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻāĻ°āĻ āĻāĻ āĻŋāĻ¨ āĻšāĻ¯āĻŧā§ āĻĒāĻĄāĻŧā§āĨ¤
-
āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻŦā§ āĻāĻŦāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž āĻ¸āĻžāĻĒā§āĻā§āĻˇā§ āĻšāĻŦā§āĨ¤
āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻ° āĻāĻŋ āĻāĻ˛āĻžāĻĻāĻž āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻĻāĻ°āĻāĻžāĻ°? āĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻāĻŦā§āĻĻāĻ¨āĻļā§āĻ˛ āĻ¤āĻĨā§āĻ¯ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤ āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ°ā§āĻĨāĻĒā§āĻ°ā§āĻŖ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋāĻā§ āĻĻā§āĻāĻŋ āĻ āĻāĻļā§ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨âāĻāĻāĻāĻŋ āĻ¸āĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨āĻāĻžāĻŦā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§āĨ¤ āĻāĻāĻŋ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻŦā§āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŽāĻžāĻ¨ āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§ āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ āĻŦāĻŋāĻā§āĻā§āĻĻ āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°āĻž āĻ¸āĻšāĻāĨ¤
āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻŦā§āĻāĻŋāĻ¤ā§āĻ°
āĻāĻ¸ā§āĻ¨ āĻāĻŋāĻā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦāĻŋāĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ:
- āĻāĻžāĻ°ā§āĻā§āĻ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛āĨ¤
- āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻā§āĻ¤ āĻā§-āĻŽā§āĻ˛ā§āĻ¯ā§āĻ° āĻĻā§āĻāĻžāĻ¨ (
etcd
/zookeeper
). - āĻĒā§āĻ°āĻ¸ā§āĻ¸ āĻāĻŽā§āĻĒā§āĻ¨ā§āĻ¨ā§āĻ āĻ¯ā§āĻā§āĻ˛ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¸ āĻ°āĻŋāĻ¸ā§āĻāĻžāĻ°ā§āĻ āĻ¨āĻž āĻāĻ°ā§āĻ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°/āĻ°āĻŋāĻ¸ā§āĻāĻžāĻ°ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
- āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻāĻŦāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĨ¤
āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨āĻŋāĻ¸ā§āĻā§āĻ°ā§āĻāĻ° āĻ°āĻŋāĻŽā§āĻ āĻ¨ā§āĻĄā§ āĻ˛āĻ āĻāĻ¨ āĻāĻ°āĻ¤ā§, āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻŦāĻĄāĻŧ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯, āĻ¤āĻŦā§, āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻ¨āĻžāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ°āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻā§āĻ¨ āĻāĻŋāĻšā§āĻ¨ āĻ°ā§āĻā§ āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž. āĻ āĻŋāĻ āĻā§ āĻāĻŦāĻ āĻāĻŋ āĻāĻžāĻ°āĻŖā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻāĻ°ā§āĻā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻž āĻāĻ āĻŋāĻ¨āĨ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž. āĻ¯āĻĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
(āĻāĻāĻžāĻ āĻ˛āĻā§āĻˇ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ˛ā§ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž āĻŦāĻ¨ā§āĻ§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻ˛āĻŋāĻĄā§āĻāĻ° āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻĨā§āĻˇā§āĻ āĻšāĻŦā§ āĻ¯āĻž āĻāĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻĒā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤ Config
, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§ āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻĒāĻžāĻ ā§āĻ¯ āĻĢāĻžāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻŋāĻā§āĻāĻž āĻāĻŽ, āĻāĻžāĻ°āĻŖ āĻĒāĻžāĻ ā§āĻ¯ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻā§āĻĄ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤)
āĻāĻāĻāĻŋ āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻā§āĻ¤ āĻā§-āĻŽāĻžāĻ¨ā§āĻ° āĻĻā§āĻāĻžāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻŽā§āĻāĻž āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¤ā§ āĻšāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻāĻŋ āĻāĻŦāĻ āĻāĻŋ āĻļā§āĻ§ā§ āĻĄā§āĻāĻžāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻā§ C => A => B
, āĻāĻŦāĻ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ C
āĻāĻĻāĻžāĻāĻŋā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨, āĻāĻŦāĻ āĻĄā§āĻāĻž A
- āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻāĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻ°āĻž āĻ¤āĻž āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ C
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ, āĻāĻŦāĻ A
- āĻĄā§āĻāĻžāĨ¤ āĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¯ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻĄā§āĻāĻž āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻ¯ā§ āĻ¤āĻžāĻ°āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻĄā§āĻāĻžāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻāĻŽ āĻāĻ¨ āĻāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§ˇ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻĄā§āĻāĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻāĻŋ āĻā§āĻ¸ āĻĨā§āĻā§ āĻāĻ¸ā§ (āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§), āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ
āĻ¨ā§āĻ¯ (āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§)āĨ¤
āĻ¯āĻĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻ¨āĻž āĻāĻ°ā§ āĻāĻĻāĻžāĻāĻŋā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ° āĻĻāĻŋāĻā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻžāĻ°āĻŖ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¨āĻāĻāĻžāĻŦā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āĻ˛ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ āĻ¤āĻāĻŦ, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻāĻŽāĻžāĻ¨ā§āĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŽāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻž āĻŦā§āĻ§āĻāĻŽā§āĻ¯ āĻšāĻ¯āĻŧ (āĻŦāĻž āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻ¨āĻž)āĨ¤
āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§, āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻŦāĻ āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻāĻ°āĻŦāĨ¤ āĻ¯āĻĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¯ā§āĻā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋāĻā§ āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻŦāĻ˛āĻŦāĨ¤ āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻŦāĻ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻĄāĻžāĻ¯āĻŧāĻ¨āĻžāĻŽāĻŋāĻ āĻ°āĻŋāĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻ°āĻŽā§āĻ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻ°ā§āĻĒ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻ āĻāĻļāĻā§āĻ˛āĻŋāĻā§ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¸āĻš āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ (āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻ¤ā§, āĻ°āĻŋāĻ¯āĻŧā§āĻ˛-āĻāĻžāĻāĻŽ āĻ°āĻŋāĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻĄāĻŧāĻžāĻ¨ā§āĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻā§āĻā§, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ¯āĻŧ, āĻĒā§āĻ°āĻ¸ā§āĻ¸ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ OS āĻā§āĻˇāĻŽāĻ¤āĻžāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻžāĻ˛āĨ¤)
āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻĻāĻŋāĻ āĻ¯āĻž āĻ˛ā§āĻā§āĻĻā§āĻ° āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻĒā§āĻ¨āĻ°ā§āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§ āĻ¤āĻž āĻšāĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻĒāĻĄā§āĻ (āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ) āĻāĻ° āĻĒāĻ°ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻ°āĻŋāĻŦā§āĻ āĻšāĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻā§āĨ¤ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ, āĻ¨āĻ¤ā§āĻ¨ āĻŽāĻžāĻ¨ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¤ā§āĻŦā§āĻ°āĻ¤āĻžāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŋāĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¯āĻāĻ¨ āĻ˛ā§āĻĄ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ°āĻŋāĻŦā§āĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨, āĻāĻĒāĻ¨āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻ¸ā§āĻ¨ āĻāĻāĻ¨ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻŦāĻž āĻŦāĻžāĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ¸āĻŽāĻžāĻŦā§āĻļā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻ āĻŋāĻāĻ¤āĻž āĻ¯āĻžāĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸ā§āĻ¯ā§āĻ āĻāĻŋāĻ˛āĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻĨāĻžāĻāĻ˛ā§, āĻā§ āĻāĻ āĻĢāĻžāĻāĻ˛ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻā§ āĻāĻŦāĻ āĻā§āĻ¨ āĻ¤āĻž āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻāĻ°āĻž āĻāĻ āĻŋāĻ¨āĨ¤ āĻāĻāĻž āĻāĻ¤āĻāĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ? āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻ¤ā§, āĻ āĻ¨ā§āĻ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻŦāĻ āĻāĻā§āĻ-āĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻāĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤
āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻŋ āĻāĻāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻ¤ā§ āĻā§ āĻā§ āĻŽāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§, āĻā§ āĻĢāĻžāĻāĻļāĻ¨ āĻ¸āĻā§āĻˇāĻŽ/āĻ āĻā§āĻˇāĻŽ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¯ā§ āĻā§āĻ¨āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§ āĻĻāĻžāĻ¯āĻŧā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻā§āĻāĻžāĻ¤ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻĒā§āĻ°ā§ āĻāĻŦāĻ āĻāĻ¨āĻ¸
āĻāĻŽāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋāĻ¤ā§ āĻĨāĻžāĻāĻ¤ā§ āĻāĻžāĻāĨ¤
āĻāĻĒāĻāĻžāĻ°āĻŋāĻ¤āĻž
āĻ¨ā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ°āĻ¯āĻŧā§āĻā§:
- āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻā§āĻāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯ā§ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻšāĻ¤ā§ āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻ āĻŋāĻāĨ¤ - āĻ¸āĻŽā§āĻĻā§āĻ§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻžāĻˇāĻž. āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤, āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĨ¤ Scala āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻˇāĻž āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¸ā§āĻ¤ā§āĻ¤ āĻĒāĻ°āĻŋāĻ¸āĻ° āĻāĻĒāĻ˛āĻŦā§āĻ§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯, āĻā§āĻ°ā§āĻĒ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§ āĻ āĻŦāĻā§āĻā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻ¨āĻā§āĻ˛ā§āĻ¸āĻŋāĻ āĻ¸ā§āĻā§āĻĒā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻŦāĻžāĻ° (DRY) āĻā§āĻˇāĻŋāĻ¤ āĻāĻžāĻ˛āĻā§āĻ˛āĻŋ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ¯ā§āĻā§āĻ¨ā§ āĻā§āĻ˛āĻžāĻ¸ āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ (Seq
,Map
, āĻāĻžāĻ¸ā§āĻāĻŽ āĻā§āĻ˛āĻžāĻ¸)āĨ¤ - āĻĄāĻŋāĻāĻ¸āĻāĻ˛āĨ¤ āĻ¸ā§āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻāĻžāĻˇāĻž āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻāĻāĻŋ DSL āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤ āĻāĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ˛āĻā§āĻˇā§āĻ¯ āĻā§āĻˇā§āĻ ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻžāĻˇāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ, āĻ¯āĻžāĻ¤ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻĄā§āĻŽā§āĻ¨ āĻŦāĻŋāĻļā§āĻˇāĻā§āĻāĻĻā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻžāĻ āĻ¯ā§āĻā§āĻ¯ āĻšāĻ¯āĻŧāĨ¤ āĻŦāĻŋāĻļā§āĻˇāĻā§āĻāĻ°āĻž, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
- āĻ¨ā§āĻĄā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ āĻāĻŖā§āĻĄāĻ¤āĻž āĻāĻŦāĻ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻŋāĨ¤ āĻāĻāĻāĻŋ āĻāĻāĻ āĻŦāĻŋāĻ¨ā§āĻĻā§āĻ¤ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻāĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽāĻžāĻ¨ āĻ āĻŋāĻ āĻāĻāĻŦāĻžāĻ° āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°ā§āĻ āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢā§āĻ¯āĻžāĻ¨ā§āĻāĻŽ āĻĒā§āĻ°āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§ āĻ¯ā§ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻ āĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻā§āĨ¤ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻĒāĻˇā§āĻ āĻŦāĻžāĻ§ā§āĻ¯āĻ¤āĻžāĻŽā§āĻ˛āĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻĨāĻžāĻāĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
- āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĨ¤ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦāĻŋāĻāĻžāĻļ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯āĻ āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻŽāĻžāĻ¨ āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤
- āĻ¯ā§āĻāĻĒāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻĒāĻĄā§āĻāĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒāĻ°ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
- āĻāĻŦā§āĻĻāĻ¨ āĻ¸āĻ°āĻ˛ā§āĻāĻ°āĻŖ. āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻā§āĻāĻŋāĻ āĻŦāĻž āĻā§āĻ˛ āĻŽāĻžāĻ¨ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°ā§āĨ¤ (āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻĒāĻ°āĻŋāĻ˛āĻā§āĻˇāĻŋāĻ¤ āĻāĻŋāĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻā§āĻ¤āĻ¨ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¯āĻž āĻŦā§āĻšāĻ¤ā§āĻ¤āĻ° āĻ§āĻ°āĻŖā§āĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻāĻā§āĻāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤) āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻŦā§āĻļ āĻ¸āĻšāĻ - āĻļā§āĻ§ā§ āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°ā§āĻ¨ āĻ āĻāĻļ āĻ āĻ¤āĻāĻŦ, āĻāĻĒāĻ¨āĻŋ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ āĻāĻļāĻā§āĻ˛āĻŋāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻā§ āĻ¸ā§āĻĨāĻāĻŋāĻ¤ āĻāĻ°ā§ āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻāĻāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧāĨ¤
- āĻ¯āĻžāĻāĻžāĻāĻā§āĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻ¯ āĻ¯ā§āĻā§āĻ¨ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻžāĻā§āĻ¯āĻā§ āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻāĻāĻāĻĒā§āĻāĻāĻŋ āĻĒāĻžāĻ āĻ¤āĻž āĻāĻāĻāĻŋ āĻ āĻ¨āĻ¨ā§āĻ¯ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻāĨ¤ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻĢāĻŋāĻ°ā§ āĻ¯ā§āĻ¤ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻŽāĻ¨āĻāĻŋ āĻāĻ āĻŦāĻāĻ° āĻāĻā§ āĻĨā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻ āĻŋāĻ āĻāĻāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤ āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻ°ā§āĻŦāĻžāĻāĻžāĻ¸ āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¯ā§āĻā§āĻ¯āĻ¤āĻž āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°ā§āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¸āĻāĻāĻ˛āĻ¨ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ¸ā§āĻĨāĻŋāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻžāĻ āĻā§āĻĒāĻžāĻĻāĻ¨ā§ āĻāĻāĻŋ āĻāĻžāĻ˛ āĻāĻ°āĻž āĻŦā§āĻļ āĻāĻ āĻŋāĻ¨āĨ¤
- āĻŽāĻĄā§āĻ˛āĻžāĻ°āĻŋāĻāĻŋāĨ¤ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻāĻžāĻ āĻžāĻŽā§āĻāĻŋ āĻŽāĻĄā§āĻ˛āĻžāĻ° āĻāĻŦāĻ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻŽā§āĻ°ā§āĻ¤āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻāĻ āĻ¨ā§āĻĄā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻāĻŋāĻ¤ā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻ¨ā§āĻĄā§ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋāĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
- āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ. āĻŽāĻ āĻ āĻŦāĻā§āĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻĨāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻāĨ¤
- āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻā§āĻ¸ā§āĻāĻŋāĻ. āĻ¸āĻŽāĻā§āĻ° āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻāĻžāĻ° āĻĢāĻ˛ā§ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻ āĻāĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻ āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻšāĻ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŋāĻā§ āĻ¨ā§āĻĄ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĨ¤
āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž
āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ¨āĻžāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¨ā§āĻā§ āĻāĻŋāĻā§ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻā§:
- āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĨ¤ āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ°āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻžāĻāĻĒāĻžāĻ¸ āĻāĻ°ā§ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻāĻ°āĻ āĻāĻ āĻŋāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻā§āĻŦ āĻ āĻ¨ā§āĻ¤āĻ¤, āĻ¸āĻāĻāĻ˛āĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻāĻāĻ¨āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻāĻāĻŋ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻāĻāĻŋ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻāĻ¯āĻŧāĻāĨ¤
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻāĻ¨ā§āĻŽāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§ āĻ¸āĻāĻšāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻā§āĻ˛āĻ¸āĨ¤ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻāĻŦāĻ āĻā§āĻļāĻ˛āĻā§āĻ˛āĻŋ āĻĒāĻžāĻ ā§āĻ¯ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§āĨ¤ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ/āĻā§āĻāĻ¨āĻŋāĻ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻžāĨ¤
- āĻĻā§āĻˇā§āĻāĻŋāĻāĻā§āĻāĻŋāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻāĻŦāĻ DevOps āĻĒāĻžāĻ ā§āĻ¯ āĻĢāĻžāĻāĻ˛ā§ āĻ āĻā§āĻ¯āĻ¸ā§āĻ¤āĨ¤ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻāĻŋāĻā§āĻāĻž āĻ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻāĻŦāĻ āĻ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻā§āĻ¯āĻžāĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻāĻāĻāĻŋ āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨. āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻāĻ°āĻžāĻŽāĻĻāĻžāĻ¯āĻŧāĻāĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ (CI/CD) āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻā§āĻŽā§āĻļāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻāĻāĻŋ āĻŦā§āĻļ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻšāĻŦā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻŦā§āĻāĻŋāĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§āĻ āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°āĻŋ āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ:
- āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻ
āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŋ āĻ¯āĻž āĻ¨ā§āĻĄ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻ
āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻ¤ā§āĻ¯āĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻ°āĻ āĻāĻ ā§āĻ° āĻ§āĻ°āĻ¨ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ,
HList
āĻŦāĻž āĻŦā§āĻāĻāĻžāĻŖāĻŋāĻ¤āĻŋāĻ āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ (āĻā§āĻ¸ āĻā§āĻ˛āĻžāĻ¸) āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°āĻ¤ā§. - āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§ āĻāĻŽāĻ¨ āĻ˛āĻžāĻāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ: (
package
,import
,āĻŦāĻ¸ā§āĻ¤ā§ āĻā§āĻˇāĻŖāĻž;override def
āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŽāĻžāĻ¨ āĻāĻā§ āĻāĻŽāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ 's)āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¨āĻŋāĻā§āĻ° āĻĄāĻŋāĻāĻ¸āĻāĻ˛ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āĻāĻĄāĻŧāĻžāĻ¨ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, XML) āĻĢāĻžāĻāĻ˛ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻāĻ°ā§āĻĒ āĻāĻ°ā§āĨ¤ - āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§, āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ°ā§āĻĒ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻĒā§āĻ¨āĻ°ā§āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻāĻŋ āĻ¨āĻžāĨ¤
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻ āĻĒā§āĻ¸ā§āĻā§, āĻāĻŽāĻ°āĻž āĻ¸ā§āĻāĻžāĻ˛āĻž āĻāĻžāĻāĻĒ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¤ āĻā§āĻˇāĻŽāĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻ āĻ¨ā§āĻŦā§āĻˇāĻŖ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ xml āĻŦāĻž āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻĒā§āĻ°āĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻāĻ āĻ§āĻžāĻ°āĻŖāĻžāĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻžāĻˇāĻžāĻ¯āĻŧ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻ¯ā§āĻŽāĻ¨ āĻā§āĻāĻ˛āĻŋāĻ¨, āĻ¸āĻŋ#, āĻ¸ā§āĻāĻĢāĻ, ...)āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋāĻ¤ā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻŦāĻ, āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻāĻžāĻ āĻ¨āĻž āĻāĻ°ā§, āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ āĻāĻļāĻā§āĻ˛āĻŋ āĻ¯ā§āĻ āĻāĻ°ā§ āĻĒāĻžāĻ ā§āĻ¯ āĻĢāĻžāĻāĻ˛ā§ āĻ¯āĻžāĻ¨āĨ¤
āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻāĻāĻāĻŋ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧā§, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻā§āĻ āĻā§āĻŖāĻŽāĻžāĻ¨ āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¯ā§āĻā§āĻ¯āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻŦāĻŋāĻŦā§āĻāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
- āĻāĻĒāĻ¨āĻŋ āĻāĻŽā§āĻĒāĻžāĻāĻ˛-āĻāĻžāĻāĻŽ āĻā§āĻ āĻāĻ°āĻ¤ā§ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻāĻŽāĻ¨āĻāĻžāĻŦā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ DSL āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻļā§āĻˇ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻžāĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯āĨ¤
- āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧ āĻ¸āĻš āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻ¸āĻŽā§āĻĒāĻĻ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§ āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¯ā§ (1) āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨ā§āĻĄ āĻāĻāĻāĻŋ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻžāĻ¯āĻŧ; (2) āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¨ā§āĻĄ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ¯āĻŧā§āĻā§āĻ¨āĨ¤
āĻ¸ā§āĻŦā§āĻā§āĻ¤āĻŋ
āĻāĻ¸āĻĄāĻŧāĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻ āĻ¨āĻŽā§āĻ˛āĻ āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻŋ āĻāĻ¨ā§āĻĻā§āĻ°ā§āĻ āĻ¸āĻžāĻāĻ¸ā§āĻ¨āĻ, āĻĒāĻžāĻā§āĻ˛ āĻĒāĻĒāĻ āĻāĻŦāĻ āĻāĻ¨ā§āĻ¤āĻ¨ āĻ¨ā§āĻāĻžāĻ¯āĻŧā§āĻāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻāĻžāĻ¨āĻžāĻ¤ā§ āĻāĻžāĻāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com