BILLmanager āĻ›āĻžāĻĄāĻŧāĻž ISPManager5 āĻ˛āĻžāĻ‡āĻŸā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨

āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ˛ā§‡

  1. āĻšāĻŋāĻ°āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ āĻ¸āĻš VPS āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° ispmanager lite 5
  2. āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋ 10-20 āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€
  3. āĻ¯āĻžāĻĻā§‡āĻ° āĻšā§‹āĻ¸ā§āĻŸāĻŋāĻ‚ āĻĢā§āĻ°āĻŋāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻ…āĻ¨ā§āĻ¸ā§āĻŽāĻžāĻ°āĻ• āĻ¸āĻš Google āĻ•ā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻĄāĻžāĻ°
  4. āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§āĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ°ā§āĻĨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻž āĻ˛āĻœā§āĻœāĻžāĻœāĻ¨āĻ•, āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡ āĻ¸āĻžāĻŦāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ¸āĻšāĨ¤

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

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

āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻ•āĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ?

āĻāĻ•āĻŸāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ° user.addon āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨, /usr/local/mgr5/etc/sql/ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡, āĻĻā§āĻŸāĻŋ āĻ–āĻžāĻ˛āĻŋ āĻĢāĻžāĻ‡āĻ˛:

  1. pay_date
  2. uwemail

āĻāĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛āĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻĻā§‡āĻŦā§‡
/usr/local/mgr5/etc/ispmgr.db
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻĻā§āĻŸāĻŋ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ…ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡āĻ° āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ˛ā§‡āĻ–āĻž āĻšāĻŦā§‡āĨ¤

āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻš /usr/local/mgr5/etc/xml āĻĢā§‹āĻ˛ā§āĻĄāĻžāĻ°ā§‡ ispmgr_mod_pay_data.xml āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨

<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
	<metadata name="user.edit">
		<form>
			<page name="main">
				<field name="pay_date">
					<input type="text" name="pay_date"/>
				</field>
				<field name="uwemail">
					<input type="text" name="uwemail"/>
				</field>
			</page>
		</form>
	</metadata>
	<lang name="ru">
		<messages name="user.edit">
			<msg name="pay_date" sqlname="pay_date">ОĐŋĐģĐ°Ņ‡ĐĩĐŊĐž Đ´Đž</msg>
			<msg name="uwemail" sqlname="uwemail">ПоĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅŒŅĐēиК email</msg>
		</messages>
	</lang>	
	<lang name="en">
		<messages name="user.edit">
			<msg name="pay_date" sqlname="pay_date">Paid before</msg>
			<msg name="uwemail" sqlname="uwemail">User email</msg>
		</messages>
	</lang>
</mgrdata>

āĻāĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻĻā§‡āĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻĢāĻ°ā§āĻŽā§‡ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻĒā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻ°āĻŋāĻŦā§āĻŸ āĻ•āĻ°ā§āĻ¨:

/usr/local/mgr5/sbin/mgrctl -m ispmgr exit

āĻ†āĻŽāĻ°āĻž āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ:

BILLmanager āĻ›āĻžāĻĄāĻŧāĻž ISPManager5 āĻ˛āĻžāĻ‡āĻŸā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨

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

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

āĻ†āĻŽāĻŋ āĻāĻŸāĻŋāĻ¤ā§‡ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤

