เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เช†เชœเซ‡ เช†เชชเชฃเซ‡ เช•เชนเซ‡เชตเชพเชคเชพ เชฌเชจเชพเชตเซ€เชถเซเช‚. เชฏเชพเชจเซเชกเซ‡เช•เซเชธ เช•เชพเชฐเซเชฏ (เชธเชคเซเชคเชพเชตเชพเชฐ เชจเชพเชฎ เชฏเชพเชจเซเชกเซ‡เช•เซเชท เช•เซเชฒเชพเช‰เชก เช•เชพเชฐเซเชฏเซ‹), เชœเซ‡ เชฎเซ‡เช‡เชฒเชฟเช‚เช— เชธเซ‡เชตเชพ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเซ€ เชนเชคเซ€ SendGrid เชถเชพเช‚เชคเชฟเชฅเซ€ เชธเซ‚เชคเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ "เชธเชพเชฌเซ" เชฎเซ‹เช•เชฒเชถเซ‡ (เชฎเชพเชคเซเชฐ เชฎเชœเชพเช• เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช - เชนเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚ เช•เซ‡ เช†เชชเชฃเซ‡ เชฌเชงเชพ เชธเซเชชเชพเชฎ เชตเชฟเชฐเซเชฆเซเชง เช›เซ€เช).

เชนเซเช‚ เชชเชฐเช‚เชชเชฐเชพเช—เชค เชธเชฐเซเชตเชฐเซเชธเชจเซ‹ เชตเชฟเชฐเซ‹เชงเซ€ (เชชเชฐเช‚เชคเซ เช•เชŸเซเชŸเชฐเชคเชพ เชตเชฟเชจเชพ) เช…เชจเซ‡ เช•เชนเซ‡เชตเชพเชคเชพ เชธเชฎเชฐเซเชฅเช• เชชเชฃ เช›เซเช‚. เชธเชฐเซเชตเชฐ เชตเชฟเชจเชพ (เชธเชฐเซเชตเชฐเชฒเซ‡เชธ) เชธเซ‹เชฒเซเชฏเซเชถเชจเซเชธ, เช•เชพเชฐเชฃ เช•เซ‡ เชฎเชจเซ‡ เชธเชฐเซเชตเชฐเซเชธเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเซเช‚ เช—เชฎเชคเซเช‚ เชจเชฅเซ€ (เช…เชจเซ‡ เช–เชฐเซ‡เช–เชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช–เชฌเชฐ เชจเชฅเซ€) เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชชเชฃ เชตเชงเซ - เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡เช“ เชฒเซ‹เชก เชจ เชฅเชพเชฏ เชคเซเชฏเชพเชฐเซ‡ เชธเชฎเชฏ เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชตเซ€. เชฌเซ€เชœเซ€ เชตเชธเซเชคเซ เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡. เชฎเชพเชฐเชพ เชตเชฟเชจเชพ เช•เซ‹เชˆ เชคเซ‡เชฎเชจเซ€ เชธเซ‡เชตเชพ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชนเซเช‚ เชซเช•เซเชค เช•เซ‰เชฒเซเชธ เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเซเช‚ เช›เซเช‚. เช‘เช•เซเชŸเซ‹เชฌเชฐ 2019 เชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชฏเชพเชจเซเชกเซ‡เช•เซเชธเซ‡ เชคเซ‡เชจเซ€ เชฐเชœเซ‚เช†เชค เช•เชฐเซ€ เชฏเชพเชจเซเชกเซ‡เช•เซเชท เช•เซเชฒเชพเช‰เชก เช•เชพเชฐเซเชฏเซ‹ - เชฐเชถเชฟเชฏเชจ เชซเซ‡เชกเชฐเซ‡เชถเชจเชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เชนเซ‹เชตเชพเชจเซเช‚ เชœเชฃเชพเชฏ เช›เซ‡ เชธเชฐเซเชตเชฐ เชตเชฟเชจเชพ. เช…เชจเซ‡ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชธเชฐเชธ เชตเชพเชค เช เช›เซ‡ เช•เซ‡ เชเชฒเชฟเชธเชจเซ€ เช•เซเชถเชณเชคเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฎเชซเชค เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡เช“ เชคเซเชฏเชพเชฐเชฅเซ€ เชฎเชพเชฐเซ€ เชชเซ‡เชฐเชฟเชซเซ‡เชฐเชฒ เชตเชฟเชเชจเชฎเชพเช‚ เช›เซ‡. เชชเชฐเช‚เชคเซ เชšเชพเชฒเซ‹ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชถเชฐเซ‚ เช•เชฐเซ€เช.

