(Un)āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ Habr āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ - HabrApp 2.0: āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž

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

(Un)āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ Habr āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ - HabrApp 2.0: āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž
āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛: āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ†āĻ°āĻžāĻŽāĻĻāĻžāĻ¯āĻŧāĻ•, āĻŽāĻ¨ā§‹āĻ°āĻŽ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ•āĻŋāĻ›ā§ āĻĻāĻ°āĻ•āĻžāĻ°āĨ¤ āĻšāĻžāĻŦāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻ†āĻŦā§‡āĻĻāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻŋ?
āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻŦā§‹āĻāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¨āĻļāĻŸ āĻĻāĻŋāĻ‡āĨ¤

(Un)āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ Habr āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ - HabrApp 2.0: āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻāĻ•āĻ°āĻ•āĻŽ āĻāĻŸāĻž āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻāĻŸāĻž - āĻāĻ°āĨ¤ habr.com āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨

"āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ°" āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž

  • āĻ†āĻĒāĻ¨āĻŋ āĻāĻŽāĻ¨ āĻ•ā§‹āĻ¨ā§‹ āĻĒā§āĻ°āĻ•āĻžāĻļāĻ¨āĻžāĻ•ā§‡ āĻ°ā§‡āĻŸ āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻ¯āĻžāĻ° āĻ°ā§‡āĻŸāĻŋāĻ‚ 0 āĻĨā§‡āĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž
  • āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ˛ā§‡āĻ–āĻž āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŽā§āĻ­āĻŦ āĻ¨āĻ¯āĻŧ
  • āĻĒā§‹āĻ˛ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¨āĻž
  • āĻ¸ā§‚āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ§āĻ•āĻžāĻ° āĻĨāĻŋāĻŽā§‡ āĻĻā§ƒāĻļā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨āĻ¯āĻŧ (āĻ•āĻžāĻ˛ā§‹āĻ° āĻ‰āĻĒāĻ° āĻ•āĻžāĻ˛ā§‹)
  • āĻ¸āĻŦ āĻŦā§āĻ•āĻŽāĻžāĻ°ā§āĻ• āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž

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

āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ‚āĻļ. āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ–ā§āĻāĻœāĻ›āĻŋ.

āĻĻā§āĻ°ā§āĻ¤ āĻ—ā§āĻ—āĻ˛ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ "habrahabr API" āĻāĻŸāĻŋ āĻŦāĻ˛ā§‡ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻŦā§‡āĻļ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ­āĻžāĻ¨ā§āĻĄāĻžāĻ° Github-āĻ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĨā§‡āĻ•ā§‡ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ āĻ¨āĻ­ā§‡āĻŽā§āĻŦāĻ° 21 2016, āĻāĻŦāĻ‚ āĻāĻ‡, āĻāĻ• āĻŽā§āĻšā§‚āĻ°ā§āĻ¤ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĄāĻŧāĻžāĻ‡ āĻŦāĻ›āĻ°.

āĻāĻŸāĻŋ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻ¯ā§‡ āĻ‰āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡, āĻ¨āĻŋāĻšā§‡ āĻ¸ā§āĻ•ā§āĻ°ā§‹āĻ˛ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻĒāĻĄāĻŧā§āĻ¨:

āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ†āĻ‡āĻĄāĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž

āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨āĻŋāĻšā§āĻ›ā§‡ āĻāĻ‡ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž Habrahabr-āĻ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ° āĻ¸āĻžāĻ°āĻŽāĻ°ā§āĻŽ āĻāĻŦāĻ‚ āĻ¯ā§‡ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ā§‡ āĻāĻŸāĻŋāĻ° āĻāĻ•āĻŸāĻŋ API āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¤āĻž āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻ•ā§‹āĻ¨ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¨ā§‡āĻ‡, āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ˛āĻžāĻ­ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻŸāĻŋ āĻĻāĻ°āĻ•āĻžāĻ°āĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻšāĻŋāĻ āĻŋ āĻ˛āĻŋāĻ–āĻŋ (āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡):

āĻšāĻŋāĻ āĻŋ

PWA āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻšāĻžāĻŦāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ†āĻŦā§‡āĻĻāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ‡āĻšā§āĻ›āĻž āĻ†āĻ›ā§‡āĨ¤ āĻāĻ° āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻ°āĻŖ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ 

āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŦāĻ‚ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸ā§āĻĒāĻˇā§āĻŸ: āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ†āĻŽāĻžāĻ° āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤

āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ: āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ‡āĻŽā§‡āĻ˛ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ†āĻ¸āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ§āĻ°āĻŖā§‡āĻ° āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻŦāĻŋāĻœā§āĻžāĻĒā§āĻ¤āĻŋ āĻ¨ā§‡āĻ‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯)āĨ¤

āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ: āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻĒāĻ°āĻŋāĻĒāĻžāĻ• (āĻāĻ•āĻŸāĻŋ āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ•ā§‹āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡) āĻ†āĻŽāĻžāĻ° āĻ†āĻ—ā§āĻ°āĻšā§‡āĻ° āĻ˛ā§‹āĻ•/āĻšāĻžāĻŦāĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻĒāĻ°, āĻ†āĻŽāĻžāĻ° āĻ†āĻ—ā§āĻ°āĻšāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻ¤ā§āĻ¤āĻ°, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ–ā§āĻŦ āĻŽāĻ¨ā§‹āĻ°āĻŽ āĻ›āĻŋāĻ˛ āĻ¨āĻž, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ…āĻ¨ā§āĻ¤āĻ¤ āĻ¸ā§Ž:

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

"āĻ āĻŋāĻ• āĻ†āĻ›ā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¨ā§‡āĻ‡! āĻ†āĻŽāĻ°āĻž āĻ•āĻŋāĻ›ā§ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ¸āĻŦ!" - āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻŦāĻ˛āĻ˛āĻžāĻŽ āĻāĻŦāĻ‚ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻ˛āĻžāĻ—āĻ˛āĻžāĻŽāĨ¤

āĻ…āĻ‚āĻļ āĻĻā§āĻ‡. āĻ—āĻ­ā§€āĻ° āĻ–āĻ¨āĻ¨āĨ¤

āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡, āĻ¯āĻĻāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻŸāĻŋāĻ° API-āĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ¤ā§‡ āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻ¯ā§āĻ•ā§āĻ¤āĨ¤ āĻāĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•.

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

(Un)āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ Habr āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ - HabrApp 2.0: āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž
āĻāĻŸāĻž āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¯ā§‡ āĻ•āĻŋāĻ›ā§āĻ‡ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ¨āĻ¯āĻŧ

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

āĻĄāĻŋāĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻĄ .apk, āĻšāĻ˛ā§āĻ¨ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•. āĻ•ā§‹āĻ¨ API āĻāĻ° āĻ•āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨? āĻ āĻŋāĻ•, āĻļā§‡āĻˇāĻŦāĻŋāĻ¨ā§āĻĻā§, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ http(āĻ—ā§āĻ˛āĻŋ), āĻ†āĻ¸ā§āĻ¨ "https://" āĻ–ā§‹āĻāĻœāĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋ:

āĻĢāĻžāĻ‡āĻ˛ā§‡ AuthLinkManager.smali āĻ†āĻŽāĻ°āĻž āĻ–ā§āĻāĻœāĻŋ

.field OAUTH:Ljava/lang/String; = "https://habrahabr.ru/auth/o/%s/"
.field OAUTH_PARAMS:Ljava/lang/String; = "?client_id=%s&response_type=token&redirect_uri=%s"
.field OAUTH_REDIRECT_URL:Ljava/lang/String; = "http://cleverpumpkin.ru"

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

āĻāĻ° āĻ†āĻ°āĻ“ āĻ¤āĻžāĻ•āĻžāĻ¨. āĻ¸āĻžāĻ°ā§āĻšā§‡āĻ° āĻĒāĻ°ā§‡ āĻ¯ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ†āĻ¸ā§‡ āĻ¤āĻž āĻšāĻ˛ NetworkModule.smali:

const-string v0, "https://habr.com/api/v1/"

āĻāĻŦāĻ‚ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ¸āĻ™ā§āĻ—ā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻœāĻžāĻ¯āĻŧāĻ—āĻž!

āĻ¸ā§āĻŦ-āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻŦā§‡āĻ° āĻ•āĻ°āĻž āĻŦāĻžāĻ•āĻŋ āĻ†āĻ›ā§‡ - client_id, āĻ¯āĻž āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨āĻ¨ā§āĻ¯ āĻļāĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻžāĻ°ā§€āĨ¤

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄā§‡ āĻāĻ‡ āĻĒāĻžāĻ ā§āĻ¯ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻžāĻ¸āĻ™ā§āĻ—āĻŋāĻ• āĻ¤āĻĨā§āĻ¯ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ¯āĻŧāĻ¨āĻŋ...

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻšāĻ āĻžā§Ž āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ†āĻŽāĻžāĻ° āĻšā§‹āĻ– āĻ•āĻŋāĻ›ā§ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ˛āĻžāĻ‡āĻ¨ āĻ§āĻ°āĻž āĻĒāĻĄāĻŧāĻ˛:

