เชถเซเชญ เชฌเชชเซเชฐ, เชนเซเชฌเชฐ! เชนเซเช เชเซเชเชพเชจเชจเซ เชชเชพเช เซเชฏเชชเซเชธเซเชคเช-เชธเชเชฆเชฐเซเชญ เชชเซเชธเซเชคเช เชถเซเชฐ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช เชเซ เชฎเซเช เชเชเชคเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เชเชฐเซเชฏเซเช เชเซ RabbitMQ
เช
เชจเซ เชเซเชเชเซ เชญเชฒเชพเชฎเชฃเซ เช
เชจเซ เชคเชพเชฐเชฃเซ เชฎเชพเช เชธเชเชเซเชทเชฟเชชเซเชค เชเชฐเซ.
เชธเชฎเชพเชตเชฟเชทเซเชเซเชจเซเช เชเซเชทเซเชเช
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 1. เชชเชฐเชฟเชเชฏ. Erlang, AMQP เช เชจเซ RPC
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 2. เชเชเซเชธเชเซเชจเซเชเชจเซ เชธเชฎเชเชตเซเช
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 3. เชเชคเชพเชฐ เช เชจเซ เชฌเชเชงเชจเชจเซ เชธเชฎเชเชตเซเช
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 4. เชธเชเชฆเซเชถเชพเช เช เชจเซ เชซเซเชฐเซเชฎเซเชธ เชถเซเช เชเซ เชคเซ เชธเชฎเชเชตเซเช
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 5: เชธเชเชฆเซเชถ เชชเซเชฐเชเชพเชถเชจ เช เชจเซ เชตเชชเชฐเชพเชถ เชเชพเชฎเชเซเชฐเซ
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 6. เชซเซเชกเชฐเซเชถเชจ เช เชจเซ เชชเชพเชตเชกเซ เชฎเซเชกเซเชฏเซเชฒเซเชจเซ เชธเชฎเซเชเซเชทเชพ
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 7. เชเชจเซเชเซเชถเชจ เช เชจเซ เชเซเชจเชฒ เชตเชฟเชถเซเชจเซ เชตเชฟเชเชคเซ
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 8. .NET เชฎเชพเช RabbitMQ
- เชฐเซเชฌเชฟเชเชเชฎเชเซเชฏเซ. เชญเชพเช 9. เชฎเซเชจเซเชเชฐเซเชเช
AMQP เชตเชฟเชถเซ เชธเชเชเซเชทเชฟเชชเซเชคเชฎเชพเช
AMQP (เชเชกเชตเชพเชจเซเชธเซเชก เชฎเซเชธเซเช เชเซเชฏเซเชเชเช เชชเซเชฐเซเชเซเชเซเชฒ) เช เชธเชฟเชธเซเชเชฎเชจเชพ เชเชเชเซ เชตเชเซเชเซ เชธเชเชฆเซเชถเชพ เชชเซเชฐเชธเชพเชฐเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซเชจเซ เชเช เชเชชเชจ เชชเซเชฐเซเชเซเชเซเชฒ เชเซ. เชฎเซเชณเชญเซเชค เชตเชฟเชเชพเชฐ เช เชเซ เชเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชธเชฌเชธเชฟเชธเซเชเชฎเซเชธ (เช เชฅเชตเชพ เชธเซเชตเชคเชเชคเซเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจเซเชธ) AMQP เชฌเซเชฐเซเชเชฐ เชฆเซเชตเชพเชฐเชพ เชฎเชจเชธเซเชตเซ เชฐเซเชคเซ เชธเชเชฆเซเชถเชพเชเชจเซ เชเชช-เชฒเซ เชเชฐเซ เชถเชเซ เชเซ, เชเซ เชฐเชพเชเชเซเชเช เชเชฐเซ เชเซ, เชธเชเชญเชตเชคเช เชกเชฟเชฒเชฟเชตเชฐเซเชจเซ เชเชพเชคเชฐเซ เชเชชเซ เชเซ, เชกเซเชเชพ เชธเซเชเซเชฐเซเชฎเซเชธเชจเซเช เชตเชฟเชคเชฐเชฃ เชเชฐเซ เชเซ เช เชจเซ เชเชเซเชเชฟเชค เชธเชเชฆเซเชถเชพเชจเชพ เชชเซเชฐเชเชพเชฐเซเชจเซ เชธเชฌเซเชธเซเชเซเชฐเชพเชเชฌ เชเชฐเซ เชเซ.
เชชเซเชฐเซเชเซเชเซเชฒ AMQP
เชคเซเชฐเชฃ เชเซเชฏเชพเชฒเซ เชฐเชเซ เชเชฐเซ เชเซ:
exchange
(เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเชเชฆเซ เช เชฅเชตเชพ เชตเชฟเชจเชฟเชฎเชฏ) - เชธเชเชฆเซเชถเชพเช เชคเซเชจเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเชเชฆเซ เชธเชเชฆเซเชถเชจเซเช เชตเชฟเชคเชฐเชฃ เชเชฐเซ เชเซ เชเช เช เชฅเชตเชพ เชตเชงเซ เชเชคเชพเชฐเซเชฎเชพเช. เชคเซเชฃเซเช เชธเชเชฆเซเชถเชพเชเชจเซ เชเชคเชพเชฐเชฎเชพเช เชฐเซเช เชเชฐเซ เชเซ เชฌเชจเชพเชตเซเชฒ เชเซเชกเชพเชฃเซ เชชเชฐ เชเชงเชพเชฐเชฟเชค (binding
) เชคเซเชจเซ เช เชจเซ เชเชคเชพเชฐ เชตเชเซเชเซqueue
(เชเชคเชพเชฐ) - เชกเชฟเชธเซเช เชชเชฐ เช เชฅเชตเชพ RAM เชฎเชพเช เชกเซเชเชพ เชฎเชพเชณเชเซเช เชธเชเชฆเซเชถเชพเชเชจเซ เชฒเชฟเชเชเซเชธ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชเซ เช เชจเซ เชธเชเชฆเซเชถเชพเชเชจเซ เชจเชเชฒเซ เชเชชเซ เชเซconsumers
(เชเซเชฐเชพเชนเชเซ เชฎเชพเชเซ)binding
(เชฌเชเชงเชจเชเชฐเซเชคเชพ) - เชเช เชจเชฟเชฏเชฎ เชเซ เชตเชฟเชจเชฟเชฎเชฏ เชฌเชฟเชเชฆเซเชจเซ เชเชฃเชพเชตเซ เชเซ เชเซ เช เชธเชเชฆเซเชถเชพเช เชเช เชเชคเชพเชฐเชฎเชพเช เชเชตเชพ เชเซเชเช
เชชเซเชฐเซเชเซเชเซเชฒ เชเซเช เชชเชฐ เชเชพเชฒเซ เชเซ
เชเชฐเซเชฒเชพเชเช เชตเชฟเชถเซ เชธเชเชเซเชทเชฟเชชเซเชคเชฎเชพเช
เชชเซเชฐเซเชเซเชเซเชเชจเซ เชธเซเชคเซเชฐเซเชค เชเซเชก เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเช เชเซ
Erlang
เชเชเชชเชจเซ เชฆเซเชตเชพเชฐเชพ เชตเชฟเชเชธเชฟเชคEricsson
1980 เชจเชพ เชฆเชพเชฏเชเชพเชจเชพ เชฎเชงเซเชฏเชฎเชพเช 99,999% เช เชชเชเชพเชเชฎเชจเซ เชเชฐเซเชฐ เชนเซเชฏ เชคเซเชตเซ เช เชฐเชเซเช เชฎเชพเชเซ เชตเชฟเชคเชฐเชฟเชค, เชเชพเชฎเซ-เชธเชนเชฟเชทเซเชฃเซ, เชฐเซเช เชฒ-เชเชพเชเชฎ เชธเชฟเชธเซเชเชฎ เชคเชฐเซเชเซ.Erlang
เชตเชฟเชตเชฟเชง เชเชฆเซเชฏเซเชเซ เช เชจเซ เชเชงเซเชจเชฟเช เชเชพเชฐเซเชฏเชเซเชฐเชฎเซเชฎเชพเช เชตเชชเชฐเชพเชฏ เชเซ, เชฆเชพ.เชค.WhatsApp เชเชฐเซเชเชฟเชเซเชเซเชเชฐ, เชเซเชจเซ Facebookเช $19 เชฌเชฟเชฒเชฟเชฏเชจเชฎเชพเช เชเชฐเซเชฆเซเชฏเซเช
RabbitMQ เชตเชฟเชถเซ เชธเชเชเซเชทเชฟเชชเซเชคเชฎเชพเช
RabbitMQ
เชชเซเชฐเซเชเซเชเซเชฒเชจเซ เชฒเชพเชเซ เชเชฐเซ เชเซ เช
เชจเซ เชชเซเชฐเช เชฌเชจเชพเชตเซ เชเซ AMQP
.
เชฎเชพเช เชฎเซเชธเซเชเชฟเชเช เชฎเซเชกเชฒเชจเซ เชฎเซเชเซเชฏ เชตเชฟเชเชพเชฐ RabbitMQ
เชตเชธเซเชคเซ เชเซ producer
(เชชเซเชฐเชเชพเชถเช) เชธเซเชงเชพ เชเชคเชพเชฐเชฎเชพเช เชธเชเชฆเซเชถเชพ เชฎเซเชเชฒเชคเชพ เชจเชฅเซ. เชนเชเซเชเชคเชฎเชพเช, เช
เชจเซ เชเชฃเซ เชตเชพเชฐ, เชชเซเชฐเชเชพเชถเชเชจเซ เช เชชเชฃ เชเชฌเชฐ เชนเซเชคเซ เชจเชฅเซ เชเซ เชธเชเชฆเซเชถ เชเซเชเชชเชฃ เชเชคเชพเชฐเชฎเชพเช เชตเชฟเชคเชฐเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ เชเซ เชจเชนเซเช.
เชคเซเชจเชพ เชฌเชฆเชฒเซ, เชชเซเชฐเชเชพเชถเช เชเชเซเชธเชเซเชจเซเชเชจเซ เชฎเชพเชคเซเชฐ เชธเชเชฆเซเชถเชพ เชฎเซเชเชฒเซ เชถเชเซ เชเซ. เชเช เชคเชฐเชซ, เชเชเซเชธเชเซเชจเซเช เชชเซเชฐเชเชพเชถเชเซ เชคเชฐเชซเชฅเซ เชธเชเชฆเซเชถเชพ เชฎเซเชณเชตเซ เชเซ, เช เชจเซ เชฌเซเชเซ เชคเชฐเชซ, เชคเซ เชคเซเชฎเชจเซ เชเชคเชพเชฐเซเชฎเชพเช เชฎเซเชเชฒเซ เชเซ. เชเชเซเชธเชเซเชจเซเชเชจเซ เชเชฌเชฐ เชนเซเชตเซ เชเซเชเช เชเซ เชคเซเชจเซ เชเซ เชฎเซเชธเซเช เชฎเชณเซ เชเซ เชคเซเชจเซเช เชถเซเช เชเชฐเชตเซเช. เชถเซเช เชคเซเชจเซ เชเซเชเซเชเชธ เชเชคเชพเชฐเชฎเชพเช เชเชฎเซเชฐเชตเซเช เชเซเชเช? เชถเซเช เชคเซเชจเซ เชฌเชนเซเชตเชฟเชง เชเชคเชพเชฐเซเชฎเชพเช เชเชฎเซเชฐเชตเซเช เชเซเชเช? เช เชฅเชตเชพ เชธเชเชฆเซเชถเชจเซ เช เชตเชเชฃเชตเซ เชเซเชเช.
เชธเชเชเซเชทเชฟเชชเซเชค เชเชพเชฎ RabbitMQ
เชจเซเชเซ เชชเซเชฐเชฎเชพเชฃเซ เชตเชฐเซเชฃเชตเซ เชถเชเชพเชฏ เชเซ:
- เชชเซเชฐเชเชพเชถเช เชเซเชเซเชเชธ เชตเชฟเชจเชฟเชฎเชฏเชจเซ เชธเชเชฆเซเชถ เชฎเซเชเชฒเซ เชเซ
- เชเช เชตเชฟเชจเชฟเชฎเชฏ, เชธเชเชฆเซเชถ เชชเซเชฐเชพเชชเซเชค เชเชฐเซเชฏเชพ เชชเชเซ, เชคเซเชจเซ เช เชจเซ เชเชคเชพเชฐ เชตเชเซเชเซเชจเชพ เชฌเชเชงเชจเชเชฐเซเชคเชพ เชจเชฟเชฏเชฎเซ เช เชจเซเชธเชพเชฐ เชคเซเชจเซ เชเช เช เชฅเชตเชพ เชตเชงเซ เชเชคเชพเชฐเซเชฎเชพเช เชฒเช เชเชพเชฏ เชเซ.
- เชเชคเชพเชฐ เช เชธเชเชฆเซเชถเชจเซ เชธเชเชฆเชฐเซเชญ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชเซ. เชธเชเชฆเซเชถ เชชเซเชคเซ RAM เช เชฅเชตเชพ เชกเชฟเชธเซเช เชชเชฐ เชธเชเชเซเชฐเชนเชฟเชค เชฅเชพเชฏ เชเซ
- เชเชเชตเชพเชฐ เชเซเชฐเชพเชนเช เชเชคเชพเชฐเชฎเชพเชเชฅเซ เชธเชเชฆเซเชถ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชฅเช เชเชพเชฏ, เชธเชฐเซเชตเชฐ เชฒเชฟเชเช เชฆเซเชตเชพเชฐเชพ เชธเชเชฆเซเชถเชจเซ เชจเชเชฒ เชฌเชจเชพเชตเซ เชเซ เช เชจเซ เชฎเซเชเชฒเซ เชเซ.
- เชเซเชฐเชพเชนเช เชธเชเชฆเซเชถ เชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชเซ เช เชจเซ เชฌเซเชฐเซเชเชฐเชจเซ เชชเซเชทเซเชเชฟ เชฎเซเชเชฒเซ เชเซ
- เชฌเซเชฐเซเชเชฐ, เชชเซเชทเซเชเชฟ เชชเซเชฐเชพเชชเซเชค เชเชฐเซเชฏเชพ เชชเชเซ, เชเชคเชพเชฐเชฎเชพเชเชฅเซ เชธเชเชฆเซเชถเชจเซ เชจเชเชฒ เชฆเซเชฐ เชเชฐเซ เชเซ. เชชเชเซ RAM เช เชจเซ เชกเชฟเชธเซเชเชฎเชพเชเชฅเซ เชเชพเชขเซ เชจเชพเชเซ เชเซ
เชเชฐ.เชชเซ.เชธเซ.
ะัะพัะตัั RabbitMQ
. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชธเชพเชฅเซ เชเซเชฒเชพเชฏเชจเซเชเชจเซ เชถเชฐเชคเซ เชตเชฟเชถเซ เชชเซเชฐเชพเชฐเชเชญเชฟเช เชเชฐเซเชเชพเช RabbitMQ
, เชเซเชเซเชเชธ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชฆเชฐเซเชถเชพเชตเซ เชเซ RPC
. เชเชเชตเชพเชฐ เช เชเซเชฐเชฎ เชชเซเชฐเซเชฃ เชฅเช เชเชพเชฏ, RabbitMQ
เชเซเชฒเชพเชฏเชจเซเชเชจเซ เชตเชฟเชจเชเชคเซเช เชธเซเชตเซเชเชพเชฐเชตเชพ เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชนเชถเซ:
เชธเซเชชเชทเซเชเซเชเชฐเชฃเชฎเชพเช เชชเชฃ AMQP
เชเซเชฒเชพเชฏเชเช เช
เชจเซ เชธเชฐเซเชตเชฐ เชฌเชเชจเซ เชเชฆเซเชถเซ เชเชชเซ เชถเชเซ เชเซ. เชเชจเซ เช
เชฐเซเชฅ เช เชเซ เชเซ เชเซเชฒเชพเชฏเชเช เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ เชตเชพเชคเชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชฐเชพเชน เชเซเช เชฐเชนเซเชฏเซ เชเซ. เชเชฆเซเชถเซ เชตเชฐเซเชเซ เช
เชจเซ เชชเชฆเซเชงเชคเชฟเช เชเซ. เชฆเชพเชเซเชฒเชพ เชคเชฐเซเชเซ, Connection.Start
- เชชเชฆเซเชงเชคเชฟ เชเซเชฒ Start
เชตเชฐเซเช Connection
.
เชเชจเซเชเซเชถเชจ เช เชจเซ เชเซเชจเชฒเซ
เชเซเชฒเชพเชฏเชจเซเช เช เชจเซ เชธเชฐเซเชตเชฐ เชตเชเซเชเซ เชเชตเซ เชฎเชพเชนเชฟเชคเซเชจเซ เชเชช-เชฒเซ เชฎเชพเชเซ, เชเซเชจเชฒเซ. เชเซเชจเชฒเซ เช เชเชฆเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซเชเซเชเชธ เชเซเชกเชพเชฃ. เชฆเชฐเซเช เชเซเชจเชฒ เช เชจเซเชฏ เชเซเชจเชฒเซเชฅเซ เช เชฒเช เชเซ. เชธเชฟเชเชเซเชฐเชจเชธ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเซเชฏเชพเช เชธเซเชงเซ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเซเชฐเชพเชชเซเชค เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช เชธเซเชงเซ เชเชเชฒเชพ เชเชฆเซเชถเชจเซ เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเชตเซเช เชถเชเซเชฏ เชจเชฅเซ.
เชธเชฎเชพเชเชคเชฐ เชเชฆเซเชถเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชธเชฎเชฐเซเชฅ เชฅเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชเชฃเซ เชเซเชจเชฒเซ เชเซเชฒเชตเซ เชชเชกเชถเซ. เชฆเชฐเซเช เชเซเชจเชฒ เช
เชฒเช เชฌเชจเชพเชตเซ เชเซ Erlang
เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเช เชเชจเซเชเซเชถเชจเชฎเชพเช เชฌเชนเซเชตเชฟเชง เชเซเชจเชฒเซ เชนเซเช เชถเชเซ เชเซ (
เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชจเซเชเซเชถเชจ เช
เชจเซ เชเซเชจเชฒ เชฌเชจเชพเชตเชตเชพเชจเซเช เชเช เชธเชฐเชณ เชเชฆเชพเชนเชฐเชฃ
// ...
private void TryConnect()
{
var factory = new ConnectionFactory()
{
HostName = "host_name",
UserName = "user_name",
Password = "p@ssword",
// ะะบะปััะตะฝะธะต ะฐะฒัะพะผะฐัะธัะตะบะพะณะพ ะฒะพัััะฐะฝะพะฒะปะตะฝะธั
// ัะพะตะดะธะฝะตะฝะธั ะฟะพัะปะต ัะฑะพะตะฒ ัะตัะธ
AutomaticRecoveryEnabled = true
};
_connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
_channel = _connection.CreateModel();
// other options
}
เชฆเชฐเซเช เชเชชเชฐเซเชถเชจ เชฎเชพเชเซ เชจเชตเซเช เชเชจเซเชเซเชถเชจ เชเซเชฒเชตเชพเชจเซเช เชเชจเชพเชฅเซ เชธเชเชค เชจเชฟเชฐเซเชคเซเชธเชพเชนเชฟเชค เชเซ เชเชเชเชพ เชเชฐเซเช เชคเชฐเชซ เชฆเซเชฐเซ เชเชถเซ. เชเซเชจเชฒเซ เชชเชฃ เชธเชคเชค เชนเซเชตเซ เชเซเชเช, เชชเชฐเชเชคเซ เชเชฃเซ เชชเซเชฐเซเชเซเชเซเชฒ เชญเซเชฒเซเชจเซ เชเชพเชฐเชฃเซ เชเซเชจเชฒ เชฌเชเชง เชฅเชพเชฏ เชเซ, เชคเซเชฅเซ เชเซเชจเชฒเชจเซเช เชเซเชตเชจเชเชพเชณ เชเชจเซเชเซเชถเชจ เชเชฐเชคเชพ เชเชเซเช เชนเซเช เชถเชเซ เชเซ.
RabbitMQ เชเซเชฏเชพเช เชตเชชเชฐเชพเชฏ เชเซ?
เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธเชฟเชธเชจเชพ เชธเชเชฆเชฐเซเชญเชฎเชพเช, เชชเซเชฐเซเชเซเชเซเชฒ AMQP
เช
เชจเซ เชคเซเชจเชพ เช
เชฎเชฒเซเชเชฐเชฃเชฎเชพเช RabbitMQ
เชตเชพเชฐเชเชตเชพเชฐ เชฎเชพเชเซ เชตเชชเชฐเชพเชฏ เชเซ เช
เชธเซเชฎเซเชณ เชเซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชธเซเชตเชพเช เชตเชเซเชเซ.
เชธเชเชฆเชฐเซเชญเชฎเชพเช IIOT
เชชเซเชฐเซเชเซเชเซเชฒ AMQP
เช
เชจเซ เชคเซเชจเชพ เช
เชฎเชฒเซเชเชฐเชฃเชฎเชพเช RabbitMQ
เชธเชฐเซเชตเชฐเซเชธ (เชธเชฐเซเชตเชฐ-เชธเชฐเซเชตเชฐ) เชตเชเซเชเซ เชกเซเชเชพ เชเชเซเชธเชเซเชจเซเช เชฎเชพเชเซ เชตเชชเชฐเชพเชฏ เชเซ. เชชเซเชฒเชเชเชจเชจเซ เชชเชฃ เชเชชเชฏเซเช เชเชฐเซ
เชนเชตเซ เชชเชเซเชจเชพ เชฒเซเชเชฎเชพเช เชเชชเชฃเซ เชเชเซเชธเชเซเชจเซเชเซเชจเซ เชตเชงเซ เชตเชฟเชเชคเชตเชพเชฐ เชธเชฎเชเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเชถเซเช.
เชธเชเชฆเชฐเซเชญเซ
เชธเซเชฐเซเชธ: www.habr.com