เจตเฉเจฌเจฒเจพเจเจเจผเจฐ เจ เจคเฉ เจเฉเจเจฒ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจจเฉ เจเจ เจธเจพเจฒเจพเจ เจคเฉเจ เจตเฉเจฌเจธเจพเจเจเจพเจ 'เจคเฉ เจเฉ เจนเฉ เจฐเจฟเจนเจพ เจนเฉ เจเจธ เจฌเจพเจฐเฉ เจธเจฎเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเฉเจฐเฉ เจฎเจฆเจฆ เจเฉเจคเฉ เจนเฉเฅค เจนเฉเจฃ เจฎเฉเจ เจธเจฎเจเจฆเจพ เจนเจพเจ เจเจฟ เจเจน เจฌเจนเฉเจค เจเฉฑเจ เจเจชเจฏเฉเจเฉ เจเจพเจฃเจเจพเจฐเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเฉ เจนเจจ. เจคเฉเจนเจพเจกเฉ access.log เจซเจพเจเจฒ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจนเฉเจฃ เจจเจพเจฒ, เจ เฉฐเจเฉเจฟเจเจ เจจเฉเฉฐ เจธเจฎเจเจฃเจพ เจ เจคเฉ เจเจพเจซเจผเฉ เจฌเฉเจจเจฟเจเจฆเฉ เจเฉเจฒ, เจเจฟเจตเฉเจ เจเจฟ sqlite, html, sql เจญเจพเจธเจผเจพ เจ เจคเฉ เจเจฟเจธเฉ เจตเฉ เจธเจเฉเจฐเจฟเจชเจเจฟเฉฐเจ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจญเจพเจธเจผเจพ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจเจพ เจฌเจนเฉเจค เจเจธเจพเจจ เจนเฉเฅค
Webalizer เจฒเจ เจกเจพเจเจพ เจธเจฐเฉเจค เจธเจฐเจตเจฐ เจฆเฉ access.log เจซเจพเจเจฒ เจนเฉเฅค เจเจธ เจฆเฉเจเจ เจฌเจพเจฐเจพเจ เจ เจคเฉ เจธเฉฐเจเจฟเจเจตเจพเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉเจเจ เจนเจจ, เจเจฟเจธ เจคเฉเจ เจธเจฟเจฐเจซ เจเฉเจฐเฉเจซเจฟเจ เจฆเฉ เจเฉเฉฑเจฒ เจฎเจพเจคเจฐเจพ เจธเจชเฉฑเจธเจผเจ เจนเฉ:
เจเฉเจฒ เจเจฟเจตเฉเจ เจเจฟ เจเฉเจเจฒ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจชเจฃเฉ เจเจช เจฒเฉเจก เจเฉเจคเฉ เจชเฉฐเจจเฉ เจคเฉเจ เจกเฉเจเจพ เจเจเฉฑเจ เจพ เจเจฐเจฆเฉ เจนเจจเฅค เจเจน เจธเจพเจจเฉเฉฐ เจเฉเจ เจเจฟเฉฑเจคเจฐ เจ
เจคเฉ เจฒเจพเจเจจเจพเจ เจฆเจฟเจเจพเจเจเจฆเฉ เจนเจจ, เจเจฟเจจเฉเจนเจพเจ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจธเจนเฉ เจธเจฟเฉฑเจเฉ เจเฉฑเจขเจฃเฉ เจ
เจเจธเจฐ เจฎเฉเจธเจผเจเจฒ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจธเจผเจพเจเจฆ เจนเฉเจฐ เจเฉเจธเจผเจฟเจธเจผ เจเฉเจคเฉ เจเจพเจฃเฉ เจเจพเจนเฉเจฆเฉ เจธเฉ? เจชเจคเจพ เจจเจนเฉเจเฅค
เจเจธ เจฒเจ, เจฎเฉเจ เจตเฉเจฌเจธเจพเจเจ เจตเจฟเจเจผเจเจฐ เจ เฉฐเจเฉเจฟเจเจ เจตเจฟเฉฑเจ เจเฉ เจฆเฉเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจธเฉ?
เจเจชเจญเฉเจเจคเจพ เจ เจคเฉ เจฌเฉเจ เจเฉเจฐเฉเจซเจฟเจ
เจ เจเจธเจฐ เจธเจพเจเจ เจเฉเจฐเฉเจซเจฟเจ เจธเฉเจฎเจค เจนเฉเฉฐเจฆเจพ เจนเฉ เจ เจคเฉ เจเจน เจฆเฉเจเจฃเจพ เจเจผเจฐเฉเจฐเฉ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟ เจเจฟเฉฐเจจเจพ เจเจชเจฏเฉเจเฉ เจเฉเจฐเฉเจซเจฟเจ เจตเจฐเจคเจฟเจ เจเจพ เจฐเจฟเจนเจพ เจนเฉ. เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจธ เจคเจฐเฉเจนเจพเจ:
SQL เจฐเจฟเจชเฉเจฐเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ
SELECT
1 as 'StackedArea: Traffic generated by Users and Bots',
strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day',
SUM(CASE WHEN USG.AGENT_BOT!='n.a.' THEN FCT.BYTES ELSE 0 END)/1000 AS 'Bots, KB',
SUM(CASE WHEN USG.AGENT_BOT='n.a.' THEN FCT.BYTES ELSE 0 END)/1000 AS 'Users, KB'
FROM
FCT_ACCESS_USER_AGENT_DD FCT,
DIM_USER_AGENT USG
WHERE FCT.DIM_USER_AGENT_ID=USG.DIM_USER_AGENT_ID
AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch'))
ORDER BY FCT.EVENT_DT
เจเฉเจฐเจพเจซ เจฌเฉเจเจพเจ เจฆเฉ เจจเจฟเจฐเฉฐเจคเจฐ เจเจคเฉเจตเจฟเจงเฉ เจฆเจฟเจเจพเจเจเจฆเจพ เจนเฉเฅค เจธเจญ เจคเฉเจ เจตเฉฑเจง เจธเจฐเจเจฐเจฎ เจจเฉเจฎเจพเจเฉฐเจฆเจฟเจเจ เจฆเจพ เจตเจฟเจธเจฅเจพเจฐ เจจเจพเจฒ เจ เจงเจฟเจเจจ เจเจฐเจจเจพ เจฆเจฟเจฒเจเจธเจช เจนเฉเจตเฉเจเจพ.
เจคเฉฐเจ เจเจฐเจจ เจตเจพเจฒเฉ เจฌเฉเจ
เจ เจธเฉเจ เจเจชเจญเฉเจเจคเจพ เจเจเฉฐเจ เจฆเฉ เจเจพเจฃเจเจพเจฐเฉ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจฌเฉเจเจพเจ เจฆเจพ เจตเจฐเจเฉเจเจฐเจจ เจเจฐเจฆเฉ เจนเจพเจเฅค เจฐเฉเจเจผเจพเจจเจพ เจเฉเจฐเฉเจซเจฟเจ 'เจคเฉ เจตเจพเจงเฉ เจ เฉฐเจเฉเฉ, เจธเจซเจฒ เจ เจคเฉ เจ เจธเจซเจฒ เจฌเฉเจจเจคเฉเจเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจฌเฉเจ เจเจคเฉเจตเจฟเจงเฉ เจฆเจพ เจเฉฑเจ เจเฉฐเจเจพ เจตเจฟเจเจพเจฐ เจฆเจฟเฉฐเจฆเฉ เจนเจจเฅค
SQL เจฐเจฟเจชเฉเจฐเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ
SELECT
1 AS 'Table: Annoying Bots',
MAX(USG.AGENT_BOT) AS 'Bot',
ROUND(SUM(FCT.BYTES)/1000 / 14.0, 1) AS 'KB per Day',
ROUND(SUM(FCT.IP_CNT) / 14.0, 1) AS 'IPs per Day',
ROUND(SUM(CASE WHEN STS.STATUS_GROUP IN ('Client Error', 'Server Error') THEN FCT.REQUEST_CNT / 14.0 ELSE 0 END), 1) AS 'Error Requests per Day',
ROUND(SUM(CASE WHEN STS.STATUS_GROUP IN ('Successful', 'Redirection') THEN FCT.REQUEST_CNT / 14.0 ELSE 0 END), 1) AS 'Success Requests per Day',
USG.USER_AGENT_NK AS 'Agent'
FROM FCT_ACCESS_USER_AGENT_DD FCT,
DIM_USER_AGENT USG,
DIM_HTTP_STATUS STS
WHERE FCT.DIM_USER_AGENT_ID = USG.DIM_USER_AGENT_ID
AND FCT.DIM_HTTP_STATUS_ID = STS.DIM_HTTP_STATUS_ID
AND USG.AGENT_BOT != 'n.a.'
AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY USG.USER_AGENT_NK
ORDER BY 3 DESC
LIMIT 10
เจเจธ เจเฉเจธ เจตเจฟเฉฑเจ, เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเจพ เจจเจคเฉเจเจพ เจธเจพเจเจ เจจเฉเฉฐ robots.txt เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจเฉเฉ เจเฉ เจเจธ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจจเฉเฉฐ เจธเฉเจฎเจค เจเจฐเจจ เจฆเจพ เจซเฉเจธเจฒเจพ เจธเฉ
User-agent: AhrefsBot
Disallow: /
User-agent: dotbot
Disallow: /
User-agent: bingbot
Crawl-delay: 5
เจชเจนเจฟเจฒเฉ เจฆเฉ เจฌเฉเจ เจเฉเจฌเจฒ เจคเฉเจ เจเจพเจเจฌ เจนเฉ เจเจ, เจ
เจคเฉ เจเจฎเจเจธ เจฐเฉเจฌเฉเจ เจชเจนเจฟเจฒเฉ เจฒเจพเจเจจเจพเจ เจคเฉเจ เจนเฉเจ เจพเจ เจเจฒเฉ เจเจเฅค
เจธเจญ เจคเฉเจ เจตเฉฑเจกเฉ เจเจคเฉเจตเจฟเจงเฉ เจฆเจพ เจฆเจฟเจจ เจ เจคเฉ เจธเจฎเจพเจ
เจเฉเจฐเฉเจซเจฟเจ เจตเจฟเฉฑเจ เจเจคเจฐเจพเจ -เจเฉเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเฉ เจฐเจนเฉ เจนเจจเฅค เจเจนเจจเจพเจ เจฆเจพ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจ เจ เจงเจฟเจเจจ เจเจฐเจจ เจฒเจ, เจเจนเจจเจพเจ เจฆเฉ เจตเจพเจชเจฐเจจ เจฆเฉ เจธเจฎเฉเจ เจจเฉเฉฐ เจเจเจพเจเจฐ เจเจฐเจจเจพ เจเจผเจฐเฉเจฐเฉ เจนเฉ, เจ เจคเฉ เจธเจฎเฉเจ เจฆเฉ เจฎเจพเจช เจฆเฉ เจธเจพเจฐเฉ เจเฉฐเจเจฟเจเจ เจ เจคเฉ เจฆเจฟเจจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจจเจพ เจเจผเจฐเฉเจฐเฉ เจจเจนเฉเจ เจนเฉเฅค เจเจน เจฒเฉเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจตเจฟเจ เจเจคเฉเจเจค เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ เจฒเฉฑเจญเจฃเจพ เจเจธเจพเจจ เจฌเจฃเจพ เจฆเฉเจตเฉเจเจพ เจเฉเจเจฐ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
SQL เจฐเจฟเจชเฉเจฐเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ
SELECT
1 AS 'Line: Day and Hour of Hits from Users and Bots',
strftime('%d.%m-%H', datetime(EVENT_DT, 'unixepoch')) AS 'Date Time',
HIB AS 'Bots, Hits',
HIU AS 'Users, Hits'
FROM (
SELECT
EVENT_DT,
SUM(CASE WHEN AGENT_BOT!='n.a.' THEN LINE_CNT ELSE 0 END) AS HIB,
SUM(CASE WHEN AGENT_BOT='n.a.' THEN LINE_CNT ELSE 0 END) AS HIU
FROM FCT_ACCESS_REQUEST_REF_HH
WHERE datetime(EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY EVENT_DT
ORDER BY SUM(LINE_CNT) DESC
LIMIT 10
) ORDER BY EVENT_DT
เจ เจธเฉเจ เจเจพเจฐเจ 'เจคเฉ เจชเจนเจฟเจฒเฉ เจฆเจฟเจจ เจฆเฉ เจธเจญ เจคเฉเจ เจตเฉฑเจง เจธเจฐเจเจฐเจฎ เจเฉฐเจเฉ 11, 14 เจ เจคเฉ 20 เจจเฉเฉฐ เจฆเฉเจเจฆเฉ เจนเจพเจเฅค เจชเจฐ เจ เจเจฒเฉ เจฆเจฟเจจ 13:XNUMX เจตเจเฉ เจฌเฉเจ เจธเจฐเจเจฐเจฎ เจธเจจ.
เจนเจซเจผเจคเฉ เจฆเฉเจเจฐเจพ เจเจธเจค เจฐเฉเจเจผเจพเจจเจพ เจเจชเจญเฉเจเจคเจพ เจเจคเฉเจตเจฟเจงเฉ
เจ เจธเฉเจ เจเจคเฉเจตเจฟเจงเฉ เจ เจคเฉ เจเฉเจฐเฉเจซเจฟเจ เจฆเฉ เจจเจพเจฒ เจเฉเจเจผเจพเจ เจจเฉเฉฐ เจฅเฉเฉเจพ เจเจฟเจนเจพ เจเฉเจฐเจฎเจฌเฉฑเจง เจเฉเจคเจพ. เจ เจเจฒเจพ เจธเจตเจพเจฒ เจเฉเจฆ เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจฆเฉ เจเจคเฉเจตเจฟเจงเฉ เจธเฉ. เจ เจเจฟเจนเฉ เจ เฉฐเจเฉเจฟเจเจ เจฒเจ, เจเฉฑเจ เจนเจซเจผเจคเจพ เจตเจฐเจเฉเจเจ เจฒเฉฐเจฎเฉ เจเจเฉฑเจคเจฐเจคเจพ เจฎเจฟเจเจฆเจพเจ เจซเจพเจเจฆเฉเจฎเฉฐเจฆ เจนเจจเฅค
SQL เจฐเจฟเจชเฉเจฐเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ
SELECT
1 as 'Line: Average Daily User Activity by Week',
strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Week',
ROUND(1.0*SUM(FCT.PAGE_CNT)/SUM(FCT.IP_CNT),1) AS 'Pages per IP per Day',
ROUND(1.0*SUM(FCT.FILE_CNT)/SUM(FCT.IP_CNT),1) AS 'Files per IP per Day'
FROM
FCT_ACCESS_USER_AGENT_DD FCT,
DIM_USER_AGENT USG,
DIM_HTTP_STATUS HST
WHERE FCT.DIM_USER_AGENT_ID=USG.DIM_USER_AGENT_ID
AND FCT.DIM_HTTP_STATUS_ID = HST.DIM_HTTP_STATUS_ID
AND USG.AGENT_BOT='n.a.' /* users only */
AND HST.STATUS_GROUP IN ('Successful') /* good pages */
AND datetime(FCT.EVENT_DT, 'unixepoch') > date('now', '-3 month')
GROUP BY strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch'))
ORDER BY FCT.EVENT_DT
เจนเจซเจคเจพเจตเจพเจฐเฉ เจ เฉฐเจเฉเฉ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเจจ เจเจฟ เจเจธเจคเจจ เจเฉฑเจ เจเจชเจญเฉเจเจคเจพ เจชเฉเจฐเจคเฉ เจฆเจฟเจจ 1,6 เจชเฉฐเจจเฉ เจเฉเจฒเฉเจนเจฆเจพ เจนเฉเฅค เจเจธ เจเฉเจธ เจตเจฟเฉฑเจ เจชเฉเจฐเจคเฉ เจเจชเจญเฉเจเจคเจพ เจฌเฉเจจเจคเฉ เจเฉเจคเฉเจเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจธเจพเจเจ เจตเจฟเฉฑเจ เจจเจตเฉเจเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจเฉเฉ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเฉ เจนเฉเฅค
เจธเจพเจฐเฉเจเจ เจฌเฉเจจเจคเฉเจเจ เจ เจคเฉ เจเจนเจจเจพเจ เจฆเฉเจเจ เจธเจฅเจฟเจคเฉเจเจ
Webalizer เจนเจฎเฉเจธเจผเจพ เจเจพเจธ เจชเฉเจ เจเฉเจก เจฆเจฟเจเจพเจเจเจฆเฉ เจนเจจ เจ เจคเฉ เจฎเฉเจ เจนเจฎเฉเจธเจผเจพ เจธเจซเจฒ เจฌเฉเจจเจคเฉเจเจ เจ เจคเฉ เจเจฒเจคเฉเจเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจฆเฉเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจธเฉเฅค
SQL เจฐเจฟเจชเฉเจฐเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ
SELECT
1 as 'Line: All Requests by Status',
strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day',
SUM(CASE WHEN STS.STATUS_GROUP='Successful' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Success',
SUM(CASE WHEN STS.STATUS_GROUP='Redirection' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Redirect',
SUM(CASE WHEN STS.STATUS_GROUP='Client Error' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Customer Error',
SUM(CASE WHEN STS.STATUS_GROUP='Server Error' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Server Error'
FROM
FCT_ACCESS_USER_AGENT_DD FCT,
DIM_HTTP_STATUS STS
WHERE FCT.DIM_HTTP_STATUS_ID=STS.DIM_HTTP_STATUS_ID
AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch'))
ORDER BY FCT.EVENT_DT
เจฐเจฟเจชเฉเจฐเจ เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจฆเฉ เจนเฉ, เจจเจพ เจเจฟ เจเจฒเจฟเฉฑเจ (เจนเจฟเฉฑเจ), LINE_CNT เจฆเฉ เจเจฒเจ, REQUEST_CNT เจฎเฉเจเฉเจฐเจฟเจ เจฆเฉ เจเจฃเจจเจพ COUNT(DISTINCT STG.REQUEST_NK) เจตเจเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเฉเจเจพ เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ เจเจตเฉเจเจเจพเจ เจจเฉเฉฐ เจฆเจฟเจเจพเจเจฃเจพ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, MS เจฌเฉเจเจธ เจเฉฑเจ เจฆเจฟเจจ เจตเจฟเฉฑเจ เจธเฉเจเจเฉเฉ เจตเจพเจฐ robots.txt เจซเจพเจเจฒ เจจเฉเฉฐ เจชเฉเจฒ เจเจฐเจฆเฉ เจนเจจ เจ เจคเฉ, เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจ เจเจฟเจนเฉ เจชเฉเจฒ เจเฉฑเจ เจตเจพเจฐ เจเจฟเจฃเฉ เจเจพเจฃเจเฉเฅค เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจฐเจพเจซ เจตเจฟเฉฑเจ เจเฉฐเจช เจจเฉเฉฐ เจธเฉเจเจพเจฐเฉ เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
เจเฉเจฐเจพเจซ เจคเฉเจ เจคเฉเจธเฉเจ เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจเจฒเจคเฉเจเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ - เจเจน เจเฉเจฐ-เจฎเฉเจเฉเจฆ เจชเฉฐเจจเฉ เจนเจจเฅค เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเจพ เจจเจคเฉเจเจพ เจฐเจฟเจฎเฉเจ เจชเฉฐเจจเจฟเจเจ เจคเฉเจ เจฐเฉเจกเจพเจเจฐเฉเจเจเจธ เจฆเจพ เจเฉเฉ เจธเฉ.
เจฎเจพเฉเฉเจเจ เจฌเฉเจจเจคเฉเจเจ
เจฌเฉเจจเจคเฉเจเจ เจฆเฉ เจตเจฟเจธเจฅเจพเจฐ เจจเจพเจฒ เจเจพเจเจ เจเจฐเจจ เจฒเจ, เจคเฉเจธเฉเจ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจ เฉฐเจเฉเฉ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
SQL เจฐเจฟเจชเฉเจฐเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ
SELECT
1 AS 'Table: Top Error Requests',
REQ.REQUEST_NK AS 'Request',
'Error' AS 'Request Status',
ROUND(SUM(FCT.LINE_CNT) / 14.0, 1) AS 'Hits per Day',
ROUND(SUM(FCT.IP_CNT) / 14.0, 1) AS 'IPs per Day',
ROUND(SUM(FCT.BYTES)/1000 / 14.0, 1) AS 'KB per Day'
FROM
FCT_ACCESS_REQUEST_REF_HH FCT,
DIM_REQUEST_V_ACT REQ
WHERE FCT.DIM_REQUEST_ID = REQ.DIM_REQUEST_ID
AND FCT.STATUS_GROUP IN ('Client Error', 'Server Error')
AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY REQ.REQUEST_NK
ORDER BY 4 DESC
LIMIT 20
เจเจธ เจธเฉเจเฉ เจตเจฟเฉฑเจ เจธเจพเจฐเฉเจเจ เจเจพเจฒเจพเจ เจตเฉ เจธเจผเจพเจฎเจฒ เจนเฉเจฃเจเฉเจเจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, /wp-login.php เจจเฉเฉฐ เจเฉฑเจ เจฌเฉเจจเจคเฉ เจธเจฐเจตเจฐ เจฆเฉเจเจฐเจพ เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ เจฎเฉเฉ เจฒเจฟเจเจฃ เจฒเจ เจจเจฟเจฏเจฎเจพเจ เจจเฉเฉฐ เจตเจฟเจตเจธเจฅเจฟเจค เจเจฐเจเฉ, เจคเฉเจธเฉเจ เจ เจเจฟเจนเฉเจเจ เจฌเฉเจจเจคเฉเจเจ เจฒเจ เจธเจฐเจตเจฐ เจฆเฉ เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจ เจจเฉเฉฐ เจตเจฟเจตเจธเจฅเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจธเจผเฉเจฐเฉเจเจคเฉ เจชเฉฐเจจเฉ 'เจคเฉ เจญเฉเจ เจธเจเจฆเฉ เจนเฉเฅค
เจเจธ เจฒเจ, เจธเจฐเจตเจฐ เจฒเฉเจ เจซเจพเจเจฒ เจฆเฉ เจ เจงเจพเจฐ เจคเฉ เจเฉเจ เจธเจงเจพเจฐเจจ เจฐเจฟเจชเฉเจฐเจเจพเจ เจธเจพเจเจ 'เจคเฉ เจเฉ เจนเฉ เจฐเจฟเจนเจพ เจนเฉ เจฆเฉ เจเฉฑเจ เจชเฉเจฐเฉ เจคเจธเจตเฉเจฐ เจฆเจฟเฉฐเจฆเฉเจเจ เจนเจจ.
เจเจพเจฃเจเจพเจฐเฉ เจเจฟเจตเฉเจ เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉ เจเจพเจตเฉ?
เจเฉฑเจ sqlite เจกเจพเจเจพเจฌเฉเจธ เจเจพเจซเฉ เจนเฉเฅค เจเจ เจเฉเจฌเจฒ เจฌเจฃเจพเจเจ: ETL เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจจเฉเฉฐ เจฒเฉเจ เจเจฐเจจ เจฒเจ เจธเจนเจพเจเจเฅค
เจเฉเจฌเจฒ เจชเฉเจพเจ
เจเจฟเฉฑเจฅเฉ เจ
เจธเฉเจ PHP เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฒเฉเจ เจซเจพเจเจฒเจพเจ เจฒเจฟเจเจพเจเจเฉเฅค เจฆเฉ เจเฉเฉฑเจฒ เจเฉเจฌเจฒเฅค เจเจ เจเจชเจญเฉเจเจคเจพ เจเจเฉฐเจเจพเจ เจ
เจคเฉ เจฌเฉเจจเจคเฉ เจธเจฅเจฟเจคเฉเจเจ เจฆเฉ เจ
เฉฐเจเฉเจฟเจเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจฐเฉเจเจผเจพเจจเจพ เจธเจพเจฐเจฃเฉ เจฌเจฃเจพเจเจเฅค เจฌเฉเจจเจคเฉเจเจ, เจธเจฅเจฟเจคเฉ เจธเจฎเฉเจนเจพเจ เจ
เจคเฉ เจเจเฉฐเจเจพเจ เจฆเฉ เจ
เฉฐเจเฉเจฟเจเจ เจฆเฉ เจจเจพเจฒ เจเฉฐเจเจพเจตเจพเจฐเฅค เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฎเจพเจชเจพเจ เจฆเฉเจเจ เจเจพเจฐ เจธเจพเจฐเจฃเฉเจเจเฅค
เจจเจคเฉเจเจพ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเจพ เจฐเจฟเจฒเฉเจธเจผเจจเจฒ เจฎเจพเจกเจฒ เจนเฉ:
เจกเจพเจเจพ เจฎเจพเจกเจฒ
sqlite เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจตเจธเจคเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจธเจเฉเจฐเจฟเจชเจ:
DDL เจตเจธเจคเฉ เจฐเจเจจเจพ
DROP TABLE IF EXISTS DIM_USER_AGENT;
CREATE TABLE DIM_USER_AGENT (
DIM_USER_AGENT_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
USER_AGENT_NK TEXT NOT NULL DEFAULT 'n.a.',
AGENT_OS TEXT NOT NULL DEFAULT 'n.a.',
AGENT_ENGINE TEXT NOT NULL DEFAULT 'n.a.',
AGENT_DEVICE TEXT NOT NULL DEFAULT 'n.a.',
AGENT_BOT TEXT NOT NULL DEFAULT 'n.a.',
UPDATE_DT INTEGER NOT NULL DEFAULT 0,
UNIQUE (USER_AGENT_NK)
);
INSERT INTO DIM_USER_AGENT (DIM_USER_AGENT_ID) VALUES (-1);
เจธเจเฉเจ
access.log เจซเจพเจเจฒ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจธเจพเจฐเฉเจเจ เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ เจชเฉเฉเจนเจจเจพ, เจชเจพเจฐเจธ เจเจฐเจจเจพ เจ เจคเฉ เจฒเจฟเจเจฃเจพ เจเจผเจฐเฉเจฐเฉ เจนเฉเฅค เจเจน เจเจพเจ เจคเจพเจ เจธเจฟเฉฑเจงเฉ เจธเจเฉเจฐเจฟเจชเจเจฟเฉฐเจ เจญเจพเจธเจผเจพ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจพเจ sqlite เจเฉเจฒเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจฒเฉเจ เจซเจพเจเจฒ เจซเจพเจฐเจฎเฉเจ:
//67.221.59.195 - - [28/Dec/2012:01:47:47 +0100] "GET /files/default.css HTTP/1.1" 200 1512 "https://project.edu/" "Mozilla/4.0"
//host ident auth time method request_nk protocol status bytes ref browser
$log_pattern = '/^([^ ]+) ([^ ]+) ([^ ]+) ([[^]]+]) "(.*) (.*) (.*)" ([0-9-]+) ([0-9-]+) "(.*)" "(.*)"$/';
เจฎเฉเฉฑเจ เจชเฉเจฐเจธเจพเจฐ
เจเจฆเฉเจ เจเฉฑเจเจพ เจกเฉเจเจพ เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจเฉเฉฐเจเฉเจเจ เจฒเจฟเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจเฉ เจฎเจพเจช เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจนเจจเฅค เจซเจฟเจฐ เจฎเจพเจชเจพเจ เจฆเจพ เจนเจตเจพเจฒเจพ เจฌเจฃเจพเจเจฃเจพ เจธเฉฐเจญเจต เจนเฉเจตเฉเจเจพ. เจเจฆเจพเจนเจฐเจจ เจฒเจ, DIM_REFERRER เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ, เจเฉเฉฐเจเฉ เจคเจฟเฉฐเจจ เจเฉเจคเจฐเจพเจ เจฆเจพ เจธเฉเจฎเฉเจฒ เจนเฉเฅค
SQL เจเฉเฉฐเจเฉ เจชเฉเจฐเจธเจพเจฐ เจชเฉเฉฑเจเจเจฟเฉฑเจ
/* Propagate the referrer from access log */
INSERT INTO DIM_REFERRER (HOST_NK, PATH_NK, QUERY_NK, UPDATE_DT)
SELECT
CLS.HOST_NK,
CLS.PATH_NK,
CLS.QUERY_NK,
STRFTIME('%s','now') AS UPDATE_DT
FROM (
SELECT DISTINCT
REFERRER_HOST AS HOST_NK,
REFERRER_PATH AS PATH_NK,
CASE WHEN INSTR(REFERRER_QUERY,'&sid')>0 THEN SUBSTR(REFERRER_QUERY, 1, INSTR(REFERRER_QUERY,'&sid')-1) /* ะพััะตะทะฐะตะผ sid - ัะฟะตัะธัะธะบะฐ ัะผั */
ELSE REFERRER_QUERY END AS QUERY_NK
FROM STG_ACCESS_LOG
) CLS
LEFT OUTER JOIN DIM_REFERRER TRG
ON (CLS.HOST_NK = TRG.HOST_NK AND CLS.PATH_NK = TRG.PATH_NK AND CLS.QUERY_NK = TRG.QUERY_NK)
WHERE TRG.DIM_REFERRER_ID IS NULL
เจเจชเจญเฉเจเจคเจพ เจเจเฉฐเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจชเฉเจฐเจธเจพเจฐเจฃ เจตเจฟเฉฑเจ เจฌเฉเจ เจคเจฐเจ เจธเจผเจพเจฎเจฒ เจนเฉ เจธเจเจฆเจพ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ sql เจธเจจเจฟเฉฑเจชเจ:
CASE
WHEN INSTR(LOWER(CLS.BROWSER),'yandex.com')>0
THEN 'yandex'
WHEN INSTR(LOWER(CLS.BROWSER),'googlebot')>0
THEN 'google'
WHEN INSTR(LOWER(CLS.BROWSER),'bingbot')>0
THEN 'microsoft'
WHEN INSTR(LOWER(CLS.BROWSER),'ahrefsbot')>0
THEN 'ahrefs'
WHEN INSTR(LOWER(CLS.BROWSER),'mj12bot')>0
THEN 'majestic-12'
WHEN INSTR(LOWER(CLS.BROWSER),'compatible')>0 OR INSTR(LOWER(CLS.BROWSER),'http')>0
OR INSTR(LOWER(CLS.BROWSER),'libwww')>0 OR INSTR(LOWER(CLS.BROWSER),'spider')>0
OR INSTR(LOWER(CLS.BROWSER),'java')>0 OR INSTR(LOWER(CLS.BROWSER),'python')>0
OR INSTR(LOWER(CLS.BROWSER),'robot')>0 OR INSTR(LOWER(CLS.BROWSER),'curl')>0
OR INSTR(LOWER(CLS.BROWSER),'wget')>0
THEN 'other'
ELSE 'n.a.' END AS AGENT_BOT
เจเฉเฉฑเจฒ เจธเจพเจฐเจฃเฉเจเจ
เจ เฉฐเจค เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจเฉเฉฑเจฒ เจเฉเจฌเจฒ เจจเฉเฉฐ เจฒเฉเจก เจเจฐเจพเจเจเฉ; เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจฐเฉเจเจผเจพเจจเจพ เจธเจพเจฐเจฃเฉ เจจเฉเฉฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจฒเฉเจก เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ:
เจเฉเฉฑเจฒ เจฒเฉเจก เจเจฐเจจ เจฒเจ SQL เจชเฉเฉฑเจเจเจฟเฉฑเจ
/* Load fact from access log */
INSERT INTO FCT_ACCESS_USER_AGENT_DD (EVENT_DT, DIM_USER_AGENT_ID, DIM_HTTP_STATUS_ID, PAGE_CNT, FILE_CNT, REQUEST_CNT, LINE_CNT, IP_CNT, BYTES)
WITH STG AS (
SELECT
STRFTIME( '%s', SUBSTR(TIME_NK,9,4) || '-' ||
CASE SUBSTR(TIME_NK,5,3)
WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
ELSE '12' END || '-' || SUBSTR(TIME_NK,2,2) || ' 00:00:00' ) AS EVENT_DT,
BROWSER AS USER_AGENT_NK,
REQUEST_NK,
IP_NR,
STATUS,
LINE_NK,
BYTES
FROM STG_ACCESS_LOG
)
SELECT
CAST(STG.EVENT_DT AS INTEGER) AS EVENT_DT,
USG.DIM_USER_AGENT_ID,
HST.DIM_HTTP_STATUS_ID,
COUNT(DISTINCT (CASE WHEN INSTR(STG.REQUEST_NK,'.')=0 THEN STG.REQUEST_NK END) ) AS PAGE_CNT,
COUNT(DISTINCT (CASE WHEN INSTR(STG.REQUEST_NK,'.')>0 THEN STG.REQUEST_NK END) ) AS FILE_CNT,
COUNT(DISTINCT STG.REQUEST_NK) AS REQUEST_CNT,
COUNT(DISTINCT STG.LINE_NK) AS LINE_CNT,
COUNT(DISTINCT STG.IP_NR) AS IP_CNT,
SUM(BYTES) AS BYTES
FROM STG,
DIM_HTTP_STATUS HST,
DIM_USER_AGENT USG
WHERE STG.STATUS = HST.STATUS_NK
AND STG.USER_AGENT_NK = USG.USER_AGENT_NK
AND CAST(STG.EVENT_DT AS INTEGER) > $param_epoch_from /* load epoch date */
AND CAST(STG.EVENT_DT AS INTEGER) < strftime('%s', date('now', 'start of day'))
GROUP BY STG.EVENT_DT, HST.DIM_HTTP_STATUS_ID, USG.DIM_USER_AGENT_ID
sqlite เจกเฉเจเจพเจฌเฉเจธ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจธเจตเจพเจฒเจพเจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค WITH เจตเจฟเฉฑเจ เจกเฉเจเจพ เจ เจคเฉ เจเฉเฉฐเจเฉเจเจ เจฆเฉ เจคเจฟเจเจฐเฉ เจธเจผเจพเจฎเจฒ เจนเฉเฅค เจฎเฉเฉฑเจ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจฎเจพเจชเจพเจ เจฆเฉ เจธเจพเจฐเฉ เจธเฉฐเจฆเจฐเจญเจพเจ เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเจฐเจฆเฉ เจนเฉเฅค
เจธเจผเจฐเจค เจเจคเจฟเจนเจพเจธ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฒเฉเจก เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจจเจนเฉเจ เจฆเฉเจตเฉเจเฉ: CAST(STG.EVENT_DT AS INTEGER) > $param_epoch_from, เจเจฟเฉฑเจฅเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฌเฉเจจเจคเฉ เจฆเจพ เจจเจคเฉเจเจพ เจนเฉ
'FCT_ACCESS_USER_AGENT_DD เจคเฉเจ COALESCE(MAX(EVENT_DT), '3600') LAST_EVENT_EPOCH เจเฉเจฃเฉ'
เจธเจผเจฐเจค เจธเจฟเจฐเจซเจผ เจชเฉเจฐเฉ เจฆเจฟเจจ เจฒเจ เจฒเฉเจก เจนเฉเจตเฉเจเฉ: CAST(STG.EVENT_DT AS INTEGEER) < strftime('%s', เจฎเจฟเจคเฉ ('เจนเฉเจฃ', 'เจฆเจฟเจจ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค'))
เจชเฉฐเจจเจฟเจเจ เจเจพเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจเฉฑเจ เจฌเจฟเฉฐเจฆเฉ เจฆเฉ เจเฉเจ เจเจฐเจเฉ, เจเฉฑเจ เจฎเฉเฉฑเจขเจฒเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค
เจฐเจฟเจชเฉเจฐเจ
เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจตเจฟเจเจผเฉเจ เจฒเจพเจเจเจผเฉเจธเจผเจจ เจชเฉเจฐเจฃเจพเจฒเฉเจเจ เจตเจฟเฉฑเจ, เจกเฉเจเจพเจฌเฉเจธ เจตเจธเจคเฉเจเจ เจฆเฉ เจ เจงเจพเจฐ เจคเฉ เจเฉฑเจ เจฎเฉเจเจพ-เจฎเจพเจกเจฒ เจฌเจฃเจพเจเจฃเจพ, เจซเจฟเจฒเจเจฐเจพเจ เจ เจคเฉ เจเจเฉเจเจฐเจฃ เจจเจฟเจฏเจฎเจพเจ เจจเฉเฉฐ เจเจคเฉเจธเจผเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจเจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉเฅค เจเจเจฐเจเจพเจฐ, เจธเจพเจฐเฉ เจตเจงเฉเจ เจเฉเจฒ เจเฉฑเจ SQL เจชเฉเฉฑเจเจเจฟเฉฑเจ เจคเจฟเจเจฐ เจเจฐเจฆเฉ เจนเจจ.
เจเจธ เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจคเจฟเจเจฐ เจเฉเจคเฉ SQL เจธเจตเจพเจฒเจพเจ เจจเฉเฉฐ เจฌเจฃเจพเจตเจพเจเจเฉ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจตเจฟเจฏเฉเจเจผ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจพเจเจเฉ - เจเจน เจฐเจฟเจชเฉเจฐเจเจพเจ เจนเจจเฅค
เจตเจฟเจเจผเฉเจ เจฒเจพเจเจเจผเฉเจธเจผเจจ
Bluff: JavaScript เจตเจฟเฉฑเจ เจธเฉเฉฐเจฆเจฐ เจเฉเจฐเจพเจซเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจตเจฟเจเจผเฉเจ เจฒเจพเจเจเจผเฉเจธเจผเจจ เจเฉเจฒ เจตเจเฉเจ เจตเจฐเจคเจฟเจ เจเจฟเจ เจธเฉ
เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, PHP เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจธเจพเจฐเฉเจเจ เจฐเจฟเจชเฉเจฐเจเจพเจ เจจเฉเฉฐ เจตเฉเจเจฃเจพ เจ เจคเฉ เจเฉเจฌเจฒเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ html เจซเจพเจเจฒ เจคเจฟเจเจฐ เจเจฐเจจเจพ เจเจผเจฐเฉเจฐเฉ เจธเฉ.
$sqls = array(
'SELECT * FROM RPT_ACCESS_USER_VS_BOT',
'SELECT * FROM RPT_ACCESS_ANNOYING_BOT',
'SELECT * FROM RPT_ACCESS_TOP_HOUR_HIT',
'SELECT * FROM RPT_ACCESS_USER_ACTIVE',
'SELECT * FROM RPT_ACCESS_REQUEST_STATUS',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_PAGE',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_REFERRER',
'SELECT * FROM RPT_ACCESS_NEW_REQUEST',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_SUCCESS',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_ERROR'
);
เจเฉเจฒ เจธเจฟเจฐเจซเจผ เจจเจคเฉเจเจฟเจเจ เจฆเฉเจเจ เจธเจพเจฐเจฃเฉเจเจ เจฆเฉ เจเจฒเจชเจจเจพ เจเจฐเจฆเจพ เจนเฉเฅค
เจธเจฟเฉฑเจเจพ
เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ เจตเฉเจฌ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ, เจฒเฉเจ เจกเฉเจเจพ เจตเฉเจ เจฐเจนเจพเจเจธ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจผเจฐเฉเจฐเฉ เจตเจฟเจงเฉเจเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจฟเจตเฉเจ เจเจฟ เจจเจคเฉเจเจฟเจเจ เจคเฉเจ เจฆเฉเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจกเฉเจเจพ เจฆเฉ เจกเฉเฉฐเจเฉ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจ เจคเฉ เจตเจฟเจเจผเฉเจ เจฒเจพเจเจเจผเฉเจธเจผเจจ เจฒเจ เจธเจฐเจฒ เจเฉเจฒ เจเจพเจซเฉ เจนเจจเฅค
เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ, เจเฉฑเจ เจเจฆเจพเจนเจฐเจจ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจเจธ เจญเฉฐเจกเจพเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ, เจ เจธเฉเจ เจนเฉเจฒเฉ-เจนเฉเจฒเฉ เจฌเจฆเจฒ เจฐเจนเฉ เจฎเจพเจช, เจฎเฉเจเจพเจกเฉเจเจพ, เจเจเฉเจเจฐเจฃ เจชเฉฑเจงเจฐ เจ เจคเฉ เจตเฉฑเจ-เจตเฉฑเจ เจธเจฐเฉเจคเจพเจ เจคเฉเจ เจกเฉเจเจพ เจฆเฉ เจเจเฉเจเจฐเจฃ เจตเจฐเจเฉเจเจ เจฌเจฃเจคเจฐเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจพเจเจเฉเฅค
เจจเจพเจฒ เจนเฉ, เจเจ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจเฉเจฌเจฒ เจฆเฉ เจ เจงเจพเจฐ เจคเฉ เจเจเฉเจเจฒ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจฆเฉ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจ เจธเจฐเจฒ เจเฉเจฒ 'เจคเฉ เจเฉฑเจ เจกเฉเฉฐเจเจพเจ เจจเจพเจฒ เจตเจฟเจเจพเจฐ เจเจฐเฉเจ.
เจเจ เจกเจพเจเจพ เจเฉเจฃเจตเฉฑเจคเจพ เจจเฉเฉฐ เจฎเจพเจชเจฃ เจ เจคเฉ เจเจธ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเจเฉเจฎเฉเจเจฟเจ เจเจฐเจจ เจฆเฉ เจตเจฟเจธเจผเฉ 'เจคเฉ เจตเจพเจชเจธ เจเจเจเจฆเฉ เจนเจพเจเฅค
เจ
เจธเฉเจ เจคเจเจจเฉเจเฉ เจตเจพเจคเจพเจตเจฐเจฃ เจ
เจคเฉ เจกเจพเจเจพ เจธเจเฉเจฐเฉเจ เจฆเฉ เจฐเฉฑเจ-เจฐเจเจพเจ
เจฆเฉเจเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจฆเจพ เจ
เจงเจฟเจเจจ เจเจฐเจพเจเจเฉ, เจเจฟเจธ เจฒเจ เจ
เจธเฉเจ เจเฉฑเจเฉ-เจเฉฑเจ เจธเจฐเฉเจคเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจธเจเฉเจฐเฉเจ เจธเจฐเจตเจฐ เจฒเจพเจเฉ เจเจฐเจพเจเจเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉฑเจ เจฐเจพเจธเจฌเฉเจฐเฉ เจชเจพเจ 'เจคเฉ เจเจงเจพเจฐเจฟเจคเฅค
เจธเจฐเฉเจค: www.habr.com