เชšเชพเชฒเซ‹ เช† เชฆเซƒเชถเซเชฏเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ€เช. เชคเชฎเชพเชฐเซ€ เช…เชฐเชœเซ€ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเชฒเชฟเชธเชจเซ€ เช•เซเชถเชณเชคเชพ เชฏเชพเชฆ เชฐเชพเช–เซ‹ เช…เชจเซ‡ เชญเซ‚เชฒเซ€ เชœเชพเช“ เชœเซ‡, เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เชชเชฃ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ เช•เชพเชฐเซเชฏเซ‹) เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชกเชฟเชœเชฟเชŸเชฒ เชชเซเชฐเซ‹เชกเช•เซเชŸ เช–เชฐเซ€เชฆเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฎเช‚เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชตเชงเชพเชฐเชพเชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹, เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชšเซเช•เชตเชฃเซ€ เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซ€ เชšเซเช•เชตเชฃเซ€ เชธเชฟเชธเซเชŸเชฎ (เช—เซ‚เช‚เชšเชตเชฃเชญเชฐเซ€ เชฐเซ€เชคเซ‡ เชธเชฎเชพเชจ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ.เชฎเชฟเชจเซ€) เชšเซเช•เชตเชฃเซ€เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเซ‡ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‹ เช›เซ‹ เชคเซ‡ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ (เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชฒเชฟเช‚เช• เชนเชถเซ‡ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ เช•เชพเชฐเซเชฏเซ‹) HTTP- เชšเซเช•เชตเชฃเซ€เชจเซ€ เชตเชฟเช—เชคเซ‹ เชงเชฐเชพเชตเชคเซ€ เชตเชฟเชจเช‚เชคเซ€, เชœเซ‡เชฎ เช•เซ‡ เชฐเช•เชฎ, เช†เช–เซเช‚ เชจเชพเชฎ, เชซเซ‹เชจ เชจเช‚เชฌเชฐ เช…เชจเซ‡ เชšเซเช•เชตเชฃเซ€เช•เชพเชฐเชจเซ‹ เชˆเชฎเซ‡เชฒ. เช…เชฎเซ‡ เช† เชกเซ‡เชŸเชพเชจเซ‡ เช…เชฎเซเช• เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡: เชฐเช•เชฎ เชคเชชเชพเชธเซ‹, เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชฏเซ‹เช—เซเชฏ เชเชจเซเชŸเซเชฐเซ€เช“ เช•เชฐเซ‹, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เชฎเซ‹เช•เชฒเซ‹ เชเชธเชเชฎเชเชธ ะธ เช‡เชฎเซ‡เช‡เชฒ เชšเซเช•เชตเชฃเซ€เชจเซ€ เชฐเชธเซ€เชฆ เช…เชจเซ‡ เชตเชงเซ เชธเซ‚เชšเชจเชพเช“เชจเซ€ เชชเซเชทเซเชŸเชฟ เชธเชพเชฅเซ‡. เชคเซ‹ เชคเชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธ.

เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฅเซ€ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ เช•เชพเชฐเซเชฏเซ‹ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชเชจเซเชŸเซเชฐเซ€เช“ เช•เชฐเซ‹ เช•เซเชฒเชพเช‰เชก เชซเชพเชฏเชฐเชธเซเชŸเซ‹เชฐ เช†เชชเชฃเซ‡ เชคเซ‡เชจเซ‡ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒเชฎเชพเช‚ เชœเซ‹เชˆ เชฒเซ€เชงเซเช‚ เช›เซ‡ เชเชฒเชฟเชธเชจเซ‡ เชฌเชงเซเช‚ เชฏเชพเชฆ เช›เซ‡ (เช…เชจเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚, เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡, เช…เชฎเซ‡ เชฌเซ€เชœเชพ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเชพเชŸเซ‡ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชถเซเช‚ - เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชกเซ‡เชŸเชพเชฌเซ‡เช). เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‹เช•เชฒเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชเชธเชเชฎเชเชธ เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เชธเช‚เช•เชฒเชฟเชค เช•เชฐเซ‹ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ.เชฎเชจเซ€ - เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชจเชœเซ€เช•เชจเชพ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เช‰เช•เซ‡เชฒเซ€เชถเซเช‚. เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชซเช•เซเชค เชชเชคเซเชฐเซ‹ เชฎเซ‹เช•เชฒเชตเชพ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ€เช.

