Windows 10 เชชเชฐ Apache Airflow เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ‹ เช…เชจเซเชญเชต เช•เชฐเซ‹

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

เชคเซ‡เชฅเซ€, เชฌเชฟเช‚เชฆเซ เชธเซเชงเซ€. เชชเซเชฐเซ‡เชฐเชฟเชค เชฒเซ‡เช–เซ‹ เชฏเซเชฐเซ€ เชเชฎเซ‡เชฒเชฟเชฏเชพเชจเซ‹เชต เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชพเชคเซเชฎเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเชพ เช“เชŸเซ‹เชฎเซ‡เชถเชจเชจเชพ เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เช…เชชเชพเชšเซ‡ เชเชฐเชซเซเชฒเซ‹เชจเซ€ เช•เซเชทเชฎเชคเชพเช“ เชตเชฟเชถเซ‡, เชนเซเช‚ เชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเชพ เชธเซ‚เชšเชฟเชค เชธเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹. เชœเซ‡เช“ เชนเชœเซ เชธเซเชงเซ€ เช…เชชเชพเชšเซ‡ เชเชฐเชซเซเชฒเซ‹เชฅเซ€ เชฌเชฟเชฒเช•เซเชฒ เชชเชฐเชฟเชšเชฟเชค เชจเชฅเซ€ เชคเซ‡เช“ เชŸเซ‚เช‚เช•เซ€ เชเชพเช‚เช–เซ€เชฎเชพเช‚ เชฐเชธ เชงเชฐเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡ เชฒเซ‡เช– เชฐเชพเชทเซเชŸเซเชฐเซ€เชฏ เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ€ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐ. N. E. Bauman.

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

เชšเชพเชฒเซ‹ เชธเซ‚เชšเชจเชพเช“เชจเชพ เชชเช—เชฒเชพเช“เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชˆเช (เชธเซเชชเซ‹เชˆเชฒเชฐ - 5เชฎเชพ เชชเช—เชฒเชพ เชชเชฐ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เชฅเชˆ เช—เชฏเซเช‚):

1. Linux เชตเชฟเชคเชฐเชฃเซ‹เชจเชพ เช…เชจเซเช—เชพเชฎเซ€ เชธเซเชฅเชพเชชเชจ เชฎเชพเชŸเซ‡ Linux เชฎเชพเชŸเซ‡ Windows เชธเชฌเชธเชฟเชธเซเชŸเชฎ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚

เช† เชธเซŒเชฅเซ€ เช“เช›เซ€ เชธเชฎเชธเซเชฏเชพเช“ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชคเซ‡เช“ เช•เชนเซ‡ เช›เซ‡:

เช•เช‚เชŸเซเชฐเซ‹เชฒ เชชเซ‡เชจเชฒ โ†’ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ โ†’ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เช…เชจเซ‡ เชซเซ€เชšเชฐเซเชธ โ†’ เชตเชฟเชจเซเชกเซ‹เช เชซเซ€เชšเชฐเซเชธ เชšเชพเชฒเซ เช…เชฅเชตเชพ เชฌเช‚เชง เช•เชฐเซ‹ โ†’ Linux เชฎเชพเชŸเซ‡ เชตเชฟเชจเซเชกเซ‹เช เชธเชฌเชธเชฟเชธเซเชŸเชฎ

2. เชคเชฎเชพเชฐเซ€ เชชเชธเช‚เชฆเชจเซเช‚ Linux เชตเชฟเชคเชฐเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹

เชฎเซ‡เช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช‰เชฌเซเชจเซเชŸเซ.

3. เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เช…เชจเซ‡ เช…เชชเชกเซ‡เชŸ เชชเซ€เชช

sudo apt-get install software-properties-common
sudo apt-add-repository universe
sudo apt-get update
sudo apt-get install python-pip

4. เช…เชชเชพเชšเซ‡ เชเชฐเชซเซเชฒเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

export SLUGIFY_USES_TEXT_UNIDECODE=yes
pip install apache-airflow

5. เชกเซ‡เชŸเชพเชฌเซ‡เช เช†เชฐเช‚เชญ

