āĻāĻ āĻĒā§āĻ¸ā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻā§āĻĄ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĄāĻŋāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻĒāĻžāĻ¯āĻŧ āĻļā§āĻ¯āĻŧāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸ā§āĻāĻžāĻ˛āĻž āĻāĻžāĻˇāĻžāĻ¯āĻŧ āĻāĻžāĻāĻĒ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§. āĻ¸āĻžāĻ°ā§āĻŦāĻŋāĻ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻāĻžāĻŦ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻ¸āĻš āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĻāĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
(
āĻā§āĻŽāĻŋāĻāĻž
āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄā§ āĻ¸āĻ āĻŋāĻ āĻāĻŦāĻ āĻ¸ā§āĻ¸āĻāĻāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĒāĻžāĻ ā§āĻ¯ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž (āĻā§āĻ°āĻžāĻĢāĻ°ā§āĻŽ, āĻāĻ¤ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¯ āĻŦāĻž āĻāĻāĻ āĻ°āĻāĻŽ) āĻāĻŦāĻ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ (āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ â āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨ā§āĻĄ/āĻ°ā§āĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦā§āĻĻāĻŋāĻ¤) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĨ¤ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻāĻāĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ (āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻāĻŽāĻ°āĻž āĻ āĻ¸āĻā§āĻāĻ¤āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻāĻŦ āĻāĻ°āĻŦ)āĨ¤ JVM āĻāĻ¯āĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄā§ āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻ˛ āĻ¯ā§ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻŽā§āĻ¸ā§āĻāĻŋāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻ¨ā§āĻĄā§āĻ° āĻāĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋ? āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ¯āĻŧ āĻāĻ¸āĻžāĻ° āĻāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ¨āĻŋāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻā§āĻ¸āĻā§āĻ°āĻžāĻĒā§āĻ˛ā§āĻ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ āĻ āĻāĻŋāĻ¨ā§āĻ¨ āĻ°āĻžāĻāĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄā§ āĻāĻāĻ āĻā§āĻ˛āĻžāĻ¸āĻĒāĻžāĻĨ āĻĨāĻžāĻāĻž āĻ āĻ¨ā§āĻ āĻ¸āĻšāĻāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻļā§āĻ§ā§ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ āĻāĻāĻ āĻā§āĻ˛āĻžāĻ¸āĻĒāĻžāĻĨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ (āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸āĻĒāĻžāĻĨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻāĻ°āĻ āĻāĻ āĻŋāĻ¨āĨ¤) āĻ¤āĻžāĻ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻšāĻ āĻ°āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ āĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¸āĻĒāĻžāĻĨ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŦāĨ¤
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻāĻļāĻŋāĻ¤ āĻšāĻ¤ā§ āĻĨāĻžāĻā§āĨ¤ āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻļāĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ
āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦāĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻāĻžāĻ° āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ˛ā§āĻŦā§āĻ˛ āĻ¸āĻš āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻā§āĻ¤āĻŋāĻ¸āĻā§āĻāĻ¤ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧāĨ¤ āĻā§āĻĒāĻžāĻĻāĻ¨ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻāĻ˛ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻļāĻžāĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¤āĻžāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ˛āĻžāĻĻāĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻļāĻžāĻāĻž āĻāĻŦāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĻāĻŋāĻ¯āĻŧā§ āĻ˛ā§āĻŦā§āĻ˛ āĻāĻ°āĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻļāĻžāĻāĻž āĻ˛ā§āĻŦā§āĻ˛ āĻāĻŦāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨ā§āĻĄā§ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¨ā§āĻĄ, āĻĒā§āĻ°ā§āĻ, āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨, āĻā§āĻ˛āĻžāĻ¸āĻĒāĻžāĻĨ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻ āĻ¸āĻāĻŽāĻŋāĻļā§āĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻ āĻļāĻžāĻāĻžāĻā§ āĻāĻāĻžāĻ° āĻāĻ°āĻŦ āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻļāĻŋāĻ˛ā§āĻĒāĻāĻ°ā§āĻŽā§āĻ° āĻŽāĻ¤ā§ āĻāĻāĻāĻāĻžāĻŦā§ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĻāĻļāĻŽāĻŋāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ (1.2.3) āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻŦāĨ¤
āĻāĻ§ā§āĻ¨āĻŋāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻŽāĻ°āĻž āĻā§āĻ¨āĻžāĻ°ā§āĻ āĻāĻ°āĻŋ
config āĻĢāĻžāĻāĻ˛ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ
āĻāĻ āĻĒā§āĻ¸ā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ°āĻžāĻāĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŦāĨ¤
āĻ¸āĻāĻāĻ˛āĻ¨āĻ¯ā§āĻā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
āĻāĻ āĻŦāĻŋāĻāĻžāĻā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻŦāĨ¤ āĻĻā§āĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž - āĻāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻŦāĻ āĻāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻĻā§āĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻāĻāĻ āĻ¨ā§āĻĄ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻāĻŋ āĻĻā§āĻāĻŋ āĻ¨ā§āĻĄ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤
āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻž āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¨ā§āĻĄ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤āĨ¤ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻāĻŋāĻā§ āĻĒā§āĻ°āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
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)
āĻĢā§āĻ¯āĻžāĻ¨ā§āĻāĻŽ āĻāĻžāĻāĻĒ
āĻ¸āĻāĻāĻ˛āĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻāĻžāĻāĻĒ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻā§āĻˇāĻŖāĻžāĻ° āĻ¸ā§āĻāĻžāĻ˛āĻž āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻāĻŋ Protocol
āĻ¯āĻž āĻā§āĻ˛āĻžāĻ¸ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻāĻž āĻāĻāĻāĻž āĻ¤āĻĨāĻžāĻāĻĨāĻŋāĻ¤ āĻĢā§āĻ¯āĻžāĻ¨ā§āĻāĻŽ āĻāĻžāĻāĻĒ. āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦ āĻāĻŽāĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻļāĻ¨āĻžāĻā§āĻ¤āĻāĻžāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŋ āĻ¨āĻžāĨ¤ āĻ¸āĻāĻāĻ˛āĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ āĻĢā§āĻ¯āĻžāĻ¨ā§āĻāĻŽ āĻāĻžāĻāĻĒ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻŽāĻ°āĻž āĻā§āĻ˛ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°ā§āĻ āĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻžāĨ¤
āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ Json āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻ¸āĻš REST API:
sealed trait JsonHttpRestProtocol[RequestMessage, ResponseMessage]
āĻā§āĻĨāĻžāĻ¯āĻŧ RequestMessage
āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŽāĻ¨ āĻŦā§āĻ¸ āĻ§āĻ°āĻ¨ā§āĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻž ResponseMessage
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻžāĻ°ā§āĻ¤āĻž. āĻ
āĻŦāĻļā§āĻ¯āĻ, āĻāĻŽāĻ°āĻž āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯āĻž āĻāĻžāĻā§āĻā§āĻˇāĻŋāĻ¤ āĻ¨āĻŋāĻ°ā§āĻā§āĻ˛āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĨ¤
āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ:
sealed trait SimpleHttpGetRest[RequestMessage, ResponseMessage]
āĻāĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ url-āĻ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻĒā§āĻ˛ā§āĻāĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¨āĻžāĻŽ, āĻĒā§āĻ°ā§āĻā§āĻ° āĻ¸āĻāĻā§āĻ°āĻš āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¸ā§āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻā§āĻāĻžāĻŦā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻāĻĒāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§āĻā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, HList
, āĻŦā§āĻāĻāĻŖāĻŋāĻ¤ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻāĻžāĻ°)āĨ¤ āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ āĻāĻŦāĻ āĻāĻŽā§āĻŦāĻŋāĻ¨ā§āĻŦāĻ˛ āĻā§āĻāĻ°āĻž (āĻŽāĻĄāĻŋāĻāĻ˛) āĻā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŦāĨ¤ (āĻāĻ āĻ¸āĻāĻāĻ˛āĻ¨āĻ¯ā§āĻā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤ āĻāĻāĻŋ āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŽāĻžāĻ¤ā§āĻ°āĨ¤)
āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨ā§āĻĄā§āĻ° āĻļā§āĻˇ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
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)
}
āĻāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻ āĻĒā§āĻ°ā§āĻ āĻāĻā§ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ, āĻāĻžāĻ°āĻŖ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻā§āĻˇāĻŖāĻžāĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĻāĻŋ (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](()))
}
(āĻĻā§āĻā§āĻ¨
āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻāĻāĻ āĻ āĻŦāĻā§āĻā§āĻ āĻ¯āĻž āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻžāĻ˛āĻžāĻ¯āĻŧ (āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽā§āĻĒāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻāĻ¨ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ):
object SingleNodeImpl extends ZeroServiceImpl[IO]
with EchoServiceService
with EchoClientService
with FiniteDurationLifecycleServiceImpl
{
type Config = EchoConfig[String] with EchoClientConfig[String] with FiniteDurationLifecycleConfig
}
āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻ¨ā§āĻĄā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻ¨ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻ āĻŋāĻ āĻ§āĻ°āĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻŋāĨ¤ āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻ
āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻĒā§āĻ°āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻ¸ā§āĻ¤ā§ (āĻā§āĻ) āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĻā§āĻŦā§ āĻ¨āĻž, āĻāĻžāĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻā§āĻˇāĻŖāĻž āĻāĻ°ā§āĨ¤ Config
āĻĒā§āĻ°āĻāĻžāĻ° āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻŽāĻ°āĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ¨āĻž āĻāĻ°ā§ āĻ¨ā§āĻĄ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻŦ āĻ¨āĻžāĨ¤
āĻ¨ā§āĻĄ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ°ā§āĻā§āĻ˛āĻŋāĻāĻļāĻ¨
āĻāĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻšā§āĻ¸ā§āĻ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ āĻāĻļā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻĒāĻ°ā§ āĻāĻžāĻ¨āĻž āĻ¯āĻžāĻŦā§āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻ¨ā§āĻĄ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻāĻāĻŋāĻ° āĻāĻ¸āĻ˛ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧ āĻĻāĻ°āĻāĻžāĻ°āĨ¤ āĻāĻ āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨:
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
āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨ āĻĒāĻžāĻ¸
āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻāĻ āĻ¸ā§āĻ āĻĻā§āĻāĻŋ āĻĒā§āĻĨāĻ āĻ¨ā§āĻĄ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻļā§āĻ§ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§
āĻĻā§āĻāĻŋ āĻ¨ā§āĻĄ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
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
, āĻ¯āĻāĻ¨ āĻāĻā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¸āĻ¸ā§āĻŽ āĻ¸āĻŽāĻ¯āĻŧāĻāĻžāĻ˛ā§āĻ° āĻĒāĻ°ā§ āĻ¸āĻŽāĻžāĻĒā§āĻ¤ āĻšāĻŦā§āĨ¤ āĻĻā§āĻā§āĻ¨
āĻ¸āĻžāĻ°ā§āĻŦāĻŋāĻ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
āĻāĻ¸ā§āĻ¨ āĻĻā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĨ¤
āĻā§āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦā§āĨ¤ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻĄ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻĨā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻž āĻ¯ā§āĻā§āĻ¤āĻŋāĻ¸āĻā§āĻāĻ¤ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§āĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻ āĻā§āĻĄ āĻŦā§āĻ¸ā§ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻļāĻžāĻāĻžāĻ° āĻāĻāĻžāĻ§āĻŋāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻ¯āĻāĻ¨āĻ āĻāĻŽāĻ°āĻž āĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻŋ āĻ¤āĻāĻ¨ āĻāĻāĻŋ āĻ¸ā§āĻĨāĻŋāĻ° āĻĨāĻžāĻāĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ āĻāĻāĻŋ āĻāĻāĻ āĻā§āĻŖāĻŽāĻžāĻ¨ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤āĻāĻ°āĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻŦā§āĻ¤ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤:
āĻāĻŋāĻāĻŋāĻ -> PR -> āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž -> āĻŽāĻžāĻ°ā§āĻ -> āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ -> āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž
āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŖāĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§:
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ¸āĻāĻāĻ¤āĨ¤ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻā§āĻ˛ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧ āĻ¨ā§āĻāĨ¤
- āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¨ā§āĻĄā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻ¨āĻ¯āĻŧāĨ¤ āĻ˛āĻ āĻāĻ¨ āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻŋāĻā§ āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§āĨ¤ āĻ¤āĻžāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĄā§āĻ°āĻŋāĻĢāĻ āĻāĻŽ āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ¯āĻŧ.
- āĻā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻ¨āĻ¯āĻŧāĨ¤
- āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻāĻ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻŦā§, āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻŋāĻā§ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž āĻĒāĻžāĻ¸ āĻāĻ°āĻŦā§āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŋ āĻā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨? āĻā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¸āĻāĻŦā§āĻĻāĻ¨āĻļā§āĻ˛ āĻ¤āĻĨā§āĻ¯ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ āĻ˛ā§āĻā§āĻ° āĻ¨āĻžāĻāĻžāĻ˛ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻ°āĻžāĻāĻ¤ā§ āĻāĻžāĻāĨ¤ āĻ¤āĻžāĻ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ°āĻžāĻāĻž āĻŽā§āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻžāĻ¤ā§ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻāĻŦā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋāĻā§ āĻĻā§āĻāĻŋ āĻāĻžāĻā§ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ - āĻāĻāĻāĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ˛āĻž āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻāĻŋāĻ¤ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻā§āĻĒāĻ¨ āĻ āĻāĻļ āĻĨāĻžāĻā§āĨ¤ āĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§ āĻ¸āĻāĻŦā§āĻĻāĻ¨āĻļā§āĻ˛ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻāĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°āĻŦā§āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŽāĻžāĻ¨ āĻ¸āĻš āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻāĻ°āĻž āĻ¸āĻšāĻāĨ¤
āĻĒā§āĻ°āĻāĻžāĻ°āĻā§āĻĻ
āĻāĻ¸ā§āĻ¨ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻžāĻ° āĻā§āĻļāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻŋāĨ¤
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻŽāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻāĻĒāĻžāĻ¯āĻŧā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĻāĻŋāĻā§āĻ° āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻ°āĻŦ:
- āĻāĻžāĻ°ā§āĻā§āĻ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛āĨ¤
- āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻā§āĻ¤ āĻā§-āĻŽāĻžāĻ¨ āĻ¸āĻā§āĻāĻ¯āĻŧāĻ¸ā§āĻĨāĻžāĻ¨ (āĻ¯ā§āĻŽāĻ¨
etcd
/zookeeper
). - āĻ¸āĻžāĻŦāĻĒā§āĻ°āĻ¸ā§āĻ¸ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯āĻž āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°/āĻĒā§āĻ¨āĻāĻ¸ā§āĻāĻ¨āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻ°āĻŽā§āĻ āĻ¨āĻž āĻāĻ°ā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻāĻŦāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĨ¤
āĻā§āĻā§āĻ¸āĻ āĻĢāĻžāĻāĻ˛ āĻ ā§āĻ¯āĻžāĻĄ-āĻšāĻ āĻĢāĻŋāĻā§āĻ¸ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŋāĻā§ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻ˛āĻā§āĻˇā§āĻ¯ āĻ¨ā§āĻĄā§ āĻ˛āĻāĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻā§āĻŦāĻ˛ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ˛ āĻ¨āĻžāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒāĻŋāĻāĻ¨ā§ āĻā§āĻ¨ āĻāĻŋāĻšā§āĻ¨ āĻŦāĻžāĻāĻŋ āĻ¨ā§āĻāĨ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ āĻ¨ā§āĻ¯ āĻā§āĻĄāĻŧāĻž āĻā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž. āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻžāĻ°āĻŖ āĻā§ āĻ¤āĻž āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻž āĻāĻ āĻŋāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ. āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ āĻāĻāĻāĻ¨ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ āĻ āĻ¨ā§āĻ¯ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋāĻ¤ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
(āĻŦāĻŋāĻāĻŋāĻĄāĻŦā§āĻ˛āĻŋāĻ, āĻ¯āĻĻāĻŋ āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻā§āĻā§āĻ¸āĻ āĻāĻ¨āĻĢāĻŋāĻ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° + āĻā§āĻ¯āĻžāĻ˛āĻŋāĻĄā§āĻāĻ° āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻāĻāĻ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ Config
āĻāĻžāĻāĻĒ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻā§āĻ¸āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻĨā§āĻˇā§āĻ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛-āĻāĻžāĻāĻŽ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻā§āĻā§āĻ¸āĻ-āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻĨā§āĻā§ āĻāĻāĻā§ āĻāĻŽ, āĻāĻžāĻ°āĻŖ āĻĒāĻžāĻ ā§āĻ¯-āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŋāĻā§ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻā§āĻĄā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤)
āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻā§āĻ¤ āĻā§-āĻŽāĻžāĻ¨ āĻ¸āĻā§āĻāĻ¯āĻŧāĻ¸ā§āĻĨāĻžāĻ¨ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŽā§āĻāĻž āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦāĻŋāĻ¤āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°āĻž āĻĻāĻ°āĻāĻžāĻ° āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŋ āĻāĻŦāĻ āĻā§āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻĄā§āĻāĻž āĻā§āĨ¤ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻĻā§āĻāĻ¯āĻŧāĻž C => A => B
āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻĻāĻžāĻāĻŋā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻŽāĻžāĻ¨āĻā§ āĻŦāĻ˛āĻŋ C
"āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨", āĻ¯āĻāĻ¨ āĻāĻ¨ āĻāĻ¨ āĻĄā§āĻāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ A
- āĻļā§āĻ§ā§ āĻāĻ¨āĻĒā§āĻ āĻ¤āĻĨā§āĻ¯. āĻĄā§āĻāĻžāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻā§ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ A
. āĻāĻ āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻĢā§āĻ°āĻŋāĻā§āĻ¯āĻŧā§āĻ¨ā§āĻ¸āĻŋ āĻ¯āĻž āĻā§āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻĄā§āĻāĻž āĻĨā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĄā§āĻāĻžāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻĄā§āĻāĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻāĻŋ āĻāĻ¤ā§āĻ¸ (āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§) āĻĨā§āĻā§ āĻāĻ¸ā§ āĻāĻŦāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¤ā§āĻ¸ (āĻ
ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨) āĻĨā§āĻā§ āĻāĻ¸ā§āĨ¤ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŽāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻāĻžāĻŦāĻŋāĻ˛āĻž āĻāĻ°āĻžāĻ° āĻĢāĻ˛ā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒāĻžāĻ¯āĻŧāĨ¤ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¤āĻžāĻĻā§āĻ° āĻĄā§āĻ˛āĻŋāĻāĻžāĻ°āĻŋ āĻŽā§āĻāĻžāĻ¨āĻŋāĻāĻŽ, āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ āĻāĻŦāĻ āĻ¯āĻžāĻāĻžāĻāĻāĻ°āĻŖ, āĻā§āĻ˛ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻ, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻāĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŽāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻāĻŽāĻŋāĻ¯āĻŧā§ āĻāĻ¨āĻ¤ā§ āĻāĻžāĻ (āĻ
āĻĨāĻŦāĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¯āĻŧā§āĻ)āĨ¤
āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻŦāĻ āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻ˛āĻāĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻāĻŋāĻā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻŦāĻŋāĻ°āĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ
āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ¤āĻžāĻ°āĻž āĻ¸ā§āĻĨāĻŋāĻ° āĻāĻŦāĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻĒā§āĻ¨āĻ°ā§āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻŋāĻā§ āĻ
āĻāĻļ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻĨāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻ
āĻ¨ā§āĻ°ā§āĻĒāĻāĻžāĻŦā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
(āĻāĻŽāĻžāĻ° āĻŦāĻŋāĻ¨ā§āĻ¤ āĻŽāĻ¤āĻžāĻŽāĻ¤ āĻšāĻ˛ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻĒā§āĻ¨āĻ°ā§āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻāĻĄāĻŧāĻžāĻ¤ā§ āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧāĨ¤
āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋāĻ° OS āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°āĻž āĻāĻ°āĻ āĻ¸ā§āĻāĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋāĻ, āĻāĻāĻž āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŽā§āĻāĻŦ āĻ¨āĻžāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤)
āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻĻāĻŋāĻ āĻ¯āĻž āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻŽāĻžāĻ¨ā§āĻˇāĻā§ āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§ (āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻžāĻ°āĻŖ āĻāĻžāĻĄāĻŧāĻž) āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻĒāĻĄā§āĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽāĨ¤ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ, āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻ¨āĻ¤ā§āĻ¨ āĻŽāĻžāĻ¨ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻšāĻ¯āĻŧāĨ¤ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ āĻāĻāĻŋ āĻāĻ¤āĻāĻž āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻžāĻŽā§āĻ˛āĻ āĻ¨āĻžāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ˛ā§āĻāĻ¨āĻžāĻŽā§āĻ˛āĻ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¯ā§ āĻā§āĻ¨āĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻā§ āĻĨā§āĻā§ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻ¯ā§āĻā§āĻ¤ āĻļāĻŋāĻ˛ā§āĻĒāĻāĻ°ā§āĻŽā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻŦāĻž āĻŦāĻžāĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ°āĻžāĻāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻā§? āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ°āĻžāĻāĻžāĻ° āĻ āĻ°ā§āĻĨ āĻšāĻ˛ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻŽāĻ¤ā§ āĻāĻāĻ āĻā§āĻŖāĻŽāĻžāĻ¨ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤āĻāĻ°āĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻĒāĻžāĻ¸ āĻāĻ°ā§āĻā§āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ āĻā§āĻ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻāĻžāĻ˛ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āĻ¤āĨ¤ āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻĢāĻžāĻāĻ˛ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ āĻ°ā§āĻĨ āĻšāĻ˛ āĻ¯ā§ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻā§ āĻāĻŦāĻ āĻā§āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻā§ āĻ¤āĻžāĻ° āĻā§āĻ¨āĻ āĻāĻŋāĻšā§āĻ¨ āĻ¨ā§āĻāĨ¤ āĻāĻ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ? āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻŋ āĻ¯ā§ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻŦāĻ āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨāĻžāĻāĻž āĻāĻžāĻ˛āĨ¤
āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻāĻāĻŋ āĻāĻāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻ¤ā§ āĻā§ āĻā§ āĻŽāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§, āĻā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻ¸āĻā§āĻˇāĻŽ/āĻ āĻā§āĻˇāĻŽ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ°āĻž āĻĻāĻžāĻ¯āĻŧā§ āĻāĻŋāĻ˛ āĻ¤āĻž āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ°āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻĒāĻāĻ¨ā§āĻĻāĨ¤
āĻĒā§āĻļāĻžāĻĻāĻžāĻ°āĻ°āĻž āĻāĻŦāĻ āĻāĻ¨āĻ¸
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻŋāĻā§ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¤ā§āĻ˛ā§ āĻ§āĻ°āĻ¤ā§ āĻāĻžāĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻŋāĻā§ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤
āĻāĻĒāĻāĻžāĻ°āĻŋāĻ¤āĻž
āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻāĻāĻ˛āĻ¨āĻ¯ā§āĻā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯:
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻā§āĻ. āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻā§āĻ āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻāĻ¤ā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻĻā§āĻ¯āĻŧ, āĻ¯ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻ āĻŋāĻ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻžāĨ¤
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻŽā§āĻĻā§āĻ§ āĻāĻžāĻˇāĻž. āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĨ¤
āĻ¸ā§āĻāĻžāĻ˛āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻ āĻāĻžāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻˇāĻž āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¸ā§āĻ¤ā§āĻ¤ āĻĒāĻ°āĻŋāĻ¸āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸ā§āĻā§āĻĒ āĻ¸ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ¸ā§āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋval
s āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻŦāĻžāĻ° āĻŦāĻžāĻāĻ°ā§āĻ° āĻ¸ā§āĻ¯ā§āĻā§ (DRY) āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻā§āĻˇāĻ°āĻŋāĻ āĻā§āĻ°āĻŽ, āĻŦāĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻļā§āĻ°ā§āĻŖā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ (Seq
,Map
, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤ - āĻĄāĻŋāĻāĻ¸āĻāĻ˛āĨ¤ āĻ¸ā§āĻāĻžāĻ˛āĻžāĻ° āĻĄāĻŋāĻāĻ¸āĻāĻ˛ āĻ˛ā§āĻāĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻā§āĻ āĻāĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻžāĻˇāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž āĻāĻ°āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻŦāĻ āĻļā§āĻˇ-āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ, āĻ¯āĻžāĻ¤ā§ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻĄā§āĻŽā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻžāĻ āĻ¯ā§āĻā§āĻ¯ āĻšāĻ¯āĻŧāĨ¤
- āĻ¨ā§āĻĄ āĻā§āĻĄāĻŧā§ āĻ āĻāĻŖā§āĻĄāĻ¤āĻž āĻāĻŦāĻ āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°ā§ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻāĻŦāĻžāĻ° āĻāĻ ā§āĻ°āĻāĻžāĻŦā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻžāĻāĻĒ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻĒā§āĻ°ā§āĻ āĻā§āĻˇāĻŖāĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻ¸āĻ āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻāĻāĻ āĻāĻžāĻˇāĻžāĻ¯āĻŧ āĻāĻĨāĻž āĻŦāĻ˛āĻŦā§āĨ¤ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻĒāĻˇā§āĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛ā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻāĻ āĻŋāĻ¨ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤
- āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ°. āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ PR āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻā§āĻ āĻŽāĻžāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĨ¤
- āĻāĻāĻ¯ā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨. āĻ¯āĻāĻ¨āĻ āĻāĻŽāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻā§āĻ¨ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤
- āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻ°āĻ˛ā§āĻāĻ°āĻŖāĨ¤ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻŦāĻ āĻ¯āĻžāĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻŦāĻ āĻā§āĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻāĨ¤ āĻāĻāĻŋ āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻā§ āĻ¸āĻšāĻ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤ (āĻāĻŋāĻā§ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻŦā§āĻĻā§āĻ§āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¨āĻŋāĻā§āĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻāĻāĻŋ āĻ¸āĻā§āĻ¤āĻ¨ āĻā§āĻ°ā§āĻĄ-āĻ āĻĢāĨ¤) āĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻŦā§āĻļ āĻ¸āĻšāĻ - āĻļā§āĻ§ā§ āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻā§āĻāĻ°āĻž āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻāĻŦāĻ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ āĻāĻļāĻā§āĻ˛āĻŋāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ¸ā§āĻĨāĻāĻŋāĻ¤ āĻāĻ°āĻž āĻ¸āĻšāĻāĨ¤
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻ¯ā§āĻā§āĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻāĻāĻ āĻŦāĻŋāĻāĻžāĻļ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§, āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ āĻāĻŽāĻ°āĻž āĻ āĻ¨āĻ¨ā§āĻ¯ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻ°ā§āĻāĻŋāĻĢā§āĻ¯āĻžāĻā§āĻ āĻĒāĻžāĻāĨ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻāĻŦāĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻŽāĻ¨āĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯āĻž āĻāĻ āĻŦāĻāĻ° āĻāĻā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻŋ āĻ āĻŋāĻ āĻāĻāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻ°ā§āĻŦāĻžāĻāĻžāĻ¸ āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¯ā§āĻā§āĻ¯āĻ¤āĻž āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°ā§āĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻĨāĻŋāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻ¸āĻšāĻā§ āĻā§āĻŽā§āĻĒāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤
- āĻŽāĻĄā§āĻ˛āĻžāĻ°āĻŋāĻāĻŋāĨ¤ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻāĻžāĻ āĻžāĻŽā§āĻāĻŋ āĻŽāĻĄā§āĻ˛āĻžāĻ° āĻāĻŦāĻ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ (āĻ¸ā§āĻāĻāĻĒ/āĻ˛ā§āĻāĻāĻ) āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§, āĻāĻāĻāĻŋ āĻā§āĻ āĻ¸ā§āĻā§āĻ˛ āĻāĻāĻ āĻ¨ā§āĻĄ āĻ˛ā§āĻāĻāĻ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻ¸ā§āĻā§āĻ˛ āĻŽāĻžāĻ˛ā§āĻāĻŋ āĻ¨ā§āĻĄ āĻ¸ā§āĻāĻŋāĻ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻāĻāĻžāĻ§āĻŋāĻ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻ˛ā§āĻāĻāĻ āĻĨāĻžāĻāĻž āĻ¯ā§āĻā§āĻ¤āĻŋāĻ¸āĻā§āĻāĻ¤āĨ¤ - āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ. āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻā§āĻ āĻāĻāĻāĻŋ āĻāĻĒāĻšāĻžāĻ¸ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻžāĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻŽāĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ āĻāĻļ āĻ¸āĻš āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻ¸ā§āĻāĻŋāĻ āĻ˛ā§āĻāĻāĻ āĻāĻāĻ āĻ¸āĻžāĻĨā§ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻā§āĻ¸ā§āĻāĻŋāĻ. āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻ āĻŋāĻ¨āĨ¤ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻžāĻāĻĒ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻāĻ°āĻž āĻ
āĻāĻļāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻ¯ā§āĻā§āĻ¯ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ
āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻž āĻ¸āĻšāĻ
āĻ¯āĻāĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻĒāĻ˛āĻŦā§āĻ§ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¸āĻŽā§āĻš
āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ "āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ" āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¨āĻžāĻ āĻŽāĻŋāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻŋāĻā§ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§āĻā§:
- āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĨ¤ āĻāĻāĻž āĻ¸āĻŦ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ¨āĻžāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§. āĻāĻŋāĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§āĻ°āĻā§āĻˇāĻž āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻž āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻ āĻŋāĻ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻāĻ°āĻ āĻāĻ āĻŋāĻ¨ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻā§āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻ¸āĻāĻāĻ˛āĻ¨ āĻāĻŦāĻ āĻĒā§āĻ¨āĻāĻ¨āĻŋāĻ¯āĻŧā§āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻāĻŋ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻāĻŦāĻ āĻŦā§āĻāĻž āĻāĻāĻ¯āĻŧāĻāĨ¤
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻāĻ¨ā§āĻŽāĨ¤ āĻ¯āĻāĻ¨ āĻāĻŋāĻā§ āĻ āĻā§āĻŽā§āĻļāĻ¨ āĻā§āĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž config āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻāĻāĻ˛āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ (āĻ¯āĻž āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§)āĨ¤ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻāĻ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§ āĻ¸āĻāĻšāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻ¯āĻ¨ā§āĻ¤ā§āĻ°āĨ¤ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻĒā§āĻ°āĻā§āĻ° āĻā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻ¯āĻž āĻā§āĻā§āĻ¸āĻ-āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§āĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŋāĻā§
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻšāĻ˛ā§ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¯ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ - āĻŽāĻžāĻ¨āĻ¸āĻŋāĻāĻ¤āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĻāĻ°āĻāĻžāĻ°āĨ¤ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻāĻŦāĻ DevOps āĻĒāĻžāĻ ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ā§ˇ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻ āĻĻā§āĻā§āĻ¤ āĻ˛āĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻ¸āĻāĻāĻ˛āĻ¨āĻ¯ā§āĻā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻā§ āĻāĻāĻāĻŋ āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŦāĻŋāĻāĻžāĻļ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻŋāĻā§ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ°āĻ¯āĻŧā§āĻā§:
- āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŋ āĻ¯āĻž āĻ¨ā§āĻĄ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĻāĻžāĻŦāĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ° āĻ
āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§ āĻ¨āĻžāĨ¤ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§
HList
āĻŦāĻž āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻāĻŦāĻ āĻā§āĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻ¨ā§āĻĄ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ ADTs (āĻā§āĻ¸ āĻā§āĻ˛āĻžāĻ¸)āĨ¤ - āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻĢāĻžāĻāĻ˛ā§ āĻāĻŋāĻā§ āĻŦāĻ¯āĻŧāĻ˛āĻžāĻ°āĻĒā§āĻ˛ā§āĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§: (
package
,import
,object
āĻā§āĻˇāĻŖāĻžāĻĒāĻ¤ā§āĻ°
override def
āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŽāĻžāĻ¨ āĻāĻā§ āĻāĻŽāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯)āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ DSL āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻŦā§āĻ§āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ - āĻāĻ āĻĒā§āĻ¸ā§āĻā§ āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ°ā§āĻĒ āĻ¨ā§āĻĄā§āĻ° āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻĒā§āĻ¨āĻ°ā§āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻāĻāĻžāĻ° āĻāĻ°āĻŋ āĻ¨āĻžāĨ¤
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻ āĻĒā§āĻ¸ā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻžāĻāĻĒ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°ā§āĻāĻŋāĨ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ xml- āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻžāĻ ā§āĻ¯-āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ āĻ¨ā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻāĻŋ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻāĻāĻ˛āĻ¨āĻ¯ā§āĻā§āĻ¯ āĻāĻžāĻˇāĻžāĻ¯āĻŧāĻ āĻ āĻ¨ā§āĻŦāĻžāĻĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻ¯ā§āĻŽāĻ¨ āĻā§āĻāĻ˛āĻŋāĻ¨, āĻ¸āĻŋ#, āĻ¸ā§āĻāĻĢāĻ, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤ āĻā§āĻ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻĢāĻŋāĻ āĻ¨āĻž āĻšāĻ¯āĻŧ āĻ¤āĻŦā§ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°ā§āĻ¨āĨ¤
āĻ āĻŦāĻļā§āĻ¯āĻ, āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻ¯ā§āĻā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧā§ āĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ¨ āĻāĻā§āĻ āĻŽāĻžāĻ¨ā§āĻ° āĻļāĻā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻŦā§āĻ§āĻ¤āĻž āĻ¸āĻā§āĻāĻžāĻ˛āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ āĻŽā§āĻ¯āĻžāĻā§āĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻā§āĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻ¸āĻž-āĻ¯ā§āĻā§āĻ¤āĻŋāĻāĻ¤ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻžāĻ° āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻāĻāĻāĻŋ DSL āĻāĻāĻāĻŋ āĻĄā§āĻŽā§āĻ¨-āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§-āĻŦāĻžāĻ¨ā§āĻ§āĻŦ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧ āĻ¸āĻš āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻ¸āĻŽā§āĻĒāĻĻ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻāĻ°āĻŋ āĻ¤āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻžāĻ (1) āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ¤ā§; (2) āĻ¨āĻ¤ā§āĻ¨ āĻ¨ā§āĻĄā§āĻ° āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ¤ā§ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ°āĨ¤
āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ
āĻāĻŽāĻŋ āĻāĻ āĻĒā§āĻ¸ā§āĻā§āĻ° āĻāĻ¸āĻĄāĻŧāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ āĻ¨ā§āĻĒā§āĻ°ā§āĻ°āĻŖāĻžāĻŽā§āĻ˛āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻĻā§āĻ°ā§ āĻ¸āĻžāĻāĻ¸ā§āĻ¨āĻ, āĻĒāĻžāĻā§āĻ˛ āĻĒāĻĒāĻ, āĻāĻ¨ā§āĻ¤āĻ¨ āĻ¨ā§āĻšāĻžāĻ¯āĻŧā§āĻāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻāĻžāĻ¨āĻžāĻ¤ā§ āĻāĻžāĻ āĻ¯āĻž āĻāĻŽāĻžāĻā§ āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°ā§āĻā§āĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com