āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄāĻ•ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄāĻ•ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž

āĻ­ā§‚āĻŽāĻŋāĻ•āĻž

āĻ†āĻŽāĻžāĻ° āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸ, āĻ¯āĻž āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻļāĻ– āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻžāĻ˛āĻžāĻ‡, āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻšā§‹āĻŽ āĻĒā§‡āĻœ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ¸āĻžāĻ‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻšā§‹āĻ¸ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ¯āĻžāĻ¤ā§āĻ°āĻžāĻ° āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡ āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ†āĻŽāĻžāĻ•ā§‡ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛; āĻ¸ā§‡āĻ‡ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻĒā§‡āĻļāĻžāĻĻāĻžāĻ°āĻĻā§‡āĻ° āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¯āĻŧā§‡ āĻŽā§āĻ—ā§āĻ§ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¯āĻžāĻ°āĻž āĻ¨āĻŋāĻœā§‡āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡, āĻ¤āĻžāĻĻā§‡āĻ° āĻļāĻ– āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ˛ā§‡āĻ–ā§‡āĻ¨āĨ¤ āĻ†āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ†āĻŦāĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ…āĻ­ā§āĻ¯āĻžāĻ¸āĻŸāĻŋ āĻ†āĻœ āĻ…āĻŦāĻ§āĻŋ āĻ°āĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡: āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻžāĻŖāĻŋāĻœā§āĻ¯āĻŋāĻ• āĻāĻŦāĻ‚ āĻ–ā§āĻŦ āĻŦāĻžāĻŖāĻŋāĻœā§āĻ¯āĻŋāĻ• āĻ¸āĻžāĻ‡āĻŸā§‡ āĻ¨āĻ¯āĻŧ, āĻ†āĻŽāĻŋ āĻ˛ā§‡āĻ–āĻ•āĻĻā§‡āĻ° āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§‡ āĻĢā§āĻŸāĻžāĻ°āĻŸāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĨāĻžāĻ•āĻŋāĨ¤

āĻ§āĻžāĻ°āĻŖāĻžāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨

āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ‡āĻšāĻŸāĻŋāĻāĻŽāĻāĻ˛ āĻĒā§ƒāĻˇā§āĻ āĻž āĻ›āĻŋāĻ˛, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻ‰āĻ˛ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ¯āĻŧ āĻ¸ā§āĻŦāĻžāĻ•ā§āĻˇāĻ° āĻ¸āĻš āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻ°ā§‡āĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻĨā§‡ 20 āĻĒā§ƒāĻˇā§āĻ āĻž āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ āĻ­āĻžāĻŦāĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ–ā§āĻŦ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ•āĻ“āĻ­āĻžāĻ°āĻĢā§āĻ˛ā§‹āĻ¤ā§‡, āĻ†āĻŽāĻŋ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ˛ā§‹āĻ• āĻ¤āĻžāĻĻā§‡āĻ° āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¸āĻžāĻ‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ php-āĻ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ, āĻ¯āĻž āĻ•ā§‡āĻŦāĻ˛ āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ (SO āĻ¤ā§‡ āĻ†āĻœāĻ•ā§‡āĻ° āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻ—ā§āĻ˛āĻŋ āĻāĻ‡ āĻ°āĻ•āĻŽ: `/users/1` ), āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ āĻŸā§āĻ¯āĻžāĻ— āĻĨā§‡āĻ•ā§‡ āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻŦā§‡āĻ° āĻ•āĻ°ā§‡ SQLite āĻ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤

āĻāĻŸāĻŋāĻ•ā§‡ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻŦāĻ˛āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡: āĻāĻ•āĻŸāĻŋ SQLite āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻšāĻžāĻœāĻžāĻ° āĻšāĻžāĻœāĻžāĻ° URL-āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš, āĻ¯āĻž HTML-āĻ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻŸāĻŋāĻ• āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋ. āĻ•āĻžāĻ°āĻŖ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° URL āĻ›āĻŋāĻ˛, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨āĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻ¤āĻžāĻĻā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ›āĻŋāĻ˛āĨ¤