1. SendGrid เชฎเชพเช‚ เชเช•เชพเช‰เชจเซเชŸ เชฌเชจเชพเชตเซ‹

เชจเซ‹เช‚เชงเชฃเซ€SendGrid เช เชฎเชพเชคเซเชฐ เชฎเชพเชฐเซ€ เชชเชธเช‚เชฆเช—เซ€ เช›เซ‡, เชœเซ‡ เชฎเซ‡เช‚ เช˜เชฃเชพ เช•เชพเชฐเชฃเซ‹เชธเชฐ เชฌเชจเชพเชตเซ€ เช›เซ‡, เชฎเซเช–เซเชฏ เช•เชพเชฐเชฃ เช เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ Node.js เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ SDK เช›เซ‡. เชคเชฎเซ‡ เช•เซ‹เชˆเชชเชฃ เช…เชจเซเชฏ เชฎเซ‡เช‡เชฒเชฟเช‚เช— เชธเซ‡เชตเชพ เชชเชธเช‚เชฆ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชšเชฒเซ‹ เช†เช—เชณ เชตเชงเซ€เช เชเช•เชพเช‰เชจเซเชŸ เชฐเชœเซ€เชธเซเชŸเซเชฐเซ‡เชถเชจ เชชเซ‡เชœ เชชเชฐ เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เชฐเชœเซ€เชธเซเชŸเซเชฐเซ‡เชถเชจ เชซเซ‹เชฐเซเชฎ เชญเชฐเซ‹. เชชเช›เซ€ เช…เชฎเซ‡ เชœเชˆเช เช›เซ€เช เชกเซ‡เชถเชฌเซ‹เชฐเซเชก, เชจเซ‡เชตเชฟเช—เซ‡เชถเชจ เชชเซ‡เชจเชฒเชฎเชพเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‹ Email API -> เชเช•เซ€เช•เชฐเชฃ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ, เช…เชจเซ‡ เชฎเซเช–เซเชฏ เชชเซ‡เชจเชฒ เชชเชฐ - เชตเซ‡เชฌ API ะฝะฐะถะธะผะฐะตะผ เชชเชธเช‚เชฆ เช•เชฐเซ‹. เชฌเชงเซเช‚ เชšเชฟเชคเซเชฐเชฎเชพเช‚ เชœเซ‡เชตเซเช‚ เช›เซ‡:

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เช†เช—เชฒเชพ เชชเช—เชฒเชพเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ€เช เช›เซ€เช Node.js:

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เช†เช—เชณ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชธเชพเชฅเซ‡ เช†เชตเซ€เช เช›เซ€เช API-เช•เซ€ เชจเชพเชฎ (เช•เซ€เช“เชจเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชซเช•เซเชค เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เชœ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชถเซ‡, เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช†เชชเชฃเชพ เชญเชพเชตเชฟ เช•เซ‹เชก เชธเชพเชฅเซ‡ เช•เซ‹เชˆ เชฒเซ‡เชตเชพเชฆเซ‡เชตเชพ เชจเชฅเซ€; เชนเซเช‚ เชเช• เช…เชตเชฟเชจเชพเชถเซ€ เชธเชพเชฅเซ‡ เช†เชตเซเชฏเซ‹ เช›เซเช‚ เชกเซ‡เชฎเซ‹-เชเชชเซ€เช†เชˆ-เช•เซ€) เช…เชจเซ‡ เชฌเชŸเชจ เชฆเชฌเชพเชตเซ‹ เช•เซ€ เชฌเชจเชพเชตเซ‹:

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เช•เซ€ เชœเชจเชฐเซ‡เชŸ เชฅเชถเซ‡, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‹เชชเซ€ เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเซŒเชฅเซ€ เชตเชงเซ เชตเชฟเชถเซเชตเชพเชธเชฎเชพเช‚ เชฐเชพเช–เซ€เชถเซเช‚. เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• เชฌเชŸเชจ เชธเชพเชฅเซ‡ เชธเซเช•เซเชฐเซ€เชจ เชนเชถเซ‡ เชเช•เซ€เช•เชฐเชฃ เชšเช•เชพเชธเซ‹, เชจเซ€เชšเซ‡เชจเชพ เชšเชฟเชคเซเชฐเชจเซ€ เชœเซ‡เชฎ, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชนเชœเซ€ เชธเซเชงเซ€ เชคเซ‡เชจเซ‡ เช•เซเชฒเชฟเช• เช•เชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชšเชพเชฒเซ‹ เช•เซ‹เชก เชฒเช–เชตเชพ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช:

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