<?php
$adminemail = "[email protected]"; // email Đ°Đ´ĐŧиĐŊĐ°
$day_send_message = [30,7,5,3,1]; // Са ŅĐēĐžĐģŅŒĐēĐž Đ´ĐŊĐĩĐš и Ņ ĐēĐ°ĐēОК ĐŋĐĩŅ€ĐĩОдиŅ‡ĐŊĐžŅŅ‚ŅŒŅŽ ĐąŅƒĐ´ĐĩŅ‚ ĐŊĐ°ĐŋĐžĐŧиĐŊĐ°Ņ‚ŅŒ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅŽ Ņ‡Ņ‚Đž Ņ…ĐžŅŅ‚иĐŊĐŗ СаĐēĐ°ĐŊŅ‡Đ¸Đ˛Đ°ĐĩŅ‚ŅŅ
$db = new SQLite3('/usr/local/mgr5/etc/ispmgr.db');
$results = $db->query('SELECT * FROM users WHERE active == "on" AND pay_date IS NOT NULL');
while ($user = $results->fetchArray()) {
		$days_left=floor( ( strtotime($user['pay_date']) - time() ) / (60 * 60 * 24));
		if(in_array($days_left, $day_send_message)){
			if($user['uwemail'] != ""){
				mail($user['uwemail'], 'ISPMANAGER СаĐēĐ°ĐŊŅ‡Đ¸Đ˛Đ°ĐĩŅ‚ŅŅ Ņ…ĐžŅŅ‚иĐŊĐŗ Ņ‡ĐĩŅ€ĐĩС '.$days_left.' Đ´ĐŊĐĩĐšŅ', "ĐĸĐĩĐēŅŅ‚ Đ´ĐģŅ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ Đž Ņ‚ĐžĐŧ Ņ‡Ņ‚Đž ĐžŅŅ‚Đ°ĐģĐžŅŅŒ ŅŅ‚ĐžĐģŅŒĐēĐž Ņ‚Đž Đ´ĐŊĐĩĐš");
			}
		}
		if( $days_left == 3 ) {
			mail($adminemail, 'ISPMANAGER USER '.$user['name'], $user['name'] . " ЗаĐēĐžĐŊŅ‡Đ¸Ņ‚ŅŅ Ņ…ĐžŅŅ‚иĐŊĐŗ Ņ‡ĐĩŅ€ĐĩС ".$days_left." Đ´ĐŊŅ");
		}
		if($days_left <= 0){
			mail($adminemail, 'ISPMANAGER USER '.$user['name'].' DISABLED', $user['name'].' ОŅ‚ĐēĐģŅŽŅ‡ĐĩĐŊ');
			exec("/usr/local/mgr5/sbin/mgrctl -m ispmgr user.suspend elid=".$user["name"]);
			if( $user['uwemail'] != "" ) {
				mail($user['uwemail'], 'ISPMANAGER Ņ…ĐžŅŅ‚иĐŊĐŗ ĐžŅ‚ĐēĐģŅŽŅ‡ĐĩĐŊ', 'ĐĸĐĩĐēŅŅ‚ Đ´ĐģŅ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ Ņ‡Ņ‚Đž Ņ…ĐžŅŅ‚иĐŊĐŗ СаĐēĐžĐŊŅ‡Đ¸ĐģŅŅ'); 
			}
		}
		// ĐŋŅ€Đ¸ ĐļĐĩĐģĐ°ĐŊии ĐŧĐžĐļĐŊĐž ĐĩŅ‰Đĩ ĐŊĐ°ĐŋиŅĐ°Ņ‚ŅŒ ĐŊĐĩйОĐģŅŒŅˆĐžĐš IF Ņ‡Ņ‚Đž ĐąŅ‹ Đ´Đ°ĐŊĐŊŅ‹Đĩ ŅƒĐ´Đ°ĐģŅĐģиŅŅŒ Ņ‡ĐĩŅ€ĐĩС ĐŊĐĩĐēĐžŅ‚ĐžŅ€ĐžĐĩ вŅ€ĐĩĐŧŅ, ĐŊĐž ĐŧĐŊĐĩ ŅŅ‚Đž ĐŊĐĩ ĐŊŅƒĐļĐŊĐž
}

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

āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻ° āĻŦāĻŋāĻŦā§‡āĻ• āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ°, āĻŸā§‹āĻĄāĻŸāĻŋ āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻŸ, āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ•ā§‹āĻ¨ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ–āĻ°āĻš āĻ•āĻ°āĻŋāĻ¨āĻŋāĨ¤

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

āĻāĻŸāĻž āĻ•āĻžāĻ‰āĻ•ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻ˛ā§‡ āĻ–ā§āĻļāĻŋāĨ¤

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

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