เชถเซเชญ เชฆเชฟเชตเชธ, เชนเซเชฌเซเชฐ!
เชเชเซ เชนเซเช เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเช เชฐเซเชค เชถเซเชฐ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช
เชชเชฐเชฟเชเชฏ
DevOps เชเซเชตเชพ เชธเชเชเซเชทเซเชช เชนเชตเซ IT เชธเชฎเซเชฆเชพเชฏ เชฎเชพเชเซ เชเชเชเช เชจเชตเซเช เชจเชฅเซ. เชเชฃเชพ เชฒเซเชเซ เชฎเชพเชเซ, "เชกเซ DevOps" เชตเชพเชเซเชฏ เช เชฎเซเช เชชเซเชฐเชเชพเชฐเชจเชพ เชเชพเชฆเซเช เชฌเชเชจ เชธเชพเชฅเซ เชธเชเชเชณเชพเชฏเซเชฒเซเช เชเซ, เชเซเชฏเชพเชฐเซ เชเซเชฒเชฟเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชเซเชก เชเชชเชฎเซเชณเซ เชเชฎเชพเชตเช เชเชฐเซเชฒ เช เชจเซ เชชเชฐเซเชเซเชทเชฃ เชเชฐเซเชฒ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช เชซเซเชฐเชตเชพเชฏ เชเซ (เชฌเชงเซเช เชเชฐเซเชเชฐ เชตเชงเซ เชเชเชฟเชฒ เชเซ, เชชเชฐเชเชคเซ เช เชฎเซ เชฌเชงเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชฅเซ เช เชฎเซเชฐเซเชค เชเซเช).
เชคเซเชฅเซ, เช เชฎเชจเซ เชเชตเชพ เชเชพเชฆเซเช เชฌเชเชจ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชกเชฐ เชฎเชณเซเชฏเซ เชเซเชฅเซ เชเชฐเซเชจเซ เชเชกเชฎเชฟเชจเชฟเชธเซเชเซเชฐเซเชเชฐเซเชธ เชเช เชเซเชฒเชฟเช เชธเชพเชฅเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเชฎเชพเชตเซ เชถเชเซ. เช เชเชพเชฐเซเชฏเชจเชพ เช เชฎเชฒเซเชเชฐเชฃเชจเชพ เชตเชฟเชตเชฟเชง เชชเซเชฐเชเชพเชฐเซ เชเซ: เชเซเชเชชเชฃ เชเชจเซเชธเซเชเชจเซเช เชฎเซเชธเซเชจเซเชเชฐ เชฎเชพเชเซ เชฌเซเช เชฒเชเชตเชพเชฅเซ เชฒเชเชจเซ เชเช เช เชฒเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชตเชฟเชเชธเชพเชตเชตเชพ เชธเซเชงเซ. เชคเซเชฎ เชเชคเชพเช, เช เชฌเชงเชพเชจเซ เชเช เช เชงเซเชฏเซเชฏ เชเซ - เชเชชเซเชฒเซเชเซเชถเชจเชจเชพ เชจเชฟเชฐเซเชฎเชพเชฃ เช เชจเซ เชเชฎเชพเชตเชเชจเซ เชถเชเซเชฏ เชคเซเชเชฒเซเช เชชเชพเชฐเชฆเชฐเซเชถเช เช เชจเซ เช เชจเซเชเซเชณ เชฌเชจเชพเชตเชตเชพเชจเซเช.
เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช เช เชฎเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช เชเซเชจเชเชฟเชจเซเชธ.
เชเชฆเซเชฆเซเชถ
เชเช เช เชจเซเชเซเชณ เชเซเชจเชเชฟเชจเซเชธ เชเซเชฌ เชฌเชจเชพเชตเซ เชเซ เชเซเชเซเชเชธ เชตเชฐเซเชเชจเชจเซ เชชเชธเชเชฆ เชเชฐเซเชฒเซ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธเชจเซเช เชฌเชฟเชฒเซเชก เช เชจเซ (เช เชฅเชตเชพ) เชเชฎเชพเชตเช เชถเชฐเซ เชเชฐเชถเซ.
เชเชจเชชเซเช เชกเซเชเชพ
เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชตเชฟเชตเชฟเชง เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธเซเชธเชจเชพ เชธเซเชคเซเชฐเซเชค เชเซเชก เชงเชฐเชพเชตเชคเซ เชเชฃเซ เชฐเซเชชเซเชเซเชเชฐเซเช เชเซ.
เชชเชฐเชฟเชฎเชพเชฃเซ เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค
เชจเซเชเซเชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ เช เชฎเชพเชฐเซ เชจเซเชเชฐเซเชฎเชพเช เชเชจเชชเซเช เชคเชฐเซเชเซ เชชเซเชฐเชพเชชเซเชค เชฅเชตเชพ เชเซเชเช:
- เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชเซเชก เชธเชพเชฅเซเชจเชพ เชญเชเชกเชพเชฐเชจเซเช URL เชเซ เชเซ เช เชฎเซ เชเชพเชฎ เชเชฒเชพเชตเชคเซ เชตเชเชคเซ เชฌเชฟเชฒเซเชก เชเชฐเชตเชพ เช เชจเซ เชเชฎเชพเชตเชตเชพ เชฎเชพเชเชเซเช เชเซเช.
- เชเชฎเชฟเชเชจเซเช ID เชเซเชฎเชพเชเชฅเซ เชฌเชฟเชฒเซเชก เชฅเชถเซ.
เชเซเชฎ เชเซ
เช เชเชพเชฐเซเชฏเชจเซ เชชเซเชฐเซเชฃ เชเชฐเชตเชพเชจเซ เชธเซเชฅเซ เชธเชฐเชณ เชฐเซเชค เช เชเซ เชเซ เชธเซเชเซเชฐเชฟเชเช เชชเซเชฐเชเชพเชฐเชจเชพ เชฌเซ เชชเชฐเชฟเชฎเชพเชฃเซ เชฌเชจเชพเชตเชตเชพ.
เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชฐเซเชชเซเชเซเชเชฐเซ เช เชจเซ เชเชฎเชฟเช เชเชเชกเซเชจเซ เชฎเชพเชฐเซเช เชเชพเชคเซ เชฆเชพเชเชฒ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ, เชเซ เชคเชฎเซ เชเซเช เชเซ, เชคเซ เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เช เชจเซเชเซเชณ เชจเชฅเซ.
เชฌเชจเชตเซเช เชเซ
เชนเชตเซ เชเชพเชฒเซ เชคเซเชจเชพ เชคเชฎเชพเชฎ เชซเชพเชฏเชฆเชพเชเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชตเชพ เชฎเชพเชเซ เช
เชจเซเชฏ เชชเซเชฐเชเชพเชฐเชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช.
เชเชพเชฒเซ เชชเซเชฐเชเชพเชฐ เชเซเชเชธ เชชเซเชฐเชพเชฎเซเชเชฐ เชธเชพเชฅเซ เชชเซเชฐเชฅเชฎ เชชเซเชฐเชพเชฎเซเชเชฐ เชฌเชจเชพเชตเซเช, เชฌเซเชเซเช - เชเชเซเชเชฟเชต เชเซเชเชธ เชฐเชฟเชเชเซเชเชฟเชต เชฐเซเชซเชฐเชจเซเชธ เชชเซเชฐเชพเชฎเซเชเชฐ. เชเซเชเชธ เชเชพเชเชช เชธเชพเชฅเซเชจเชพ เชชเซเชฐเชพเชฎเซเชเชฐเชฎเชพเช, เช
เชฎเซ เชฎเซเชจเซเชฏเซเช
เชฒเซ เชเซเชเชธ เชซเซเชฒเซเชกเชฎเชพเช เชฐเชฟเชชเซเชเซเชเชฐเซเชเชจเชพ เชจเชพเชฎ เชเชฎเซเชฐเซเชถเซเช เชเซเชฏเชพเช เช
เชฎเชพเชฐเซ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธเซเชธเชจเซ เชเซเชก เชธเชเชเซเชฐเชนเชฟเชค เชเซ.
เชเซ เชชเซเชฐเซเชเซเชทเชเซเชจเซ เช เชฒเซเช เชเชฎเชคเซ เชนเซเชฏ, เชคเซ เชชเชเซเชจเชพ เชฒเซเชเชฎเชพเช เชนเซเช เชเซเชก เชฆเซเชตเชพเชฐเชพ เชตเชฐเซเชฃเชจ (เชเซเชก เชคเชฐเซเชเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ) เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชจเชเชฟเชจเซเชธเชฎเชพเช เชเชพเชฐเซเชฏเซเชจเซ เชเซเช เชตเชตเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเซเชถ, เชเชเชฒเซ เชเซ. เช เชฎเชพเชฐเซ เชฎเซเชจเซเชฏเซเช เชฒเซ เชฐเชฟเชชเซเชเซเชเชฐเซเชจเชพ เชจเชพเชฎ เชฆเชพเชเชฒ เชเชฐเชตเชพเชจเซ เช เชจเซ เชชเชฐเชฟเชฎเชพเชฃเซ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชฐเชนเซเชถเซ เชจเชนเซเช, เชฌเชงเซเช เชเชชเชฎเซเชณเซ เชฅเชถเซ (เช เชฎเชพเชฐเซ เชเซเชก SCM เชคเชฐเชซเชฅเซ เชฐเชฟเชชเซเชเซเชเชฐเซเชเชจเซ เชธเซเชเชฟ เชชเซเชฐเชพเชชเซเชค เชเชฐเชถเซ เช เชจเซ เช เชธเซเชเชฟ เชธเชพเชฅเซ เชเช เชชเชฐเชฟเชฎเชพเชฃ เชฌเชจเชพเชตเชถเซ).
เชฌเซเชเชพ เชชเชฐเชฟเชฎเชพเชฃเชจเชพ เชฎเซเชฒเซเชฏเซ เชเชคเชฟเชถเซเชฒ เชฐเซเชคเซ เชญเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ, เชชเซเชฐเชฅเชฎ เชชเชฐเชฟเชฎเชพเชฃ เชถเซเช เชฎเซเชฒเซเชฏ เชฒเซ เชเซ เชคเซเชจเชพ เชเชงเชพเชฐเซ (test1 เช เชฅเชตเชพ test2), เชเชพเชฐเชฃ เชเซ เชฆเชฐเซเช เชฐเซเชชเซเชเซเชเชฐเซเชจเซ เชชเซเชคเชพเชจเซ เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพเชเชจเซ เชธเซเชเชฟ เชนเซเชฏ เชเซ.
เชธเชเซเชฐเชฟเชฏ เชชเชธเชเชฆเชเซเช เชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพเชถเซเชฒ เชธเชเชฆเชฐเซเชญ เชชเชฐเชฟเชฎเชพเชฃ เชญเชฐเชตเชพ เชฎเชพเชเซ เชจเซเชเซเชจเชพ เชเซเชทเซเชคเซเชฐเซ เชเซ:
- เชจเชพเชฎ - เชชเชฐเชฟเชฎเชพเชฃ เชจเชพเชฎ.
- เชธเซเชเซเชฐเชฟเชชเซเช โ เชเซเชก เชเซ เชเซ เชฆเชฐ เชตเชเชคเซ เชธเชเชฆเชฐเซเชญเชฟเชค เชชเซเชฐเชพเชฎเซเชเชฐ เชซเซเชฒเซเชกเชฎเชพเชเชฅเซ เชชเซเชฐเชพเชฎเซเชเชฐเชจเซเช เชฎเซเชฒเซเชฏ เชฌเชฆเชฒเชพเชฏ เชคเซเชฏเชพเชฐเซ เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ (เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเซเชฏเชพเชฐเซ เชเชชเชฃเซ test1 เช เชจเซ test2 เชตเชเซเชเซ เชชเชธเชเชฆ เชเชฐเซเช เชเซเช).
- เชตเชฐเซเชฃเชจ - เชชเชฐเชฟเชฎเชพเชฃเชจเซเช เชธเชเชเซเชทเชฟเชชเซเชค เชตเชฐเซเชฃเชจ.
- เชชเชธเชเชฆเชเซเชจเซ เชชเซเชฐเชเชพเชฐ - เชธเซเชเซเชฐเชฟเชชเซเช เชฆเซเชตเชพเชฐเชพ เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฒ เชเชฌเซเชเซเชเซเชเชจเซ เชชเซเชฐเชเชพเชฐ (เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช เช เชฎเซ HTML เชเซเชก เชชเชฐเชค เชเชฐเซเชถเซเช).
- เชธเชเชฆเชฐเซเชญเชฟเชค เชชเชฐเชฟเชฎเชพเชฃ - เชชเซเชฐเชพเชฎเซเชเชฐเชจเซเช เชจเชพเชฎ, เชเซเชฏเชพเชฐเซ เชคเซเชจเซเช เชฎเซเชฒเซเชฏ เชฌเชฆเชฒเชพเชถเซ, เชคเซเชฏเชพเชฐเซ เชธเซเชเซเชฐเชฟเชชเซเช เชตเชฟเชญเชพเชเชฎเชพเชเชฅเซ เชเซเชก เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชเชพเชฒเซ เช เชชเชฐเชฟเชฎเชพเชฃเชฎเชพเช เชธเซเชฅเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชซเซเชฒเซเชก เชญเชฐเชตเชพ เชฎเชพเชเซ เชธเซเชงเชพ เช เชเชเชณ เชตเชงเซเช. เช
เชฎเชจเซ เชชเชธเชเชฆ เชเชฐเชตเชพ เชฎเชพเชเซ เชฌเซ เชชเซเชฐเชเชพเชฐเชจเชพ เช
เชฎเชฒเซเชเชฐเชฃเชจเซ เชเชซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ: เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชฐเซเชตเซ เชธเซเชเซเชฐเชฟเชชเซเช เช
เชฅเชตเชพ เชธเซเชเซเชฐเชฟเชชเซเชเชฐ เชธเซเชเซเชฐเชฟเชชเซเช.
เช
เชฎเซ เชชเซเชฐเชฅเชฎ เชชเชธเชเชฆ เชเชฐเซเช เชเซเช, เชเชพเชฐเชฃ เชเซ เชธเซเชเซเชฐเชฟเชชเซเชเชฒเชฐ เช เชซเชเซเชค เชเช เชชเซเชฒเชเชเชจ เชเซ เชเซ เชคเชฎเซ เช
เชเชพเช เชฒเชเซเชฒเซ เชธเซเชเซเชฐเชฟเชชเซเชเซเชจเซ เชธเชพเชเชตเซ เชเซ เช
เชจเซ เชคเชฎเชจเซ เชซเชฐเซเชฅเซ เชเซเชชเชฟ-เชชเซเชธเซเช เชเชฐเซเชฏเชพ เชตเชฟเชจเชพ เช
เชจเซเชฏ เชเชพเชฐเซเชฏเซเชฎเชพเช เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชชเชธเชเชฆ เชเชฐเซเชฒ เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเชเชฅเซ เชคเชฎเชพเชฎ เชเชฎเชฟเช เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ เชเซเชฐเซเชตเซ เชเซเชก:
AUTH = "ะปะพะณะธะฝ ะธ ะฟะฐัะพะปั ะฒ Base64"
GIT_URL = "url ะดะพ ะฒะฐัะตะน SCM (https://bitbucket.org/)"
PROJECT_NAME = "ะธะผั ะฟัะพะตะบัะฝะพะน ะพะฑะปะฐััะธ, ะณะดะต ะฝะฐั
ะพะดัััั ัะตะฟะพะทะธัะพัะธะธ"
def htmlBuild() {
html = """
<html>
<head>
<meta charset="windows-1251">
<style type="text/css">
div.grayTable {
text-align: left;
border-collapse: collapse;
}
.divTable.grayTable .divTableCell, .divTable.grayTable .divTableHead {
padding: 0px 3px;
}
.divTable.grayTable .divTableBody .divTableCell {
font-size: 13px;
}
</style>
</head>
<body>
"""
def commitOptions = ""
getCommitsForMicroservice(MICROSERVICE_NAME).each {
commitOptions += "<option style='font-style: italic' value='COMMIT=${it.getKey()}'>${it}</option>"
}
html += """<p style="display: inline-block;">
<select id="commit_id" size="1" name="value">
${commitOptions}
</select></p></div>"""
html += """
</div>
</div>
</div>
</body>
</html>
"""
return html
}
def getCommitsForMicroservice(microserviceRepo) {
def commits = [:]
def endpoint = GIT_URL + "/rest/api/1.0/projects/${PROJECT_NAME}/repos/${microserviceRepo}/commits"
def conn = new URL(endpoint).openConnection()
conn.setRequestProperty("Authorization", "Basic ${AUTH}")
def response = new groovy.json.JsonSlurper().parseText(conn.content.text)
response.values.each {
commits.put(it.displayId, it.message)
}
return commits
}
return htmlBuild()
เชตเชฟเชเชคเซเชฎเชพเช เชเชฏเชพ เชตเชฟเชจเชพ, เช เชเซเชก เชเชจเชชเซเช เชคเชฐเซเชเซ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชจเชพเชฎ (MICROSERVICE_NAME) เชฎเซเชณเชตเซ เชเซ เช
เชจเซ เชคเซเชจเซ เชตเชฟเชจเชเชคเซ เชฎเซเชเชฒเซ เชเซ เชฌเซเชเชฌเชเซเช (เชชเชฆเซเชงเชคเชฟ เชฎเชพเชเชเซเชฐเซ เชธเชฐเซเชตเชฟเชธ เชฎเชพเชเซ เชเชฎเซเช เชฎเซเชณเชตเซ) เชคเซเชจเชพ API เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ, เช
เชจเซ เชเชชเซเชฒ เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชฎเชพเชเซ เชคเชฎเชพเชฎ เชเชฎเชฟเชเซเชธเชจเชพ id เช
เชจเซ เชเชฎเชฟเช เชฎเซเชธเซเช เชฎเซเชณเชตเซ เชเซ.
เช
เชเชพเช เชธเซเชเชตเซเชฏเชพ เชฎเซเชเชฌ, เช เชเซเชกเซ html เชชเชพเชเซเช เชเชชเชตเซเช เชเซเชเช เชเซ เชชเซเชทเซเช เชชเชฐ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชถเซ เชชเชฐเชฟเชฎเชพเชฃเซ เชธเชพเชฅเซ เชฌเชจเชพเชตเซ เชเซเชจเชเชฟเชจเซเชธเชฎเชพเช, เชคเซเชฅเซ เช
เชฎเซ Bitbucket เชฎเชพเชเชฅเซ เชคเชฎเชพเชฎ เชชเซเชฐเชพเชชเซเชค เชฎเซเชฒเซเชฏเซเชจเซ เชธเซเชเชฟเชฎเชพเช เชฒเชชเซเชเซเช เชเซเช เช
เชจเซ เชคเซเชฎเชจเซ เชชเชธเชเชฆ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฎเซเชฐเซเช เชเซเช.
เชฌเชงเชพเช เชชเชเชฒเชพเช เชชเซเชฐเชพเช เชเชฐเซเชฏเชพ เชชเชเซ เชเชชเชฃเชจเซ เชเชตเซเช เชธเซเชเชฆเชฐ เชชเชพเชจเซเช เชฎเชณเชตเซเช เชเซเชเช เชชเชฐเชฟเชฎเชพเชฃเซ เชธเชพเชฅเซ เชฌเชจเชพเชตเซ.
เชเซ เชคเชฎเซ เชเซเชธเซเช1 เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชชเชธเชเชฆ เชเชฐเซ เชเซ:
เชเซ เชคเชฎเซ เชเซเชธเซเช2 เชฎเชพเชเชเซเชฐเซเชธเชฐเซเชตเชฟเชธ เชชเชธเชเชฆ เชเชฐเซ เชเซ:
เชธเชเชฎเชค เชฅเชพเช เชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชฎเชพเชเซ เชฆเชฐ เชตเชเชคเซ url เชจเซ เชจเชเชฒ เชเชฐเชตเชพ เช เชจเซ เชเชฐเซเชฐเซ เชเชฎเชฟเช เชเชเชกเซ เชถเซเชงเชตเชพ เชเชฐเชคเชพเช เช เชฐเซเชคเซ เชคเชฎเชพเชฐเชพ เชเชพเชฐเซเชฏ เชธเชพเชฅเซ เชเซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเซ เชตเชงเซ เช เชจเซเชเซเชณ เชฐเชนเซเชถเซ.
PS เช เชฒเซเช เชเช เชเซเชฌ เช เชธเชฐเชณ เชเชฆเชพเชนเชฐเชฃ เชชเซเชฐเซ เชชเชพเชกเซ เชเซ, เชเซ เช เชซเซเชฐเซเชฎเชฎเชพเช เชตเซเชฏเชตเชนเชพเชฐเชฟเช เชฐเซเชคเซ เชเชชเชฏเซเชเซ เชจ เชนเซเช เชถเชเซ, เชเชพเชฐเชฃ เชเซ เชเชธเซเชฎเซเชฌเชฒเซเชฎเชพเช เชเชฃเชพ เชตเชงเซ เชตเชฟเชตเชฟเชง เชชเชฐเชฟเชฎเชพเชฃเซ เชนเซเชฏ เชเซ, เชชเชฐเชเชคเซ เช เชฒเซเชเชจเซ เชนเซเชคเซ เชเชพเชฐเซเชฏเชเชพเชฐเซ เชเชเซเชฒ เชชเซเชฐเซ เชชเชพเชกเชตเชพเชจเซ เชจเชนเซเช เชชเชฃ เชธเชพเชงเชจ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ เชคเซ เชฌเชคเชพเชตเชตเชพเชจเซ เชนเชคเซ.
PSS เชฎเซเช เช เชเชพเช เชฒเชเซเชฏเซเช เชคเซเชฎ, เชเซ เช เชฒเซเช เชเชชเชฏเซเชเซ เชเซ, เชคเซ เชชเชเซเชจเซ เชฒเซเช เชคเซเชจเชพ เชตเชฟเชถเซ เชนเชถเซ เชเซเชก เชฆเซเชตเชพเชฐเชพ เชเซเชจเชเชฟเชจเซเชธ เชเชพเชฐเซเชฏเซเชจเซ เชเชคเชฟเชถเซเชฒ เชเซเช เชตเชฃเซ.
เชธเซเชฐเซเชธ: www.habr.com