2. เช•เซ‹เชก เชฒเช–เชตเชพเชจเซ‹

เชชเชฐเช‚เชคเซ เช•เซ‹เชก เชชเซ‹เชคเซ‡, เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชนเชพเชธเซเชฏเชพเชธเซเชชเชฆ เชฐเซ€เชคเซ‡ เชจเชพเชจเซ‹ เช›เซ‡ - 22 เชฒเซ€เชŸเซ€เช“!

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เชฒเชพเช‡เชจเชฎเชพเช‚ #8 เชฎเชพเชฐเซ‹ เชˆเชฎเซ‡เชฒ เชนเชพเชฐเซเชกเช•เซ‹เชกเซ‡เชก เช›เซ‡ (เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชถเชฐเชฎเชพเชณ เชฐเซ€เชคเซ‡ เช›เซเชชเชพเชฏเซ‡เชฒ เช›เซ‡) - เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเซเช‚ เชธเซ‚เชšเชตเซ‹. เชตเชพเชธเซเชคเชตเชฟเช• เชœเซ€เชตเชจเชฎเชพเช‚, เช…เชฎเซ‡ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เชถเซเช‚ (เชธเชนเชฟเชค เช‡เชฎเซ‡เช‡เชฒ) เชชเชฆเชพเชฐเซเชฅเชฎเชพเช‚เชฅเซ€ เช˜เชŸเชจเชพ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชชเชฆเซเชงเชคเชฟ เชชเซ‹เชธเซเชŸ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เช†เชชเชฃเชพ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช•เซเชทเซ‡เชคเซเชฐ (เชฎเชฟเชฒเช•เชค) เชธเชพเชฅเซ‡ เช‡เชฎเซ‡เช‡เชฒ, เช† เช•เซเชทเซ‡เชคเซเชฐเชจเซเช‚ เชฎเซ‚เชฒเซเชฏ เช† เชฐเซ€เชคเซ‡ เชฎเซ‡เชณเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡:

const { user } = event;
const email = user.email;

เช…เชจเซ‡ เชœเซ‹ เชˆเชฎเซ‡เชฒ เชเชกเซเชฐเซ‡เชธ เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡ เชฎเซ‡เชณเชตเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡: https://functions.yandexcloud.net/123abc?[email protected]
เชชเชฐเชฟเชฎเชพเชฃ เชฎเซ‚เชฒเซเชฏ เช‡เชฎเซ‡เช‡เชฒ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช†เชจเซ€ เชœเซ‡เชฎ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹:

const email = event.queryStringParameters.email;

เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชฌเชฐเชพเชฌเชฐ เชถเซเช‚ เชธเชฎเชพเชฏเซ‡เชฒ เช›เซ‡ เชคเซ‡ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เช˜เชŸเชจเชพ, เชคเชฎเซ‡ เชธเซŒเชฅเซ€ เชธเชฐเชณ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ เช•เชพเชฐเซเชฏ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเซเชฐเชถเซเชจเซ‹ เชธเชพเชฅเซ‡ เชŸเซเชตเชฟเชธเซเชŸ เช•เชฐเซ‹:

module.exports.handler = async function (event) {
  return {
   'statusCode': 200, 
   'body': JSON.stringify(event)
  };
};

เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹เชฎเชพเช‚ เช†เชจเซ€ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ (เชชเชฐเช‚เชคเซ เช“เช›เชพ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡) เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เช…เชนเซ€เช‚.

เชคเซ‡เชฅเซ€, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชจเชพเชตเซ‹ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฎเซ‡เช‡เชฒเชฐ), เชคเซ‡เชจเชพ เชชเชฐ เชœเชพเช“, เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชถเชฐเซ‚ เช•เชฐเซ‹, เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹:

mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv

เช…เชนเซ€เช‚ เชฎเชพเชคเซเชฐ เชชเซ‡เช•เซ‡เชœ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ @sendgrid/mail. เชชเซเชฒเชพเชธเซเชŸเชฟเช•เชจเซ€ เชฅเซ‡เชฒเซ€ เชˆเชฎเซ‡เชฒ-เชตเซ‡เชฒเซ€เชกเซ‡เชŸเชฐ เชฎเชพเชจเซเชฏเชคเชพ เชฎเชพเชŸเซ‡ เช‡เชฎเซ‡เช‡เชฒ เชธเชฐเชจเชพเชฎเซเช‚ เชคเชชเชพเชธเซ‡ เช›เซ‡ (เชฎเซ‡เช‚ เชคเชฐเชค เชœ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชจเซเชฎเชพเชจ เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€?), เชชเชฐเช‚เชคเซ เชœเซ‹ เช…เชฎเชจเซ‡ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เชนเซ‹เชฏ (เชคเซ‡ เช…เชฎเชพเชฐเชพ เชตเชฟเชจเชพ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡), เชคเซ‹ เช…เชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ (เช…เชจเซ‡, เช…เชฒเชฌเชคเซเชค, เช†เชชเชฃเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‹เชกเชฎเชพเช‚ เชคเชชเชพเชธเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€). เชชเซเชฒเชพเชธเซเชŸเชฟเช•เชจเซ€ เชฅเซ‡เชฒเซ€ dotenv เชซเชพเช‡เชฒเชฎเชพเช‚เชฅเซ€ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡ .env เชฐเชจเชŸเชพเช‡เชฎ เชšเชฒเซ‹ เชคเชฐเซ€เช•เซ‡. เชชเชฐเช‚เชคเซ เชฎเชพเช‚ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ เช•เชพเชฐเซเชฏเซ‹ เช† เชšเชฒเซ‹ เชธเซ€เชงเชพ เชฐเชจเชŸเชพเชˆเชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช‚ เชฎเซ‚เช•เชตเซเช‚ เชถเช•เซเชฏ เช›เซ‡. เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡? - เชนเซเช‚ เชคเซ‡เชจเซ‡ เชจเซ€เชšเซ‡ เชฌเชคเชพเชตเซ€เชถ. เชคเซ‡เชฅเซ€ เชชเซ‡เช•เซ‡เชœ dotenv เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช…เชจเซ‡ เชซเชพเช‡เชฒ เชชเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€ .env - เชฌเชจเชพเชตเชถเซ‹ เชจเชนเซ€เช‚, เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เช•เซ‹เชก เชซเชพเช‡เชฒเชฎเชพเช‚ เช›เซ‡ index.js เชฌเชฆเชฒเซ‹ เชจเชนเซ€เช‚. เชชเชฐเช‚เชคเซ เช…เชนเซ€เช‚ เช…เชฎเซ‡ เช† เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชซเชพเช‡เชฒเซ‹ เชฌเชจเชพเชตเซ€เช เช›เซ€เช index.js ะธ .env:

touch index.js
touch .env