āĻāĻ‡ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻĒāĻ°āĻŋāĻ¤ā§āĻ¯āĻžāĻ— āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĻā§€āĻ°ā§āĻ˜ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§‡ āĻāĻŸāĻŋāĻ¤ā§‡ āĻĢāĻŋāĻ°ā§‡ āĻāĻ¸ā§‡āĻ›āĻŋāĨ¤ āĻāĻ‡ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡, āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻœā§‡āĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ¤āĻŋāĻ¨ āĻŦāĻ›āĻ°ā§‡āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ…āĻ¨ā§āĻ­āĻŦ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻ†āĻŽāĻŋ āĻ†āĻ°āĻ“ āĻ—ā§āĻ°ā§āĻ¤āĻ° āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ†āĻ¯āĻŧāĻ¤ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŽāĻšāĻžāĻ¨ āĻ‡āĻšā§āĻ›āĻž āĻ›āĻŋāĻ˛.

āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ

āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻĄāĻ•āĻžāĻ°ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‹āĻœāĻŋāĻ¤, āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸āĻŸāĻŋ āĻŽāĻ™ā§āĻ—ā§‹āĻĄāĻŋāĻŦāĻŋāĻ¤ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ, āĻŽā§‚āĻ˛āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¯āĻž āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ•ā§‡āĻŦāĻ˛ āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ›āĻŋāĻ˛āĨ¤ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž

āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻžāĻ‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻž āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ­āĻžāĻŦā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤āĻ—ā§āĻ˛āĻŋ āĻ•āĻ°ā§‡:

  • URL āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻžāĻŽāĻ—ā§āĻ°ā§€ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§‡
  • HTTPS āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ›āĻŋāĻ˛ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¤āĻžāĻ•āĻž āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡
  • āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸā§‡āĻ° āĻ¸āĻžāĻ°āĻžāĻ‚āĻļ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡
  • āĻ‰ā§ŽāĻ¸ HTML āĻāĻŦāĻ‚ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽāĻ—ā§āĻ˛āĻŋ "āĻ¸ā§‚āĻšā§€āĻ•āĻ°āĻŖ" āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧ
  • āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°ā§‡, āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽ āĻāĻŦāĻ‚ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻŦā§‡āĻ° āĻ•āĻ°ā§‡
  • āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ¸āĻ‚āĻ—ā§āĻ°āĻšā§‡ āĻĄā§‡āĻŸāĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡

āĻāĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻ¸āĻžāĻ‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¸āĻžā§āĻšāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ›āĻŋāĻ˛:

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄāĻ•ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ¸ā§‚āĻšā§€āĻ•āĻ°āĻŖ, āĻļā§āĻ°ā§‡āĻŖā§€āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻ°â€Œā§āĻ¯āĻžāĻ™ā§āĻ•āĻŋāĻ‚, āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ†āĻĒ āĻŸā§ āĻĄā§‡āĻŸ āĻ°āĻžāĻ–āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻŸāĻŋ āĻāĻ‡ āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ­āĻžāĻ˛āĻ­āĻžāĻŦā§‡ āĻŽāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ DDoS āĻāĻĄāĻŧāĻžāĻ¤ā§‡ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ•ā§‹āĻĄ āĻĄā§āĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻŦā§āĻ˛āĻ•āĻŋāĻ‚ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•ā§‡āĻŦāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĨ¤

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‡āĻŦāĻ˛ URLāĻŸāĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯āĻžāĻ¤ā§‡ āĻ°āĻžāĻ•ā§āĻˇāĻ¸ āĻĄā§‡āĻŽāĻ¨ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĨā§‡āĻ•ā§‡ URLāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻœ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ–āĻ¨āĻ“, āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻ–āĻžāĻ¨ā§‡ "āĻ¸āĻžāĻ°āĻŋ" āĻļāĻŦā§āĻĻāĻŸāĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻœ āĻŦāĻŋāĻ­āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¤āĻ¤ āĻ…ā§āĻ¯āĻžāĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ°āĻžāĻ¯āĻŧ