เช…เชจเซ‡ เช…เชนเซ€เช‚เชฅเซ€ เชฎเชพเชฐเซ€ เชจเชพเชจเซ€ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชถเชฐเซ‚ เชฅเชˆ. เชธเซ‚เชšเชจเชพเช“ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เช†เชฆเซ‡เชถ เชฆเชพเช–เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ airflow initdb เช…เชจเซ‡ เช†เช—เชฒเชพ เชชเช—เชฒเชพ เชชเชฐ เช†เช—เชณ เชตเชงเซ‹. เชœเซ‹ เช•เซ‡, เชฎเชจเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชœเชตเชพเชฌ เชฎเชณเซเชฏเซ‹ airflow: command not found. เชเชตเซเช‚ เชฎเชพเชจเชตเซเช‚ เชคเชพเชฐเซเช•เชฟเช• เช›เซ‡ เช•เซ‡ เช…เชชเชพเชšเซ‡ เชเชฐเชซเซเชฒเซ‹เชจเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชŠเชญเซ€ เชฅเชˆ เชนเชคเซ€ เช…เชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชซเชพเช‡เชฒเซ‹ เช–เชพเชฒเซ€ เช‰เชชเชฒเชฌเซเชง เชจเชฅเซ€. เชฌเชงเซเช‚ เชœเซเชฏเชพเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช เชคเซเชฏเชพเช‚ เชนเชคเซเช‚ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชฎเซ‡เช‚ เชเชฐเชซเซเชฒเซ‹ เชซเชพเช‡เชฒเชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฎเชพเชฐเซเช— เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ (เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชตเซเช‚ เชœเซ‹เชˆเช: ะŸะพะปะฝั‹ะน/ะฟัƒั‚ัŒ/ะดะพ/ั„ะฐะนะปะฐ/airflow initdb). เชชเชฃ เชšเชฎเชคเซเช•เชพเชฐ เชฅเชฏเซ‹ เชจเชนเชฟ เช…เชจเซ‡ เชœเชตเชพเชฌ เชเช• เชœ เชนเชคเซ‹ airflow: command not found. เชฎเซ‡เช‚ เชซเชพเช‡เชฒเชจเชพ เชธเช‚เชฌเช‚เชงเชฟเชค เชชเชพเชฅเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ (./.local/bin/airflow initdb), เชœเซ‡ เชจเชตเซ€ เชญเซ‚เชฒ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡ ModuleNotFoundError: No module named json'เชœเซ‡ เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เชธเชพเชงเชจ (เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชธเช‚เชธเซเช•เชฐเชฃ 0.15.4 เชธเซเชงเซ€):

pip install werkzeug==0.15.4

เชคเชฎเซ‡ werkzeug เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚.

เช† เชธเชฐเชณ เชฎเซ‡เชจเซ€เชชเซเชฏเซเชฒเซ‡เชถเชจ เชชเช›เซ€ เช†เชฆเซ‡เชถ ./.local/bin/airflow initdb เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซ‚เชฐเซเชฃ เชฅเชฏเซเช‚ เชนเชคเซเช‚.

6. เชเชฐเชซเซเชฒเซ‹ เชธเชฐเซเชตเชฐ เชฒเซ‹เช‚เชš เช•เชฐเชตเซเช‚

เช† เชเชฐเชซเซเชฒเซ‹เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“เชจเซ‹ เช…เช‚เชค เชจเชฅเซ€. เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช ./.local/bin/airflow webserver -p 8080 เชญเซ‚เชฒเชฎเชพเช‚ เชชเชฐเชฟเชฃเชฎเซเชฏเซเช‚ No such file or directory. เชธเช‚เชญเชตเชคเชƒ, เช…เชจเซเชญเชตเซ€ เช‰เชฌเซเชจเซเชŸเซ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเชพเช‡เชฒเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชถเซ‡. export PATH=$PATH:~/.local/bin/ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชนเชพเชฒเชจเชพ PATH เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชธเชฐเซเชš เชชเชพเชฅเชฎเชพเช‚ /.local/bin/ เช‰เชฎเซ‡เชฐเชตเซเช‚), เชชเชฐเช‚เชคเซ เช† เชชเซ‹เชธเซเชŸ เชเชตเชพ เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡ เช›เซ‡ เชœเซ‡เช“ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ Windows เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เช“เชจเซ‡ เช† เช‰เช•เซ‡เชฒ เชธเซเชชเชทเซเชŸ เชจเชฅเซ€ เชฒเชพเช—เชคเซเช‚.

เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ เชฎเซ‡เชจเซ€เชชเซเชฏเซเชฒเซ‡เชถเชจ เชชเช›เซ€, เช†เชฆเซ‡เชถ ./.local/bin/airflow webserver -p 8080 เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซ‚เชฐเซเชฃ เชฅเชฏเซเช‚ เชนเชคเซเช‚.

7.URL: เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ: 8080 /

เชœเซ‹ เช…เช—เชพเช‰เชจเชพ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เชšเชพเชฒเซเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชชเช›เซ€ เชคเชฎเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชพเชคเซเชฎเช• เชถเชฟเช–เชฐเซ‹ เชชเชฐ เชตเชฟเชœเชฏ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‹.

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

เช†เช—เชฒเซ€ เชตเช–เชคเซ‡ เชนเซเช‚ เชตเชฟเชทเชฏ เชšเชพเชฒเซ เชฐเชพเช–เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช…เชจเซ‡ เชฎเซ‹เชฌเชพเช‡เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชจเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชตเชฐเซเชคเชจเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเชพ เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เช…เชชเชพเชšเซ‡ เชเชฐเชซเซเชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เช…เชจเซเชญเชต เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ.

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

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