const-string p8, "log-tag"
invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

āĻāĻŸāĻŋ, āĻ†āĻĒāĻ¨āĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻāĻ•āĻŸāĻŋ āĻ˛āĻ— āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ. āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻŋāĻ‚ āĻ•āĻŋ?

āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ…āĻ‚āĻļ. āĻāĻ—ā§āĻ˛ā§‹ āĻ¤ā§‹ āĻ˛āĻ—!

āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° adb logcat āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ˛āĻ— āĻĻā§‡āĻ–āĻ¤ā§‡.

(Un)āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ Habr āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ - HabrApp 2.0: āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž

āĻ…āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤āĻ­āĻžāĻŦā§‡, āĻ˛āĻ—āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻšā§‡āĻ¯āĻŧā§‡ āĻ†āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻŦāĻŋāĻļāĻĻ āĻšāĻ¯āĻŧā§‡ āĻ‰āĻ āĻ˛āĨ¤

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

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

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻŦāĻŋāĻŽāĻžāĻ¨āĻŦāĻ¨ā§āĻĻāĻ°ā§‡ "āĻĢā§āĻ°āĻŋ āĻšāĻžāĻ°ā§āĻœāĻŋāĻ‚" āĻāĻ° āĻĢāĻ˛ā§‡ āĻ…ā§āĻ¯āĻžāĻ•āĻžāĻ‰āĻ¨ā§āĻŸ āĻšā§āĻ°āĻŋ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻžāĻ° āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨?
āĻāĻ‡ āĻ˛āĻ—āĻ—ā§āĻ˛āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻ°āĻž āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ:

  • client_id и apikeyāĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ API;
  • āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ URL (āĻ…āĻĻā§āĻ­ā§āĻ¤, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ­āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§‡ āĻ•āĻŋāĻ›ā§āĻ‡ āĻ¨ā§‡āĻ‡, āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ?)

āĻāĻ­āĻžāĻŦā§‡āĻ‡ āĻ˜āĻŸā§‡āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§āĻĻā§āĻ° āĻ—āĻŦā§‡āĻˇāĻŖāĻžāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡, āĻ•āĻžāĻœ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻāĻ•āĻŸāĻŋ āĻ›ā§‹āĻŸ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ‰āĻĒāĻ° āĻšāĻ˛āĻ›ā§‡ - āĻāĻ•āĻŸāĻŋ āĻŽā§‹āĻŦāĻžāĻ‡āĻ˛ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĨ¤ āĻ†āĻŽāĻŋ āĻ¯āĻžāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ āĻ¸āĻŦāĻžāĻ‡āĻ•ā§‡ - āĻ­ā§‹āĻŸ āĻĻāĻŋāĻ¤ā§‡ āĻŦāĻ˛āĻŋ (āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻ•āĻžāĻ°āĻ“ āĻāĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ†āĻ›ā§‡ āĻ•āĻŋāĻ¨āĻž)āĨ¤

āĻ†āĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ—ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ!

āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ°āĻž āĻœāĻ°āĻŋāĻĒā§‡ āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨āĨ¤ āĻ¸āĻžāĻ‡āĻ¨ āĻ‡āĻ¨ āĻ•āĻ°ā§āĻ¨āĻ•āĻ°ā§āĻ¨āĨ¤

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

  • āĻšā§āĻ¯āĻžāĻ, āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ, āĻ†āĻŽāĻŋ āĻāĻ¤ā§‡ āĻ–ā§āĻļāĻŋ

  • āĻšā§āĻ¯āĻžāĻ, āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ, āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻ•āĻžāĻ°āĻŖ āĻšāĻ¯āĻŧ

  • āĻ¨āĻž, āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻĢā§‹āĻ¨ā§‡ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ

  • āĻ¨āĻž, āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻšāĻžāĻŦāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ

357 āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ­ā§‹āĻŸ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›ā§‡āĻ¨āĨ¤ 30 āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻŦāĻŋāĻ°āĻ¤ āĻ›āĻŋāĻ˛ā§‡āĻ¨āĨ¤

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

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