āĻ¸āĻžāĻ°āĻŋāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻœ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ-āĻšāĻžāĻ˛āĻŋāĻ¤ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻĻā§€āĻ°ā§āĻ˜āĻĻāĻŋāĻ¨ āĻ§āĻ°ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽāĻ—ā§āĻ˛āĻŋ āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋāĻ¤ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻ•āĻžāĻ°āĻŖ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻžāĻ° āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻœāĻžāĻ¯āĻŧāĻžāĻ¨ā§āĻŸ Symfony, Laravel, Yii āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¯āĻŧ, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ–ā§āĻāĻœāĻ¤ā§‡ āĻšāĻžāĻ‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§, āĻāĻŸāĻŋ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ¯āĻŧ), āĻĒā§ƒāĻĨāĻ• āĻ—ā§āĻ°ā§āĻ¤āĻ° āĻ—ā§āĻ°āĻ¨ā§āĻĨāĻžāĻ—āĻžāĻ°āĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ…āĻ¸āĻŽā§āĻ­āĻŦāĨ¤ āĻ¸āĻžāĻ°āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§āĻ‡ āĻšāĻ¯āĻŧ āĻĒāĻžāĻāĻš āĻŦāĻ›āĻ° āĻ†āĻ—ā§‡ 3 āĻ•āĻŽāĻŋāĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ, āĻ…āĻĨāĻŦāĻž āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŦāĻĻā§āĻ§āĨ¤

āĻ†āĻŽāĻŋ āĻĒā§ƒāĻĨāĻ• āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻ•āĻžāĻ°ā§€ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ Symfony āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ•āĻŋāĻ›ā§ āĻļā§āĻ¨ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ° āĻ•āĻŋāĻ›ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ āĻāĻŦāĻ‚ āĻ˛āĻžāĻ°āĻžāĻ­ā§‡āĻ˛ā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻ¤āĻžāĻĻā§‡āĻ° ORM, āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•ā§‡āĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡āĨ¤

āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋ/āĻŽā§‡āĻ¸ā§‡āĻžā§āĻœāĻžāĻ°

āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ°āĻžāĻ°ā§āĻĨā§€ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻ†āĻĻāĻ°ā§āĻļ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ•ā§‹āĻ¨ āĻ¸āĻ¨ā§āĻĻā§‡āĻš āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋāĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻ—ā§āĻ—āĻ˛ āĻ•āĻ°āĻž āĻ†āĻ°āĻ“ āĻ•āĻ āĻŋāĻ¨ āĻšāĻ¯āĻŧā§‡ āĻ‰āĻ ā§‡āĻ›ā§‡āĨ¤ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ•āĻ—ā§āĻšā§āĻ› āĻ•ā§āĻ˛āĻžāĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻžāĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨, āĻ…āĻ°ā§āĻĨāĻšā§€āĻ¨ āĻ¨āĻžāĻŽ, āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ¸ āĻāĻŦāĻ‚ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ°ā§‡āĻĄāĻŋāĻ¸ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻŦā§‡āĻ¨?

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄāĻ•ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž

āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ¸āĻžāĻ‡āĻŸā§‡ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻŦā§‡āĻļ āĻŦāĻŋāĻļāĻĻ āĻ›āĻŋāĻ˛, āĻ¤āĻŦā§‡ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ•āĻ•āĻ°āĻŖāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¤āĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ YML āĻāĻŦāĻ‚ āĻ…-āĻ¸āĻŋāĻŽā§āĻĢā§‹āĻ¨āĻŋāĻ¸ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻœāĻžāĻĻā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡ āĻ¨āĻŦāĻŦāĻ°ā§āĻˇā§‡āĻ° āĻ›ā§āĻŸāĻŋāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ†āĻŽāĻžāĻ° āĻ•ā§‹āĻ¨ā§‹ āĻ†āĻ—ā§āĻ°āĻš āĻ›āĻŋāĻ˛ āĻ¨āĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ…āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻĻā§€āĻ°ā§āĻ˜ āĻ¸āĻŽāĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋ āĻ‰āĻ¤ā§āĻ¸āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻ•ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋāĻ¯āĻŧā§‡āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻž āĻŦā§‹āĻāĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻļāĻ•ā§āĻ¤ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§€āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¤ā§āĻšā§āĻ› āĻ•āĻžāĻœ āĻ¨āĻ¯āĻŧ:

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄāĻ•ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž

āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻŋāĻ›ā§āĻ° āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻ° āĻšāĻžāĻ¤ā§‡ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ā§‡ āĻĒā§ŒāĻāĻ›ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¯ā§‡ āĻ†āĻŽāĻŋ āĻāĻ• āĻ§āĻ°āĻŖā§‡āĻ° āĻ•ā§āĻ°āĻžāĻš āĻ•āĻ°āĻ›āĻŋ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤

āĻ†āĻ˛ā§‹āĻ•āĻŋāĻ¤/āĻ¸āĻžāĻ°āĻŋ

āĻĻā§‡āĻ–āĻž āĻ—ā§‡āĻ˛ āĻ¯ā§‡ āĻāĻ‡ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻŸāĻŋ āĻ˛āĻžāĻ°āĻžāĻ­ā§‡āĻ˛ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻļāĻ•ā§āĻ¤āĻ­āĻžāĻŦā§‡ āĻ†āĻŦāĻĻā§āĻ§ āĻ›āĻŋāĻ˛, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻāĻŸāĻŋāĻ¤ā§‡ āĻŦā§‡āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻ•āĻ°āĻŋāĻ¨āĻŋ: āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻāĻŸāĻŋ āĻĻā§‡āĻ–ā§‡āĻ›āĻŋ, āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻžāĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛ā§‡āĻ›āĻŋāĨ¤

yiisoft/yii2-āĻ¸āĻžāĻ°āĻŋ

āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻŸāĻŋ āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻ¨āĻžāĻŽ āĻĨā§‡āĻ•ā§‡ āĻ…āĻ¨ā§āĻŽāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ†āĻŦāĻžāĻ°, Yii2 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻ ā§‹āĻ° āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĨ¤ āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻ‡ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ–āĻžāĻ°āĻžāĻĒ āĻ›āĻŋāĻ˛ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ­āĻžāĻŦāĻŋāĻ¨āĻŋ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ Yii2 āĻāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡āĨ¤

āĻŦāĻžāĻ•āĻŋ

GitHub-āĻ āĻ†āĻŽāĻŋ āĻ¯āĻž āĻ•āĻŋāĻ›ā§ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¤āĻž āĻ›āĻŋāĻ˛ āĻ¤āĻžāĻ°āĻž, āĻ•āĻžāĻāĻŸāĻžāĻšāĻžāĻŽāĻš āĻāĻŦāĻ‚ āĻŦāĻŋāĻĒā§āĻ˛ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻ• āĻ•āĻŽāĻŋāĻŸ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ…āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āĻ¤, āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻ¤ā§āĻ¯āĻ•ā§āĻ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĨ¤

āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋ/āĻŽā§‡āĻ¸ā§‡āĻžā§āĻœāĻžāĻ°ā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ¯āĻžāĻ¨, āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻŦāĻŋāĻŦāĻ°āĻŖ

āĻ†āĻŽāĻžāĻ•ā§‡ āĻāĻ‡ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻŸāĻŋ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤ āĻĻā§‡āĻ–āĻž āĻ—ā§‡āĻ˛ āĻ¯ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻŦā§‡āĻļ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻāĻŦāĻ‚ āĻ¸āĻšāĻœ āĻ›āĻŋāĻ˛āĨ¤ āĻŦāĻžāĻ¸āĻ•ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻ•āĻžāĻ°āĻ–āĻžāĻ¨āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ•āĻžāĻ°āĻŖ... āĻ†āĻŽāĻžāĻ° āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻŸāĻžāĻ¯āĻŧāĻžāĻ° āĻāĻŦāĻ‚ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻĨāĻžāĻ•āĻžāĻ° āĻ•āĻĨāĻž āĻ›āĻŋāĻ˛āĨ¤

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄāĻ•ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž

āĻŽāĻžāĻ¤ā§āĻ° āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ§āĻžāĻĒ:

  • āĻ†āĻŽāĻ°āĻž āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ āĻ¯āĻž āĻ•ā§‡āĻŦāĻ˛ āĻ•āĻ˛āĻ¯ā§‹āĻ—ā§āĻ¯ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤
  • āĻ†āĻŽāĻ°āĻž āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻĄā§‡āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻ°ā§‡ āĻŽā§‹āĻĄāĻŧāĻžāĻ¨ā§‹ (āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ•ā§āĻ˛āĻžāĻ¸)
  • āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ˛ā§‹āĻ•ā§‡āĻŸāĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ āĻāĻ‡ "āĻŦāĻŋāĻŦāĻ°āĻŖāĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ°" āĻŽā§‹āĻĄāĻŧāĻžāĻ¨ā§‹
  • MessageBus āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤ā§‡ HandlersLocator āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡
  • āĻ†āĻŽāĻ°āĻž āĻ¸ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻ˛ā§‹āĻ•ā§‡āĻŸāĻžāĻ°ā§‡ `āĻ¸ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸` āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻŋ, āĻ†āĻŽāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ `āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĒā§‹āĻ°ā§āĻŸ` āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ‰āĻĒāĻžāĻ¯āĻŧā§‡ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡
  • MessageBus āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ SendersLocator āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