เชซเชพเชˆเชฒเชฎเชพเช‚ index.js เช‰เชชเชฐเชจเชพ เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸเชฎเชพเช‚ เชฆเชฐเซเชถเชพเชตเซ‡เชฒ เช•เซ‹เชกเชจเซ€ 22 เชฒเซ€เชŸเซ€เช“ เชฒเช–เซ‹ (เชซเช•เซเชค เชฒเซ€เชŸเซ€เชฎเชพเช‚ #8 เชคเชฎเชพเชฐเซเช‚ เช‡เชฎเซ‡เช‡เชฒ เชฌเชฆเชฒเซ‹), เช…เชจเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ .env - (เช•เซ‹เชˆเชชเชฃ เช…เชตเชคเชฐเชฃ เช…เชฅเชตเชพ เชตเชฟเชฐเชพเชฎเชšเชฟเชนเซเชจเซ‹ เชตเชฟเชจเชพ) เชœเซ‹เชกเซ€ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‹ - เช•เซ€ เชจเชพเชฎ/เชฎเซ‚เชฒเซเชฏ APIเชœเซ‡ เช…เชฎเซ‡ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เช•เชจเซเชธเซ‹เชฒเชฎเชพเช‚ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเซเช‚ เช›เซ‡ SendGrid:
SENDGRID_API_KEY=your-very-secret-sendgrid-api-key

เช…เชจเซ‡ เชœเซ‹ เชคเชฎเชจเซ‡ เช“เช›เซเช‚ เช•เชพเชฎ เชœเซ‹เชˆเชคเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชจเซ‡ เช•เซเชฒเซ‹เชจ เช•เชฐเซ‹ เช…เชจเซ‡ เชชเซ‡เช•เซ‡เชœเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹:

git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i

เชซเชพเชˆเชฒเชฎเชพเช‚ index.js, เชฒเชพเช‡เชจเชฎเชพเช‚ #8 เชˆ - เชฎเซ‡เชˆเชฒ เชฌเชฆเชฒเซ‹; เชฐเซ‚เชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ‹ .env, เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เซ€เชจเซเช‚ เชจเชพเชฎ/เชฎเซ‚เชฒเซเชฏ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ API, เช‰เชชเชฐ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡.

3. เชœเชฎเชพเชตเชŸ เช•เชฐเซ‹

เชตเชฟเชถเซ‡ เชตเชงเซ เช•เซ‡ เช“เช›เชพ เชธเซเชชเชทเซเชŸ เช…เชจเซ‡ เชตเชฟเช—เชคเชตเชพเชฐ Yandex.Cloud เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชคเซเชฏเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‚เช•เชตเซเช‚ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชฐเชพ เชฒเซ‡เช–เชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เชเชฒเชฟเชธ เช‡เชจ เชง เชฒเซ‡เชจเซเชก เช“เชซ เชฌเชฟเชŸเซเชฐเชฟเช•เซเชธ - เชนเซเช‚ เช…เชœเซเชžเชพเชจเซ€เช“เชจเซ‡ เช† เชฆเซ‡เชถเชฎเชพเช‚ เชฎเซ‹เช•เชฒเซเช‚ เช›เซเช‚, เช…เชจเซ‡ เชฌเซ€เชœเชพ เชฌเชงเชพ เชฎเชพเชŸเซ‡ (เช…เชจเซ‡ เชœเซ‡เช“ เชชเชพเช›เชพ เชซเชฐเซเชฏเชพ เช›เซ‡) - เชชเช›เซ€ เชเช• เชจเชพเชจเช•เชกเซ€ เช•เซ‹เชฎเชฟเช• เชฌเซเช• (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡ เชšเชฟเชคเซเชฐเซ‹ เช…เชจเซ‡ เชŸเซ‡เช•เซเชธเซเชŸเชจเซ€ เชถเซเชฐเซ‡เชฃเซ€).

เช…เชฎเซ‡ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เชเชฟเชช-เช†เชฐเซเช•เชพเช‡เชต (เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เช•เชนเซ€เช, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, mailer.zip), เชœเซ‡เชฎเชพเช‚ เช…เชฎเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเซ€เช เช›เซ€เช เชจเซ‹เชก_เชฎเซ‹เชกเซเชฏเซเชฒเซเชธ เช…เชจเซ‡ เชซเชพเช‡เชฒเซ‹ .env, index.js - เช…เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‡เชŸเชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เชฌเชงเซเช‚:

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เช…เชฎเซ‡ เชจเชพเชฎ เชธเชพเชฅเซ‡ เชซเช‚เช•เซเชถเชจ เชฌเชจเชพเชตเซ€เช เช›เซ€เช... เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ - เชฎเซ‡เช‡เชฒเชฐ, เชกเชพเชฌเซ€ เชจเซ‡เชตเชฟเช—เซ‡เชถเชจ เชฎเซ‡เชจเซเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชฆเชพเช–เชฒ เช•เชฐเซ€เช เช›เซ€เช เชเชกเชฟเชŸเชฐ, เชœเชฐเซ‚เชฐเซ€ เชซเซ€เชฒเซเชกเซเชธ เชญเชฐเซ‹ เช…เชจเซ‡ เชŸเซ‡เชฌ เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเซ‹ เชเซ€เชช เช†เชฐเซเช•เชพเช‡เชต เช…เชฎเชพเชฐเชพ เช†เชฐเซเช•เชพเช‡เชตเชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹ mailer.zip:

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เช…เชจเซ‡ เช…เชนเซ€เช‚ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เช—เชพเช‰ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชตเชฟเช•เชฒเซเชช เช›เซ‡ API เช•เซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เชธเซ€เชงเชพ เช…เชนเซ€เช‚ .env, เช…เชจเซ‡ เชชเซ‡เช•เซ‡เชœ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚ dotenv. เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เช† เชฌเชงเซเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชฐเซ€ เชฒเซ€เชงเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชนเซเช‚ เชซเช•เซเชค เชฎเชพเชนเชฟเชคเซ€ เชฎเชพเชŸเซ‡ เชœ เชฌเชคเชพเชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚. เชเชŸเชฒเซ‡ เช•เซ‡, เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€!

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เชนเชตเซ‡ เช‰เชชเชฐเชจเชพ เชœเชฎเชฃเชพ เช–เซ‚เชฃเซ‡ เชฌเชŸเชจ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ‹ เชธเช‚เชธเซเช•เชฐเชฃ เชฌเชจเชพเชตเซ‹, เช…เชจเซ‡ เชฅเซ‹เชกเซ€ เชธเซ‡เช•เช‚เชก เชฐเชพเชน เชœเซเช“. เชœเซเชฏเชพเชฐเซ‡ เชฌเชงเซเช‚ เชคเซˆเชฏเชพเชฐ เชฅเชˆ เชœเชพเชฏ, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชœเชˆเชถเซเช‚ เชเชพเช‚เช–เซ€. เชคเซเชฏเชพเช‚ เช†เชชเชฃเซ‡ เชตเชฟเช•เชฒเซเชชเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ€เชถเซเช‚ เชœเชพเชนเซ‡เชฐ เช•เชพเชฐเซเชฏเชœเซ‡เชฅเซ€ เชคเชฎเซ‡ เชฌเชนเชพเชฐเชจเซ€ เชฆเซเชจเชฟเชฏเชพเชฅเซ€ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เชชเชฐเซเช• เช•เชฐเซ€ เชถเช•เซ‹.

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เชคเชฎเซ‡ เชถเชฟเชฒเชพเชฒเซ‡เช–เชจเซ€ เชตเชฟเชฐเซเชฆเซเชง เชตเชพเชฆเชณเซ€ เชฒเชฟเช‚เช• เชœเซ‹เชถเซ‹ เชฒเชฟเช‚เช• เชชเชฐ เช•เซ‰เชฒ เช•เชฐเซ‹? เชคเซ‡เชจเซ‡ เช•เซเชฒเชฟเช• เช•เชฐเซ‹. เชเช• เช–เชพเชฒเซ€ เชฌเซเชฐเชพเช‰เชเชฐ เชตเชฟเชจเซเชกเซ‹ เช–เซเชฒเชถเซ‡... เชชเชฃ เชฐเชพเชน เชœเซเช“ - เชฎเชจเซ‡ เชเช• เชˆเชฎเซ‡เชฒ เชฎเชณเซเชฏเซ‹:

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เชนเชตเซ‡ เชคเชฎเซ‡ เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เชชเชพเช›เชพ เช†เชตเซ€ เชถเช•เซ‹ เช›เซ‹ SendGrid, เช…เชจเซ‡ เชฌเชŸเชจ เชฆเชฌเชพเชตเซ‹ เชเช•เซ€เช•เชฐเชฃ เชšเช•เชพเชธเซ‹. เชธเชฟเชธเซเชŸเชฎ เชคเซ‡เชจเซ€ เชšเซ‡เชจเชฒเซ‹ เชฆเซเชตเชพเชฐเชพ เชฌเชงเซเช‚ เชคเชชเชพเชธเชถเซ‡, เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‡ เชคเซ‡เชฃเซ‡ เช†เชจเชพ เชœเซ‡เชตเซ€ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐเชค เช•เชฐเชตเซ€ เชœเซ‹เชˆเช:

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เชฌเชธ, เช›เซ‹เช•เชฐเชพเช“ (เช…เชจเซ‡ เช›เซ‹เช•เชฐเซ€เช“, เช…เชฒเชฌเชคเซเชค) - เชฌเชงเซเช‚ เช–เชฐเซ‡เช–เชฐ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช…เชจเซ‡ เชญเชตเซเชฏ เช›เซ‡! เชตเชงเซ เชฒเซ‡เช–เซ‹ เชนเชถเซ‡. เชœเซ‹ เช•เซ‹เชˆเชจเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เชตเชพเช‚เชšเชตเชพเชฎเชพเช‚ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‹ เชœเซ‡เชฅเซ€ เชคเชฎเซ‡ เชšเซ‚เช•เซ€ เชจ เชœเชพเช“.

4. เชฆเชพเชจ

เชฏเชพเชจเซเชกเซ‡เช•เซเชท เชซเช‚เช•เซเชถเชจ เชฎเซ‡เช‡เชฒ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