เชจเชฎเชธเซเชคเซ! เชฎเชพเชฐเซเช เชจเชพเชฎ เชฆเชฟเชฎเชพ เชเซ, เชนเซเช Wrike เชเชพเชคเซ SysOps เชเซเชฎ เชฎเชพเชเซ เชเซเชเชจเชฟเชเชฒ เชฒเซเชก เชเซเช. เช เชฒเซเชเชฎเชพเช เชนเซเช เชคเชฎเชจเซ เชเชฃเชพเชตเซเชถ เชเซ เชเซเชตเซ เชฐเซเชคเซ เชตเซเชฌเชธเชพเชเชเชจเซ 10 เชฎเชฟเชจเชฟเชเชฎเชพเช เช เชจเซ 5 เชกเซเชฒเชฐเชฎเชพเช เชฎเชนเชฟเชจเซ เชถเชเซเชฏ เชคเซเชเชฒเซ เชจเชเซเชเชจเซ เชตเซเชฌเชธเชพเชเช เชฌเชจเชพเชตเชตเซ เช เชจเซ เชคเซเชจเซ เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเชเชจเซ เชธเซเชตเชเชพเชฒเชฟเชค เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซ. เช เชฎเซ เช เชฎเชพเชฐเซ เชเซเชฎเชฎเชพเช เชเซ เชธเชฎเชธเซเชฏเชพเช เชนเชฒ เชเชฐเซเช เชเซเช เชคเซเชจเซ เชธเชพเชฅเซ เชฒเซเชเชจเซ เชฒเชเชญเช เชเชเช เชฒเซเชตเชพเชฆเซเชตเชพ เชจเชฅเซ. เช เชฎเชพเชฐเชพ เชฎเชพเชเซ เชจเชตเซ เชเซเชเซเชจเซเชฒเซเชเซเชจเซ เชเชพเชฃเชตเชพเชจเซ เชฎเชพเชฐเซ เช เชเชเชค เช เชจเซเชญเชต เช เชจเซ เชเชพเชช เชเซ. เชฎเซเช เชถเชเซเชฏ เชคเซเชเชฒเซ เชตเชงเซ เชตเชฟเชเชคเชตเชพเชฐ เชชเชเชฒเชพเชเชเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเชฏเซ เชเซเชฅเซ เชธเซเชเชจเชพเช เชตเชฟเชตเชฟเชง เช เชจเซเชญเชต เชงเชฐเชพเชตเชคเชพ เชฒเซเชเซ เชฎเชพเชเซ เชเชชเชฏเซเชเซ เชฅเชพเชฏ. เชนเซเช เชเชถเชพ เชฐเชพเชเซเช เชเซเช เชเซ เชคเชฎเซ เชเชจเชเชฆ เชเชฐเชถเซ. เชเชพเช!
เชคเซเชฅเซ, เชเชฆเชพเช เชคเชฎเซ เชตเซเชฌเชธเชพเชเชเชจเซ เชนเซเชธเซเช เชเชฐเชตเชพเชจเซ เชเช เชธเชฐเชณ เช
เชจเซ เชธเชธเซเชคเซ เชฐเซเชค เชถเซเชงเซ เชฒเซเชงเซ เชเซ. เชเชฆเชพเช เชฎเชซเชค เชชเชฃ, เชเชฎเชพเช เชตเชฐเซเชฃเชตเซเชฏเชพ เชฎเซเชเชฌ
เชชเชฐเชเชคเซ เช
เชเชพเชจเช เชคเชฎเซ เชนเชเซ เชชเชฃ เชเชเชเชพเชณเซ เชเชฏเชพ เชเซ เช
เชจเซ เชเซเชเซเชจเซเชฒเซเชเซเชจเซ เชฌเชนเชพเชฆเซเชฐ เชจเชตเซ เชฆเซเชจเชฟเชฏเชพเชจเซ เชธเซเชชเชฐเซเชถ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซ? เชเชพเชฒเซ เชเชนเซเช เชเซ เชคเชฎเซ เชธเซเชตเชเชพเชฒเชฟเชค เชเชฎเชพเชตเช เชตเชฟเชถเซ เชตเชฟเชเชพเชฐเซ เชฐเชนเซเชฏเชพเช เชเซ เช
เชจเซ เชถเชเซเชฏ เชคเซเชเชฒเซ เชคเชฎเชพเชฐเซ เชธเชพเชเชเชจเซ เชเชกเชชเซ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเชเซ เชเซ? เช เชฒเซเชเชฎเชพเช เชเชชเชฃเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช
เช
เชฎเซ เชเชเซเชฎเซเชถเชจ เชฎเชพเชเซ Gitlab CI/CD เชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช, เชชเชฐเชเชคเซ เชชเซเชฐเชตเซเชเช เชตเชฟเชถเซ เชถเซเช? เชเชพเชฒเซ Cloudflare เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเชพเชเชเชจเซ เชธเซเชงเซ เชฐเซเชคเซ เชเชฎเชพเชตเซเช
เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชถเซเช เชเชฐเซเชฐเซ เชเซ:
-
เชเชฟเชเชฒเซเชฌ (เชคเชฎเชพเชฐเซ เชชเซเชคเชพเชจเซ เช เชฅเชตเชพ
เชตเชพเชฆเชณเชเชพเชฏเซเช ) -
เชเชเชพเชเชจเซเช Cloudflare เชชเชฐ -
เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒ
nodejs/npm
เชญเชพเช 1: เชนเซเชฏเซเชเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชชเชนเซเชฒเชพเชฅเซ เช เชนเซเชฏเซเชเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒ เชเซ, เช เชฅเชตเชพ เชเซ เชคเชฎเซ เช เชฒเช เชธเซเชเซเชเชฟเช เชธเชพเชเช เชเชจเชฐเซเชเชฐ เชชเชธเชเชฆ เชเชฐเซ เชเซ (เช เชฅเชตเชพ เชเชเชจเซ เชเชชเชฏเซเช เชเชฐเชคเชพ เชจเชฅเซ), เชคเซ เชคเชฎเซ เช เชญเชพเช เชเซเชกเซ เชถเชเซ เชเซ.
-
เชฎเชพเชเชฅเซ เชนเซเชฏเซเชเซ เชกเชพเชเชจเชฒเซเชก เชเชฐเซ
https://github.com/gohugoio/hugo/releases -
เช เชฎเซ เชนเซเชฏเซเชเซ เชเชเซเชเซเชเซเชฏเซเชเซเชฌเชฒ เชซเชพเชเชฒเชฎเชพเช เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเชพเชฏเซเชฒเชพ เชเช เช เชจเซเชธเชพเชฐ เชฎเซเชเซเช เชเซเช
เชชเชพเชฅ เชฎเชพเชฐเซเชเซ -
เชจเชตเซ เชธเชพเชเช เชฌเชจเชพเชตเชตเซ:
hugo new site blog.example.com
-
เชตเชฐเซเชคเชฎเชพเชจ เชจเชฟเชฐเซเชฆเซเชถเชฟเชเชพเชจเซ เชจเชตเซ เชฌเชจเชพเชตเซเชฒเซ เชเชเชฎเชพเช เชฌเชฆเชฒเซ:
cd blog.example.com
-
เชกเชฟเชเชพเชเชจ เชฅเซเชฎ เชชเชธเชเชฆ เชเชฐเซ (
https://github.com/budparr/gohugo-theme-ananke/releases เช เชฅเชตเชพ เชเชฎเซ เชคเซ) -
เชเชพเชฒเซ เชชเซเชฐเชฅเชฎ เชชเซเชธเซเช เชฌเชจเชพเชตเซเช:
hugo new posts/my-amazing-post.md
-
เชฌเชจเชพเชตเซเชฒ เชซเชพเชเชฒเชฎเชพเช เชธเชพเชฎเชเซเชฐเซ เชเชฎเซเชฐเซ: content/posts/my-amazing-post.md.
เชเซเชฏเชพเชฐเซ เชฌเชงเซเช เชฅเช เชเชพเชฏ, เชคเซเชฏเชพเชฐเซ เชกเซเชฐเชพเชซเซเช เชตเซเชฒเซเชฏเซเชฎเชพเช เชฌเชฆเชฒเซ เชเซเชเซเช -
เชธเซเชฅเชฟเชฐ เชซเชพเชเชฒเซ เชเชจเชฐเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช:
hugo -D
เชนเชตเซ เช เชฎเชพเชฐเซ เชธเซเชเซเชเชฟเช เชธเชพเชเช เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชธเซเชฅเชฟเชค เชเซ ./เชเชพเชนเซเชฐ เช เชจเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเชฅเชฎ เชฎเซเชจเซเชฏเซเช เชฒ เชเชฎเชพเชตเช เชฎเชพเชเซ เชคเซเชฏเชพเชฐ.
เชญเชพเช 2: Cloudflare เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชนเชตเซ เชเชพเชฒเซ Cloudflare เชจเชพ เชชเซเชฐเชพเชฐเชเชญเชฟเช เชธเซเชเช เชช เชเซเชเช. เชเชพเชฒเซ เชงเชพเชฐเซเช เชเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชชเชนเซเชฒเชพเชฅเซ เช เชธเชพเชเช เชฎเชพเชเซ เชกเซเชฎเซเชจ เชเซ. เชเชพเชฒเซ เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ เชฒเชเช blog.example.com.
เชชเชเชฒเซเช 1: DNS เชเชจเซเชเซเชฐเซ เชฌเชจเชพเชตเซ
เชชเซเชฐเชฅเชฎ, เช
เชฎเชพเชฐเซเช เชกเซเชฎเซเชจ เชชเชธเชเชฆ เชเชฐเซ, เช
เชจเซ เชชเชเซ เชฎเซเชจเซ เชเชเชเชฎ DNS. เช
เชฎเซ เชเช เชฌเซเชฒเซเช เช-เชฐเซเชเซเชฐเซเชก เชฌเชจเชพเชตเซเช เชเซเช เช
เชจเซ เชคเซเชจเชพ เชฎเชพเชเซ เชเซเชเชฒเชพเช เชเชพเชฒเซเชชเชจเชฟเช IP เชธเซเชเชตเซเช เชเซเช (เช เชธเชคเซเชคเชพเชตเชพเชฐ เชเซ
เชชเชเชฒเซเช 2: Cloudflare เชเซเชเชจ
-
เชฎเชพเชฐเซ เชชเซเชฐเซเชซเชพเชเชฒ -> API เชเซเชเชจเซเชธ เชเซเชฌ-> เชเซเชเชจ เชฌเชจเชพเชตเซ -> เชเชธเซเชเชฎ เชเซเชเชจ เชฌเชจเชพเชตเซ
เช เชนเซเช เชคเชฎเชพเชฐเซ เชเซเชเชจเชจเซ เชเชเชพเชเชจเซเชเซเชธ เช เชจเซ เชเซเชจ เชธเซเชงเซ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ, เชชเชฐเชเชคเซ เชเชฟเชคเซเชฐเชฎเชพเช เชธเซเชเชฟเชฌเชฆเซเชง เชชเชฐเชตเชพเชจเชเซเช เชฎเชพเชเซ เชธเชเชชเชพเชฆเชฟเชค เชเชฐเซ เชตเชฟเชเชฒเซเชช เชเซเชกเซ.
เชญเชตเชฟเชทเซเชฏ เชฎเชพเชเซ เชเซเชเชจ เชธเชพเชเชตเซ, เช เชฎเชจเซ เชคเซเชฐเซเชเชพ เชญเชพเชเชฎเชพเช เชคเซเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ.
เชชเชเชฒเซเช 3: เชเชเชพเชเชจเซเชเซเชก เช เชจเซ เชเซเชจเซเชก เชฎเซเชณเชตเซ
เชกเซเชฎเซเชจ โ เชเชพเชเชเซ โ [เชเชฎเชฃเซ เชธเชพเชเชกเชฌเชพเชฐ]
เช เชฎเชพเชฐเชพ เชเซ, เชเซเชชเชพ เชเชฐเซเชจเซ เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเชถเซ เชจเชนเซเช :)
เชคเซเชฎเชจเซ เชเซเชเชจเชจเซ เชฌเชพเชเซเชฎเชพเช เชธเชพเชเชตเซ, เช เชฎเชจเซ เชคเซเชฐเซเชเชพ เชญเชพเชเชฎเชพเช เชชเชฃ เชคเซเชฎเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ.
เชชเชเชฒเซเช 4: เชเชพเชฎเชฆเชพเชฐเซเชจเซ เชธเชเซเชฐเชฟเชฏ เชเชฐเซ
เชกเซเชฎเซเชจ โ เชเชพเชฎเชฆเชพเชฐ โ เชฎเซเชจเซเชเชฎเซเชจเซเช เชเชพเชฎเชฆเชพเชฐเซ
เช เชฎเซ เชเช เช เชจเชจเซเชฏ เชจเชพเชฎ เช เชจเซ เชเซเชฐเชฟเชซ เชตเชฐเซเชเชฐเซเชธ โ เช เชจเชฒเชฟเชฎเชฟเชเซเชก (เชเชเซ เชฆเชฐ เชฎเชนเชฟเชจเซ $5) เชชเชธเชเชฆ เชเชฐเซเช เชเซเช. เชเซ เชคเชฎเซ เชเชเซเชเซ, เชคเซ เชคเชฎเซ เชชเชเซเชฅเซ เชฎเชซเชค เชธเชเชธเซเชเชฐเชฃ เชชเชฐ เช เชชเชเซเชฐเซเชก เชเชฐเซ เชถเชเซ เชเซ.
เชญเชพเช 3: เชชเซเชฐเชฅเชฎ เชเชฎเชพเชตเช (เชฎเซเชจเซเชฏเซเช เชฒ เชเชฎเชพเชตเช)
เชคเซเชฏเชพเช เชเชฐเซเชเชฐ เชถเซเช เชเชพเชฒเซ เชฐเชนเซเชฏเซเช เชเซ เชคเซ เชถเซเชงเชตเชพ เชฎเชพเชเซ เชฎเซเช เชชเซเชฐเชฅเชฎ เชฎเซเชจเซเชฏเซเช เชฒ เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเช เชเชฐเซเชฏเซเช. เชเซ เชเซ เช เชฌเชงเซเช เชธเชฐเชณ เชฐเซเชคเซ เชเชฐเซ เชถเชเชพเชฏ เชเซ:
-
เชฐเซเชเชเชฒเชฐ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
npm i @cloudflare/wrangler -g
-
เชเชพเชฒเซ เชเชชเชฃเชพ เชฌเซเชฒเซเชเชจเซ เชกเชฟเชฐเซเชเซเชเชฐเซ เชชเชฐ เชเชเช:
cd blog.example.com
-
เชฒเซเชจเซเช เชฐเซเชเชเชฒเชฐ:
wrangler init โ site hugo-worker
-
เชฐเซเชเชเชฒเชฐ เชฎเชพเชเซ เชเช เชฐเซเชชเชฐเซเชเชพ เชฌเชจเชพเชตเซ (เชเซเชฏเชพเชฐเซ เชชเซเชเชตเชพเชฎเชพเช เชเชตเซ เชคเซเชฏเชพเชฐเซ เชเซเชเชจ เชฆเชพเชเชฒ เชเชฐเซ):
wrangler config
เชนเชตเซ เชเชพเชฒเซ เชจเชตเซ เชฌเชจเชพเชตเซเชฒเซ เชซเชพเชเชฒเชฎเชพเช เชซเซเชฐเชซเชพเชฐ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช wrangler.toml (
-
เชธเซเชเชตเซ เชเชเชพเชเชจเซเชเซเชก เช เชจเซ เชเซเชจเซเชก
-
เช เชฎเซ เชฌเชฆเชฒเซเช เชเซเช เชฎเชพเชฐเซเช เชเชเชเช เชเซเชฎ เชเซ *blog.example.com/*
-
เชธเซเชเชตเซ เชเซเชเซเช เชฎเชพเชเซ เชเชพเชฎเชฆเชพเชฐเชฆเซเชต
-
เชฌเชเซเชเชจเซ ./public เชฎเชพเช เชฌเชฆเชฒเซ (เช เชฅเชตเชพ เชเซเชฏเชพเช เชคเชฎเชพเชฐเซ เชธเซเชฅเชฟเชฐ เชธเชพเชเช เชธเซเชฅเชฟเชค เชเซ)
-
เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชชเชพเชฅเชฎเชพเช เชเช เชเชฐเชคเชพเช เชตเชงเซ เชกเซเชฎเซเชจ เชเซ, เชคเซ เชคเชฎเชพเชฐเซ เชเชพเชฐเซเชฏเชเชพเชฐเซ เชธเซเชเซเชฐเชฟเชชเซเชเชฎเชพเช เชชเชพเชฅเชจเซ เช เซเช เชเชฐเชตเซ เชเซเชเช: Workers-site/index.js (เชเชพเชฐเซเชฏ เชเซเช เชนเซเชจเซเชกเชฒ เชเชตเซเชจเซเช)
เชธเชฐเชธ, เชเซเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเชพเชเชเชจเซ เชเชฎเชพเชตเชตเชพเชจเซ เชธเชฎเชฏ เชเชตเซ เชเชฏเซ เชเซ wrangler publish
.
เชญเชพเช 4: เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเช เชเชเซเชฎเซเชถเชจ
เช เชฎเชพเชฐเซเชเชฆเชฐเซเชถเชฟเชเชพ เชเชฟเชเชฒเซเชฌ เชฎเชพเชเซ เชฒเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชชเชฐเชเชคเซ เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชธเซเชตเชเชพเชฒเชฟเชค เชเชฎเชพเชตเชเชจเซ เชธเชพเชฐ เช เชจเซ เชธเชฐเชณเชคเชพ เชฎเซเชณเชตเซ เชเซ.
เชชเชเชฒเซเช 1: เช เชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเชจเซ เชฌเชจเชพเชตเซ เช เชจเซ เชเซเช เชตเซ
-
เชจเชตเซ GitLab เชชเซเชฐเซเชเซเชเซเช เชฌเชจเชพเชตเซ เช เชจเซ เชธเชพเชเช เช เชชเชฒเซเชก เชเชฐเซ: เชกเชฟเชฐเซเชเซเชเชฐเซ blog.example.com เชคเชฎเชพเชฎ เชธเชพเชฎเชเซเชฐเซเช เชธเชพเชฅเซ เชชเซเชฐเซเชเซเชเซเช เชฐเซเช เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชธเซเชฅเชฟเชค เชนเซเชตเซเช เชเชตเชถเซเชฏเช เชเซ
-
เช เชฎเซ เชธเซเช เชเชฒ CFAPITOKEN เช เชนเซเช: เชธเซเชเชฟเชเชเซเชธ โ เชธเซเชเช / เชธเซเชกเซ โ เชเชฒเซ
เชชเชเชฒเซเช 2: .gitlab-ci.yml เชซเชพเชเชฒ เชฌเชจเชพเชตเซ เช เชจเซ เชชเซเชฐเชฅเชฎ เชเชฎเชพเชตเช เชเชฒเชพเชตเซ
เชเช เชซเชพเชเชฒ เชฌเชจเชพเชตเซ .gitlab-ci.yml เชจเซเชเซเชจเซ เชธเชพเชฎเชเซเชฐเซ เชธเชพเชฅเซ เชฎเซเชณเชฎเชพเช:
stages:
- build
- deploy
build:
image: monachus/hugo
stage: build
variables:
GIT_SUBMODULE_STRATEGY: recursive
script:
- cd blog.example.com/
- hugo
artifacts:
paths:
- blog.example.com/public
only:
- master # this job will affect only the 'master' branch
tags:
- gitlab-org-docker #
deploy:
image: timbru31/ruby-node:2.3
stage: deploy
script:
- wget https://github.com/cloudflare/wrangler/releases/download/v1.8.4/wrangler-v1.8.4-x86_64-unknown-linux-musl.tar.gz
- tar xvzf wrangler-v1.8.4-x86_64-unknown-linux-musl.tar.gz
- cd blog.example.com/
- ../dist/wrangler publish
artifacts:
paths:
- blog.example.com/public
only:
- master # this job will affect only the 'master' branch
tags:
- gitlab-org-docker #
เช เชฎเซ เชชเซเชฐเชฅเชฎ เชเชฎเชพเชตเช เชฎเซเชจเซเชฏเซเช เชฒเซ เชฒเซเชจเซเช เชเชฐเซเช เชเซเช (CI/CD โ เชชเชพเชเชชเชฒเชพเชเชจเซเชธ โ เชชเชพเชเชชเชฒเชพเชเชจ เชเชฒเชพเชตเซ) เช เชฅเชตเชพ เชฎเซเชเซเชฏ เชถเชพเชเชพเชฎเชพเช เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เชฆเซเชตเชพเชฐเชพ. เชตเซเชเชฒเชพ!
เชจเชฟเชทเซเชเชฐเซเชท
เช เซเช เชเซ, เชฎเซเช เชคเซเชจเซ เชฅเซเชกเซเช เชเชเซเช เชเชฐเซเชฏเซเช เชนเชถเซ, เช เชจเซ เชเชเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช เชฎเชพเชคเซเชฐ เชฆเชธ เชฎเชฟเชจเชฟเชเชจเซ เชธเชฎเชฏ เชฒเชพเชเซเชฏเซ. เชชเชฐเชเชคเซ เชนเชตเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชธเซเชตเชเชพเชฒเชฟเชค เชเชฎเชพเชตเช เชธเชพเชฅเซ เชเช เชเชกเชชเซ เชธเชพเชเช เชเซ เช เชจเซ เชคเชฎเซ เชตเชฐเซเชเชฐเซเชธ เชธเชพเชฅเซ เชฌเซเชเซเช เชถเซเช เชเชฐเซ เชถเชเซ เชคเซ เช เชเชเซเชจเชพ เชเซเชเชฒเชพเช เชจเชตเชพ เชตเชฟเชเชพเชฐเซ เชเซ.
เชธเซเชฐเซเชธ: www.habr.com