MessageBus-āĻāĻ° āĻāĻ•āĻŸāĻŋ `->āĻĄāĻŋāĻ¸āĻĒā§āĻ¯āĻžāĻš()` āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ˛ā§‹āĻ•ā§‡āĻŸāĻžāĻ°ā§‡ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻĻā§‡āĻ° āĻ–ā§‹āĻāĻœ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻŦāĻžāĻ¸ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ `āĻĒā§āĻ°ā§‡āĻ°āĻ• āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸` āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ (āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ)āĨ¤

āĻ§āĻžāĻ°āĻ• āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡ (āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ php-di), āĻāĻ‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŦāĻžāĻ¨ā§āĻĄāĻŋāĻ˛āĻŸāĻŋ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

        CONTAINER_REDIS_TRANSPORT_SECRET => function (ContainerInterface $c) {
            return new RedisTransport(
                $c->get(CONTAINER_REDIS_STREAM_CONNECTION_SECRET),
                $c->get(CONTAINER_SERIALIZER))
            ;
        },
        CONTAINER_REDIS_TRANSPORT_LOG => function (ContainerInterface $c) {
            return new RedisTransport(
                $c->get(CONTAINER_REDIS_STREAM_CONNECTION_LOG),
                $c->get(CONTAINER_SERIALIZER))
            ;
        },
        CONTAINER_REDIS_STREAM_RECEIVER_SECRET => function (ContainerInterface $c) {
            return new RedisReceiver(
                $c->get(CONTAINER_REDIS_STREAM_CONNECTION_SECRET),
                $c->get(CONTAINER_SERIALIZER)
            );
        },
        CONTAINER_REDIS_STREAM_RECEIVER_LOG => function (ContainerInterface $c) {
            return new RedisReceiver(
                $c->get(CONTAINER_REDIS_STREAM_CONNECTION_LOG),
                $c->get(CONTAINER_SERIALIZER)
            );
        },
        CONTAINER_REDIS_STREAM_BUS => function (ContainerInterface $c) {
            $sendersLocator = new SendersLocator([
                AppMessagesSecretJsonMessages::class => [CONTAINER_REDIS_TRANSPORT_SECRET],
                AppMessagesDaemonLogMessage::class => [CONTAINER_REDIS_TRANSPORT_LOG],
            ], $c);
            $middleware[] = new SendMessageMiddleware($sendersLocator);

            return new MessageBus($middleware);
        },
        CONTAINER_REDIS_STREAM_CONNECTION_SECRET => function (ContainerInterface $c) {
            $host = 'bu-02-redis';
            $port = 6379;
            $dsn = "redis://$host:$port";
            $options = [
                'stream' => 'secret',
                'group' => 'default',
                'consumer' => 'default',
            ];

            return Connection::fromDsn($dsn, $options);
        },
        CONTAINER_REDIS_STREAM_CONNECTION_LOG => function (ContainerInterface $c) {
            $host = 'bu-02-redis';
            $port = 6379;
            $dsn = "redis://$host:$port";
            $options = [
                'stream' => 'log',
                'group' => 'default',
                'consumer' => 'default',
            ];

            return Connection::fromDsn($dsn, $options);
        },

āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨ āĻ¯ā§‡ SendersLocator-āĻ āĻ†āĻŽāĻ°āĻž āĻĻā§āĻŸāĻŋ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ "āĻĒāĻ°āĻŋāĻŦāĻšāĻ¨" āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•āĻŸāĻŋāĻ° āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻŦāĻžāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•ā§‡ āĻ…āĻĒāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€ āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻĄā§‡āĻŽāĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻĄā§‡āĻŽā§‹ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ: https://github.com/backend-university/products/tree/master/products/02-redis-streams-bus.

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĻā§‡āĻ–āĻžāĻŦ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ•āĻœāĻ¨ āĻ­ā§‹āĻ•ā§āĻ¤āĻžāĻ•ā§‡ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ:

