د سایټ احصایې او ستاسو خپل کوچني ذخیره

Webalizer او Google Analytics ما سره مرسته کړې چې د ډیرو کلونو لپاره په ویب پاڼو کې څه پیښیږي په اړه بصیرت ترلاسه کړي. اوس زه پوهیږم چې دوی خورا لږ ګټور معلومات چمتو کوي. ستاسو د access.log فایل ته د لاسرسي په درلودلو سره د احصایو پوهیدل خورا اسانه دي او د کافي لومړني وسیلو پلي کول لکه sqlite, html, sql ژبه او د سکریپټینګ برنامې ژبه.

د ویبالیزر لپاره د معلوماتو سرچینه د سرور 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

په دې حالت کې، د تحلیل پایله دا وه چې سایټ ته د روبوټس.txt فایل کې اضافه کولو سره د لاسرسي محدودولو پریکړه

User-agent: AhrefsBot
Disallow: /
User-agent: dotbot
Disallow: /
User-agent: bingbot
Crawl-delay: 5

لومړی دوه بوټونه د میز څخه ورک شوي، او د MS روبوټونه د لومړي کرښو څخه ښکته شوي.

د لوی فعالیت ورځ او وخت

په ټرافیک کې لوړوالی لیدل کیږي. د دوی په تفصیل سره مطالعه کولو لپاره، دا اړینه ده چې د دوی د پیښې وخت روښانه کړئ، او دا اړینه نده چې د وخت اندازه کولو ټول ساعتونه او ورځې ښکاره کړئ. دا به د لاګ فایل کې د انفرادي غوښتنو موندل اسانه کړي که تفصيلي تحلیل ته اړتیا وي.

د سایټ احصایې او ستاسو خپل کوچني ذخیره

د 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 پروسو د ننوتلو لپاره معاون.

د سایټ احصایې او ستاسو خپل کوچني ذخیره

د جدول مرحله چیرې چې موږ به د پی ایچ پی په کارولو سره د لاګ فایلونه ولیکو. دوه ټولیز میزونه. راځئ چې د کارونکي اجنټانو او غوښتنې وضعیتونو په اړه احصایو سره ورځنی میز جوړ کړو. د غوښتنو، حالت ګروپونو او اجنټانو په اړه د احصایو سره ساعت په ساعت کې. د اړونده اندازه کولو څلور جدولونه.

پایله لاندې اړونده ماډل دی:

د معلوماتو ماډلد سایټ احصایې او ستاسو خپل کوچني ذخیره

په 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 snippet:


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 څخه د LAST_EVENT_EPOCH په توګه COALESCE(MAX(EVENT_DT)، '3600' وټاکئ'

حالت به یوازې ټوله ورځ پورته شي: CAST(STG.EVENT_DT AS INTEGER) < strftime('%s', date('اوس', 'د ورځې پیل'))

د مخونو یا فایلونو شمیرل په ابتدايي ډول ترسره کیږي، د یوې نقطې په لټه کې دي.

راپورونه

په پیچلي لید سیسټمونو کې ، دا ممکنه ده چې د ډیټابیس شیانو پراساس میټا ماډل رامینځته کړئ ، په متحرک ډول فلټرونه او د راټولولو مقررات اداره کړئ. په نهایت کې ، ټول ښه وسیلې د SQL پوښتنې رامینځته کوي.

په دې مثال کې، موږ به چمتو شوي SQL پوښتنې جوړې کړو او دوی به په ډیټابیس کې د نظرونو په توګه خوندي کړو - دا راپورونه دي.

لید

بلف: په جاواسکریپټ کې ښکلي ګرافونه د لید لید وسیلې په توګه کارول شوي

د دې کولو لپاره، دا اړینه وه چې د 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'
);

وسیله په ساده ډول د پایلو جدولونه ګوري.

پایلې

د مثال په توګه د ویب تحلیل کارول، مقاله د معلوماتو ګودامونو جوړولو لپاره اړین میکانیزمونه بیانوي. لکه څنګه چې د پایلو څخه لیدل کیدی شي، ساده وسیلې د ډیټا ژور تحلیل او لید لپاره کافي دي.

په راتلونکي کې، د مثال په توګه د دې زیرمې په کارولو سره، موږ به هڅه وکړو چې داسې جوړښتونه پلي کړو لکه ورو ورو بدلیدونکي ابعاد، میټاډاټا، د راټولولو کچه او د مختلفو سرچینو څخه د معلوماتو ادغام.

همچنان ، راځئ چې د یو واحد میز پراساس د ETL پروسو اداره کولو لپاره ترټولو ساده وسیلې ته نږدې کتنه وکړو.

راځئ چې د معلوماتو کیفیت اندازه کولو او د دې پروسې اتومات کولو موضوع ته راستون شو.

موږ به د تخنیکي چاپیریال ستونزې مطالعه کړو او د ډیټا ذخیره کولو ساتنه وکړو، د کوم لپاره چې موږ به د ذخیره کولو سرور د لږترلږه سرچینو سره پلي کړو، د بیلګې په توګه، د Raspberry Pi پراساس.

سرچینه: www.habr.com

Add a comment