use AppMessagesDaemonLogMessage;
use SymfonyComponentMessengerHandlerHandlerDescriptor;
use SymfonyComponentMessengerHandlerHandlersLocator;
use SymfonyComponentMessengerMessageBus;
use SymfonyComponentMessengerMiddlewareHandleMessageMiddleware;
use SymfonyComponentMessengerMiddlewareSendMessageMiddleware;
use SymfonyComponentMessengerTransportSenderSendersLocator;

require_once __DIR__ . '/../vendor/autoload.php';
/** @var PsrContainerContainerInterface $container */
$container = require_once('config/container.php');

$handlers = [
    DaemonLogMessage::class => [
        new HandlerDescriptor(
            function (DaemonLogMessage $m) {
                error_log('DaemonLogHandler: message handled: / ' . $m->getMessage());
            },
            ['from_transport' => CONTAINER_REDIS_TRANSPORT_LOG]
        )
    ],
];
$middleware = [];
$middleware[] = new HandleMessageMiddleware(new HandlersLocator($handlers));
$sendersLocator = new SendersLocator(['*' => [CONTAINER_REDIS_TRANSPORT_LOG]], $container);
$middleware[] = new SendMessageMiddleware($sendersLocator);

$bus = new MessageBus($middleware);
$receivers = [
    CONTAINER_REDIS_TRANSPORT_LOG => $container->get(CONTAINER_REDIS_STREAM_RECEIVER_LOG),
];
$w = new SymfonyComponentMessengerWorker($receivers, $bus, $container->get(CONTAINER_EVENT_DISPATCHER));
$w->run();

āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡ āĻāĻ‡ āĻĒāĻ°āĻŋāĻ•āĻžāĻ āĻžāĻŽā§‹ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻ†āĻŽāĻžāĻ° āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻŦāĻžāĻ¸āĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ¸āĻŋāĻ™ā§āĻ•ā§āĻ°ā§‹āĻ¨āĻžāĻ¸ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĨā§‡āĻ•ā§‡ āĻĒā§ƒāĻĨāĻ• āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĒā§ƒāĻĨāĻ• āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¯āĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•ā§‡āĻ‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻžāĻ‡āĻŸ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻŸāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻāĻ‡āĻ°āĻ•āĻŽ āĻ›āĻŋāĻ˛:

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄāĻ•ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž

āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° āĻĒāĻ°āĻĒāĻ°āĻ‡, āĻ†āĻŽāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻšāĻœ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ˛, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, Rss āĻŦā§‡āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻžāĨ¤ āĻ•āĻžāĻ°āĻŖ āĻāĻ‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻŽā§‚āĻ˛ āĻ¸āĻžāĻŽāĻ—ā§āĻ°ā§€āĻ°āĻ“ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ WebsiteIndexHistoryPersistor-āĻāĻ° āĻŽāĻ¤ā§‹ RSS āĻ˛āĻŋāĻ™ā§āĻ• āĻāĻ•ā§āĻ¸āĻŸā§āĻ°ā§āĻ¯āĻžāĻ•ā§āĻŸāĻ° āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°, "āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āĻŸ/HtmlContent" āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋāĻ¤ā§‡ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨ā§‡āĻ¯āĻŧ, āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ° āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻŦāĻ°āĻžāĻŦāĻ° āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻĒāĻžāĻ¸ āĻ•āĻ°ā§‡āĨ¤

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄāĻ•ā§‡ āĻ°ā§‡āĻĄāĻŋāĻ¸ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻŦāĻžāĻ¸ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž

āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, āĻ†āĻŽāĻ°āĻž āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻĄā§‡āĻŽāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻļā§‡āĻˇ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻœāĻžāĻ¯āĻŧ āĻ°āĻžāĻ–ā§‡āĨ¤ āĻ¯ā§‡āĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻĻāĻžāĻ¨āĻŦ āĻ•ā§āĻ°ā§‹āĻ˛ā§‡āĻ°ā§āĻ¸ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ¨ā§‡āĻŸā§‡ āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻŽāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻāĻŦāĻ‚ āĻĄā§‡āĻŽāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¸ā§āĻĨāĻŋāĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ°āĻžāĻ–ā§‡āĨ¤

āĻāĻ–āĻ¨, āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ¸ā§āĻŸāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ†āĻ‡āĻĄāĻŋāĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