Api Π΄ΠΈΡΠΊΠ° ΡΠ½Π΄Π΅ΠΊΡ: ΠΠΎΠ²ΡΠΉ REST API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° ΠΈ ΠΠΎΠ»ΠΈΠ³ΠΎΠ½. Π ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΠΈΡΠΊΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ API ΠΈ ΠΊΠ°ΠΊ ΠΌΡ Π΅Π³ΠΎ Π΄Π΅Π»Π°Π»ΠΈ
ΠΠΎΠ²ΡΠΉ REST API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° ΠΈ ΠΠΎΠ»ΠΈΠ³ΠΎΠ½. Π ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΠΈΡΠΊΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ API ΠΈ ΠΊΠ°ΠΊ ΠΌΡ Π΅Π³ΠΎ Π΄Π΅Π»Π°Π»ΠΈ
ΠΠ½ΠΎΠ³ΠΈΠ΅ Π·Π½Π°ΡΡ, ΡΡΠΎ Ρ ΠΠΈΡΠΊΠ° ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ Π΅ΡΡΡ API Π½Π° WebDAV. ΠΠ½ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ·ΠΊΠΎ Π·Π°ΡΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ, Π° Ρ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°ΡΡ Π½Π΅ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅, Π½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΡΡΠ½ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ WebDAV ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ REST API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄Π΅Π»Π°ΡΡ Π²ΡΡ ΡΠΎ ΠΆΠ΅ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ API Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΡΠ°ΠΉΠ»Ρ Π² ΠΠΈΡΠΊΠ΅, ΡΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Π»Π΅ΠΆΠ°ΡΠ΅ΠΉ Π² ΠΠΈΡΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ Β«ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ». Π WebDAV API ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΡ/ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΠΈΡΠΊΠ°, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ.
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ Ρ Ρ
ΠΎΡΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΈΠ»ΠΈ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π°Ρ API β ΡΠ°ΠΌ Π²ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ β Π° ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π²Π΅ΡΠ°ΠΌ: ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Hypermedia ΠΈ Machine-readable and Self-describing API, ΠΈ ΠΊΠ°ΠΊ ΠΌΡ Π²ΡΠ΅ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ.
Hypermedia API
ΠΡ ΡΠ½Π°Π±Π΄ΠΈΠ»ΠΈ Π½Π°Ρ API Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ΅ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ· Π΄ΡΡΠ³Π°Π½ΡΡ Π·Π°Ρ Π°ΡΠ΄ΠΊΠΎΠ΄Π΅Π½Π½ΡΡ URL Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ API Π² ΡΠ΅Π»Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡ Π²Π·ΡΠ»ΠΈ Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΡΠ°Π½Π΄Π°ΡΡ HAL, ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ ΠΈ Π·ΡΠ΅Π»ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ HAL ΠΈΠΌΠ΅Π΅Ρ Π΄ΡΠ°ΡΡ RFC-ΡΡΠ°Π½Π΄Π°ΡΡΠ°, ΠΈ Π΅Π³ΠΎ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π² API Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ HAL ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Π·Π½Π°Π΅Ρ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ RFC 6570 URL ΠΈ HTTP-ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ΄Π°, ΡΡΠ°ΡΡ Π½Π° ΡΡΠΎ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΎΡΠ΅ ΠΈ Π»Π΅Π³ΡΠ΅ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ΄, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ Π² ΠΠΈΡΠΊΠ΅, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠΈ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Π‘ΠΊΡΡΡΡΠΉ ΡΠ΅ΠΊΡΡ
# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate
headers = {'Authorization': '<OAuth ΡΠΎΠΊΠ΅Π½>'}
connection = httplib.
HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources'
def request(method, url, query=None):
if query:
qs = urllib.urlencode(query)
url = '%s?%s' % (url, qs)
connection.request(method, url, headers=headers)
resp = connection.getresponse()
content = resp.read()
obj = json.loads(content) if content else None
status = resp.status
if status == 201:
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
obj = request(obj['method'], obj['href'])
return obj
if __name__ == '__main__':
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΠ°ΠΏΠΊΡ
path = '/foo'
folder = request('PUT', resource_url, {'path': path})
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠ½Π½ΡΡ
new_path = '/bar'
folder = request('POST', '%s/move' % resource_url, {'path': new_path, 'from': path})
# ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΠΏΠΊΡ
copy_path = '/foobar'
folder_copy = request('POST', '%s/copy' % resource_url, {'path': copy_path, 'from': new_path})
# ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΠΈ
request('DELETE', resource_url, {'path': new_path})
request('DELETE', resource_url, {'path': copy_path})
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΎΠΊ ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΡΡΡΠ½ΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ URL ΠΈ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ Π±Π΅Π· ΡΠΎΠ³ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ:Π‘ΠΊΡΡΡΡΠΉ ΡΠ΅ΠΊΡΡ
# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate
headers = {'Authorization': '<OAuth ΡΠΎΠΊΠ΅Π½>', 'Accept': 'application/hal+json'}
connection = httplib.
HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources?path={path}'
def request(method, url, params=None):
url = uritemplate.expand(url, params or {})
connection.request(method, url, headers=headers)
resp = connection.getresponse()
content = resp.read()
obj = json.loads(content) if content else None
status = resp.status
if status == 201:
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
status, obj = request(obj['method'], obj['href'])
return status, obj
def do(resource, action, params=None):
link = resource['_links'][action]
_, obj = request(link['method'], link['href'], params)
return obj
if __name__ == '__main__':
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΠ°ΠΏΠΊΡ
_, folder = request('PUT', uritemplate.expand(resource_url, {'path': '/foo'}))
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠ½Π½ΡΡ
folder = do(folder, 'move', {'path': '/bar'})
# ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΠΏΠΊΡ
folder_copy = do(folder, 'copy', {'path': '/foobar'})
# ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΠΈ
do(folder, 'delete')
do(folder_copy, 'delete')
Machine-readable & Self-describing API
ΠΡΠΎΠΌΠ΅ Π³ΠΈΠΏΠ΅ΡΠΌΠ΅Π΄ΠΈΠ°, ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°Ρ API ΡΠ°ΠΌΠΎΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠΌ ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΌΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ REST API, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ RAML, WADL, JSON Schema+JSON HyperSchema, IO Docs, Apiary Blueprints, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ ΠΏΠ°Π» Π½Π° Swagger. ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Swagger Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡ (API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ 1.2, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΆΠ΅ Π²Π΅Π΄ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅ΡΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ° 2.0). ΠΠ½ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ REST API Ρ ΠΏΠΎΠΌΠΎΡΡΡ JSON, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΏΠ»ΠΎΡ
ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠΌΠΈ API.
Swagger-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π² API ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π°. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ΅ΡΡΡΡΠ° Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ Swagger-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° Π½Π°ΡΠΈΠ²Π½ΡΡ SDK Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ².
ΠΠΎΠ»ΠΈΠ³ΠΎΠ½
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π°Π»ΠΈΡΠΈΡ Swagger-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ API ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΠΎΠ»ΠΈΠ³ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π² Π½ΠΈ ΡΡΡΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π±ΠΎΠ΅Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π² API. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΠΎΠ»ΠΈΠ³ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ API, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Swagger-ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π ΠΎΠΌΠ° ΠΠΊΠΈΠ½ΡΠ΅Π΅Π² ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ» ΡΠΊΡΠΈΠ½ΠΊΠ°ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°Π» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ
ΠΠΎΠ»ΠΈΠ³ΠΎΠ½Π°.
ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΎΡΠΎΡΠΈΡ ΠΈ ΡΠ°Π·Π½ΡΡ !
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ API ΠΠΈΡΠΊΠ° Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡΠΎΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ², Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ»Π°ΠΉΠ΄-ΡΠΎΡ, ΠΌΠ΅Π΄ΠΈΠ°-ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Ρ.Π΄.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ API ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π΅Π²Π°ΠΉΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π² ΠΈΠ³ΡΠ°Ρ ΠΈΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π±ΡΠ°Π½Π½ΠΎΠ΅ ΠΈ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡ ΡΡΠ°ΡΠ°Π»ΠΈΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½ΠΎΠ²ΡΠΉ API ΠΠΈΡΠΊΠ° ΡΠ°ΠΊΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²Π°ΠΌ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΡΠΈΡΡΠ½ΠΎ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΡΠ΄ΠΈΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ Π΅Π³ΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ ΡΠ»ΠΎΠ² ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠΌ ΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½ΠΎΠ²ΡΠΌ REST API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°.
ΠΠΎΠ²ΡΠΉ REST API Π―Π½Π΄Π΅ΠΊΡ.
ΠΠΈΡΠΊΠ° ΠΈ ΠΠΎΠ»ΠΈΠ³ΠΎΠ½. Π ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΠΈΡΠΊΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ API ΠΈ ΠΊΠ°ΠΊ ΠΌΡ Π΅Π³ΠΎ Π΄Π΅Π»Π°Π»ΠΈ
ΠΠ½ΠΎΠ³ΠΈΠ΅ Π·Π½Π°ΡΡ, ΡΡΠΎ Ρ ΠΠΈΡΠΊΠ° ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ Π΅ΡΡΡ API Π½Π° WebDAV. ΠΠ½ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ·ΠΊΠΎ Π·Π°ΡΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ, Π° Ρ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°ΡΡ Π½Π΅ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅, Π½ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΡΡΠ½ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ WebDAV ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ REST API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄Π΅Π»Π°ΡΡ Π²ΡΡ ΡΠΎ ΠΆΠ΅ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ API Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΡΠ°ΠΉΠ»Ρ Π² ΠΠΈΡΠΊΠ΅, ΡΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Π»Π΅ΠΆΠ°ΡΠ΅ΠΉ Π² ΠΠΈΡΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ Β«ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ». Π WebDAV API ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΡ/ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΠΈΡΠΊΠ°, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ.
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ Ρ Ρ
ΠΎΡΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΈΠ»ΠΈ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π°Ρ API β ΡΠ°ΠΌ Π²ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ β Π° ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π²Π΅ΡΠ°ΠΌ: ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Hypermedia ΠΈ Machine-readable and Self-describing API, ΠΈ ΠΊΠ°ΠΊ ΠΌΡ Π²ΡΠ΅ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ.
Hypermedia API
ΠΡ ΡΠ½Π°Π±Π΄ΠΈΠ»ΠΈ Π½Π°Ρ API Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ΅ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ· Π΄ΡΡΠ³Π°Π½ΡΡ Π·Π°Ρ Π°ΡΠ΄ΠΊΠΎΠ΄Π΅Π½Π½ΡΡ URL Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ API Π² ΡΠ΅Π»Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡ Π²Π·ΡΠ»ΠΈ Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΡΠ°Π½Π΄Π°ΡΡ
HAL
, ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ ΠΈ Π·ΡΠ΅Π»ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ HAL ΠΈΠΌΠ΅Π΅Ρ Π΄ΡΠ°ΡΡ RFC-ΡΡΠ°Π½Π΄Π°ΡΡΠ°, ΠΈ Π΅Π³ΠΎ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ Π² API Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ HAL ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Π·Π½Π°Π΅Ρ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ RFC 6570 URL ΠΈ HTTP-ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ΄Π°, ΡΡΠ°ΡΡ Π½Π° ΡΡΠΎ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠΎΡΠ΅ ΠΈ Π»Π΅Π³ΡΠ΅ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ΄, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ Π² ΠΠΈΡΠΊΠ΅, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠΈ, Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Π‘ΠΊΡΡΡΡΠΉ ΡΠ΅ΠΊΡΡ
# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate
headers = {'Authorization': '<OAuth ΡΠΎΠΊΠ΅Π½>'}
connection = httplib.
HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources'
def request(method, url, query=None):
if query:
qs = urllib.urlencode(query)
url = '%s?%s' % (url, qs)
connection.request(method, url, headers=headers)
resp = connection.getresponse()
content = resp.read()
obj = json.loads(content) if content else None
status = resp.status
if status == 201:
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
obj = request(obj['method'], obj['href'])
return obj
if __name__ == '__main__':
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΠ°ΠΏΠΊΡ
path = '/foo'
folder = request('PUT', resource_url, {'path': path})
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠ½Π½ΡΡ
new_path = '/bar'
folder = request('POST', '%s/move' % resource_url, {'path': new_path, 'from': path})
# ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΠΏΠΊΡ
copy_path = '/foobar'
folder_copy = request('POST', '%s/copy' % resource_url, {'path': copy_path, 'from': new_path})
# ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΠΈ
request('DELETE', resource_url, {'path': new_path})
request('DELETE', resource_url, {'path': copy_path})
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΎΠΊ ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΡΡΡΠ½ΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ URL ΠΈ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ Π±Π΅Π· ΡΠΎΠ³ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ:
Π‘ΠΊΡΡΡΡΠΉ ΡΠ΅ΠΊΡΡ
# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate
headers = {'Authorization': '<OAuth ΡΠΎΠΊΠ΅Π½>', 'Accept': 'application/hal+json'}
connection = httplib.
HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources?path={path}'
def request(method, url, params=None):
url = uritemplate.expand(url, params or {})
connection.request(method, url, headers=headers)
resp = connection.getresponse()
content = resp.read()
obj = json.loads(content) if content else None
status = resp.status
if status == 201:
# ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
status, obj = request(obj['method'], obj['href'])
return status, obj
def do(resource, action, params=None):
link = resource['_links'][action]
_, obj = request(link['method'], link['href'], params)
return obj
if __name__ == '__main__':
# ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΠ°ΠΏΠΊΡ
_, folder = request('PUT', uritemplate.expand(resource_url, {'path': '/foo'}))
# ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠ½Π½ΡΡ
folder = do(folder, 'move', {'path': '/bar'})
# ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΠΏΠΊΡ
folder_copy = do(folder, 'copy', {'path': '/foobar'})
# ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΏΠΊΠΈ
do(folder, 'delete')
do(folder_copy, 'delete')
Machine-readable & Self-describing API
ΠΡΠΎΠΌΠ΅ Π³ΠΈΠΏΠ΅ΡΠΌΠ΅Π΄ΠΈΠ°, ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°Ρ API ΡΠ°ΠΌΠΎΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠΌ ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΌΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ REST API, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ RAML, WADL, JSON Schema+JSON HyperSchema, IO Docs, Apiary Blueprints, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ ΠΏΠ°Π» Π½Π° Swagger. ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Swagger Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡ (API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ 1.2, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΆΠ΅ Π²Π΅Π΄ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅ΡΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ° 2.0). ΠΠ½ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ REST API Ρ ΠΏΠΎΠΌΠΎΡΡΡ JSON, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΏΠ»ΠΎΡ
ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠΌΠΈ API.
Swagger-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π² API ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π°. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ΅ΡΡΡΡΠ° Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ Swagger-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° Π½Π°ΡΠΈΠ²Π½ΡΡ SDK Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ².
ΠΠΎΠ»ΠΈΠ³ΠΎΠ½
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π°Π»ΠΈΡΠΈΡ Swagger-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ API ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ
ΠΠΎΠ»ΠΈΠ³ΠΎΠ½
, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, Π½Π΅ Π½Π°ΠΏΠΈΡΠ°Π² Π½ΠΈ ΡΡΡΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π±ΠΎΠ΅Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π² API. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΠΎΠ»ΠΈΠ³ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ API, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ Swagger-ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π ΠΎΠΌΠ° ΠΠΊΠΈΠ½ΡΠ΅Π΅Π² ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»
ΡΠΊΡΠΈΠ½ΠΊΠ°ΡΡ
, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°Π» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΠΎΠ»ΠΈΠ³ΠΎΠ½Π°.
ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΎΡΠΎΡΠΈΡ ΠΈ ΡΠ°Π·Π½ΡΡ !
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ API ΠΠΈΡΠΊΠ° Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡΠΎΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ², Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ»Π°ΠΉΠ΄-ΡΠΎΡ, ΠΌΠ΅Π΄ΠΈΠ°-ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Ρ.Π΄.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ API ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π΅Π²Π°ΠΉΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π² ΠΈΠ³ΡΠ°Ρ ΠΈΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π±ΡΠ°Π½Π½ΠΎΠ΅ ΠΈ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡ ΡΡΠ°ΡΠ°Π»ΠΈΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½ΠΎΠ²ΡΠΉ API ΠΠΈΡΠΊΠ° ΡΠ°ΠΊΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²Π°ΠΌ Π±ΡΠ»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΡΠΈΡΡΠ½ΠΎ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΡΠ΄ΠΈΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ Π΅Π³ΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ ΡΠ»ΠΎΠ² ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠΌ ΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½ΠΎΠ²ΡΠΌ REST API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°.
Python API Π΄Π»Ρ Π―Π½Π΄Π΅ΠΊΡ.
ΠΠΈΡΠΊ
ΠΠ΅Π»ΠΎ Π±ΡΠ»ΠΎ Π²Π΅ΡΠ΅ΡΠΎΠΌ, Π΄Π΅Π»Π°ΡΡ Π±ΡΠ»ΠΎ Π½Π΅ΡΠ΅Π³ΠΎ, Π²ΠΎΡ ΠΈ ΡΠ΅ΡΠΈΠ» Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΡΡΠΊΡ Π΄Π»Ρ Π―Π½Π΄Π΅ΠΊΡ ΠΠΈΡΠΊΠ° Π½Π° python, Π΄Π°Π±Ρ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈΠΊΡΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡΡ Π±Π΅ΠΊΠ°ΠΏΠ° Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ
VPS. ΠΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° github ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΠ΅Π· pip: pip install YaDiskClient
. ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π» ΡΡΠΎ ΠΆΠ΅ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ.
ΠΡΡΡ ΠΎΠ΄Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° PHP, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ Π²ΡΠ΅ΠΌ ΠΌΠΎΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° — Ρ
ΠΎΡΠ΅ΡΡΡ Π²ΡΡ ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅. ΠΠ° pypi Π½Π°ΡΡΠ» Π½Π°ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡ lexich. ΠΡΠΎΠ΄Π΅ Π΄Π΅Π»Π°Π΅Ρ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΈ Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅, Π½ΠΎ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΎΠ½Π° ΠΌΠΎΠ½ΡΡΡΠΎΠΈΠ΄Π°Π»ΡΠ½Π°Ρ. ΠΠ½Π΅-ΡΠΎ Π½Π°Π΄ΠΎ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΠ΅ΡΠΈΠ» ΡΠ°ΠΌ ΠΏΠΎΠΊΠΎΠ²ΡΡΡΡΡΡΡ Ρ webdav ΠΈ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°. Π ΡΠ»ΠΎΠ²Ρ, Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ΅ΡΠ΅Π· OAuth, Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ — Basic. Π― ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° Π²ΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΌ. ΠΠ»Π°ΡΡ Π΄Π»Ρ OAuth Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΡ ΠΈ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ π
Yandex.Disk API
ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ API Yandex.Disk Π΅ΡΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΊΠ°ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΊ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΡ OAuth ΡΠ΅ΡΠ΅Π·ΡΡΡ Π·Π°ΡΡΠ°ΡΠ½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ Basic. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ requests, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Basic-Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠΆΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° auth=(login, password). ΠΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ Π²Ρ
ΠΎΠ΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° HTTP Π·Π°ΠΏΡΠΎΡΠ° βAuthorizationβ Π² base_64(β%s:%sβ % (login, password)). Π£ΡΠ°, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΠΎΠ±Π»Π°ΠΊΠΎΠΌ π
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ — Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ Π²Π·ΡΠ» ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΠΎΡΠΏΡΠ°Π²ΠΈΠ² ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ:
PROPFIND / HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Depth: 0
Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07
<D:propfind xmlns:D="DAV:">
<D:prop>
<D:quota-available-bytes/>
<D:quota-used-bytes/>
</D:prop>
</D:propfind>
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, requests ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ REST-Π·Π°ΠΏΡΠΎΡΡ, ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΈΠΏ PROPFIND, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠΈΠΈ:
req = requests.Request(type, url, headers=headers, auth=(self.
login, self.password), data=data)
with requests.Session() as s:
return s.send(req.prepare())
Π³Π΄Π΅ type=βPROPFINDβ, url=β/β, headers={βAcceptβ: β/β, βDepthβ: 0}, auth=(β[emailΒ protected]β, βpasswordβ), data=<ΡΠ° Π±ΠΎΠ»ΡΡΠ°Ρ XML>. Π ΠΎΡΠ²Π΅Ρ ΠΏΡΠΈΠ΄ΡΡ XML, Π³Π΄Π΅ Π² ΡΠ·Π»Π°Ρ βd:quota-available-bytesβ ΠΈ βd:quota-used-bytesβ Π±ΡΠ΄Π΅Ρ Π½ΡΠΆΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π ΡΡΡ Π²ΡΠΎΡΠ°Ρ Π·Π°ΡΠ°Π΄Π°: Yandex ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ namespace xmlns:d=βDAV:β. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π² lxml Π² ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ Π½Π°Π΄ΠΎ ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½, ΡΡΠ°ΡΡΠ²ΡΡΡΠΈΠ΅ Π² Π·Π°ΠΏΡΠΎΡΠ΅. Π’.Π΅. tree.xpath(β//d:propβ) — Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄ΡΡ ΠΈ Π΄Π°ΠΆΠ΅ ΡΡΠ³Π½ΡΡΡΡ Π½Π° ΠΏΡΠ΅ΡΠΈΠΊΡ d, Π° Π²ΠΎΡ tree.xpath(β//d:propβ, {βdβ: βDAV:β}) — ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΡΠ°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ lxml — ΠΈΠ· ΠΏΡΡΠΊΠΈ ΠΏΠΎ Π²ΠΎΡΠΎΠ±ΡΡΠΌ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈ xml.dom.minidom.
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Ρ. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ.
Π’Π΅ΡΡΡ
Π‘ΡΠ°Π»ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌ ΠΏΠΈΡΠ°ΡΡ ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ±ΡΠ΄Π΅ΠΌ Π² ΡΡΠ΅Π½Π΄Π΅ π ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ unittest. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π½Π΅ΠΉ ΠΌΠΎΡΠ΅, Π½ΠΎ ΠΌΠ½Π΅ Π±Ρ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π½Π° Π΄Π²ΡΡ
ΠΌΠΎΠΌΠ΅Π½ΡΠ°Ρ
. ΠΠ΅ΡΠ²ΡΠΉ — ΠΌΠ΅ΡΠΎΠ΄Ρ setUp ΠΈ tearDown. ΠΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΡΡΠ°. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΠΈΡΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΠ°ΠΊ ΡΡΠΎ Ρ Π²ΡΠ½Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° setUpClass ΠΈ tearDownClass, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π° ΠΏΡΠΎΠ³ΠΎΠ½.
ΠΡΠΎΡΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ — ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ². ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ βtest_β ΠΏ
ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ². β Delphi Π² Internet
ΠΡΠ°ΠΊ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Π² Delphi. ΠΡΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ ΠΈΠ»ΠΈ ΡΠΆΠ΅ Π·Π°Π±ΡΠ» β ΡΠ°Π½Π΅Π΅ Ρ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π» ΠΏΡΠΎ ΡΠ°Π±ΠΎΡΡ Ρ API ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ Π΄Π°ΠΆΠ΅ Π²ΡΠ»ΠΎΠΆΠΈΠ» Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ WebDAV Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΅ΠΉ Π»ΡΠ±ΠΈΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Synapse. Π ΠΏΡΠΎΡΠ»ΡΠΉ ΡΠ°Π· Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅Β TWebDAVSend ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° WebDAV ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PROPFIND, MKCOL ΠΈ Ρ. Π΄. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Ρ ΠΠ°ΠΌΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Π° Π² Π°ΠΊΠΊΠ°ΡΠ½Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°.
ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°, ΠΏΡΠΎΠ΅ΠΊΡ Delphi ΠΈ ΠΏΡΠΈΡΡΡΠΏΠ°Π΅ΠΌ ΠΊ ΡΠ°Π±ΠΎΡΠ΅.
Π§ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ²
Π Π½Π°ΡΠ°Π»Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈΡΡΠ»Π°Π΅ΡΡΡ Π½Π°ΠΌ Π² ΠΎΡΠ²Π΅ΡΠ΅ Π½Π° Π·Π°ΠΏΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PROPFIND. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ PROPFIND ΡΠ΅ΡΠ²Π΅Ρ Π½Π°ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ XML-ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡΠΈ ΡΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ΅ΡΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
- d:href β ΠΏΡΡΡ ΠΊ ΡΠ΅ΡΡΡΡΡ
- d:propstatβ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ΄ ΡΡΠ°ΡΡΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π½Π°Π±ΠΎΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΡ
ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ΅ΡΡΡΡΠ°
- d:status β ΠΊΠΎΠ΄ ΡΡΠ°ΡΡΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ PROPPATCH (ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ΅ΡΡΡΡΠ°), ΡΠΎ ΡΡΠΎΡ ΡΠ·Π΅Π» ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΌ ΡΠ·Π½Π°ΡΡ ΠΏΡΠΎΡΠ»Π° Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ.
- d:propβ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ΅ΡΡΡΡΠ°
- d:creationdate β Π΄Π°ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ° Π² UTC
- d:displayname β ΠΈΠΌΡ ΡΠ΅ΡΡΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
- d:getcontentlength β ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ΅ΡΡΡΡΠ° Π² Π±Π°ΠΉΡΠ°Ρ
.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΄Π»Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π²Π½ΠΎ 0.
- d:getlastmodified β Π΄Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ° (ΠΏΠΎ ΡΠΎΡΠΌΠ°ΡΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄Π°ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π² d:creationdate)
- d:resourcetype β ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ΅ΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ. ΠΡΠ»ΠΈ Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·Π»Π° ΠΈΠΌΠ΅Π΅ΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΡΡΠΎΠΉ ΡΠ·Π΅Π»Β d:collection, Β ΡΠΎ ΡΠ΅ΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ, ΠΈΠ½Π°ΡΠ΅ β ΡΠ°ΠΉΠ»ΠΎΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠΏΠΈΡΠ΅ΠΌ Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PROPFIND. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΌΠ΅Π½Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ°Π» ΡΠ°ΠΊΠΈΠΌ:
Π ListView Π±ΡΠ΄Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π±ΡΠ΄ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° Ρ ΡΠΎΠ·Π΄Π°Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ:
ΠΊΠ»Π°ΡΡ, Ρ ΡΠ°Π½ΡΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅ΡΡΡΡΡ:
type TWDResource = class private FHref : string; FStatusCode : integer; FContentLength: int64; FCreationDate : TDateTime; FLastmodified : TDateTime; FDisplayName : string; FContentType : string; FCollection : Boolean; public property StatusCode : integer read FStatusCode; property ContentLength: int64 read FContentLength; property CreationDate : TDateTime read FCreationDate; property Lastmodified : TDateTime read FLastmodified; property DisplayName : string read FDisplayName; property ContentType : string read FContentType; property Href: string read FHref; property Collection : Boolean read FCollection; end;
ΠΠΎΡΠΎΠΌ Π² ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ Ρ. Π΄. ΠΠΎΠΊΠ° ΠΆΠ΅ ΠΎΠ½ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½Ρ ΠΏΡΠΎΡΡΡΡ ΡΠΎΠ»Ρ β Ρ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ β ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ (ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΡΡΡΠΎΠ²) Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°:
TWDResourceList = class(TList) public constructor Create; destructor Destroy;override; procedure Clear; end;
ΠΠ΄Π΅ΡΡ, Π²ΡΠΎΠ΄Π΅ Π±Ρ, ΡΠΎΠΆΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ²Π΅ΡΡ
ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΡ β ΠΊΠ»Π°ΡΡ Ρ
ΡΠ°Π½ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΡ
ΡΠ°Π½Π΅Π΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ, ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ β ΡΠΈΡΡΠΈΡ ΡΠΏΠΈΡΠΎΠΊ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Ρ API ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ OnClick ΠΊΠ½ΠΎΠΏΠΊΠΈ βΠΡΠΏΠΎΠ»Π½ΠΈΡΡβ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
procedure TForm5.Button1Click(Sender: TObject); Β procedure ParseResources(const AXMLStr: string); var XMLDoc: IXMLDocument; ResponseNode,ChildNode,PropNodeChild, PropertyNode: IXMLNode; s, su,Value: string; begin XMLDoc:=TXMLDocument.Create(nil); try XMLDoc.LoadFromXML(AXMLStr); if not XMLDoc.IsEmptyDoc then begin ResponseNode:=XMLDoc.DocumentElement.ChildNodes.First; while Assigned(ResponseNode) do begin Resources.Add(TWDResource.Create); ChildNode:=ResponseNode.ChildNodes.First; while Assigned(ChildNode) do begin if ChildNode.NodeName='d:href' then Resources.Last.FHref:=ChildNode.Text else if ChildNode.NodeName='d:propstat' then begin PropNodeChild:=ChildNode.ChildNodes.First; while Assigned(PropNodeChild) do begin if PropNodeChild.NodeName='d:status' then begin Value:=PropNodeChild.Text; s := Trim(SeparateRight(Value, ' ')); su := Trim(SeparateLeft(s, ' ')); Resources.Last.FStatusCode:=StrToIntDef(su, 0); end else if PropNodeChild.NodeName='d:prop' then begin PropertyNode:=PropNodeChild.ChildNodes.First; while Assigned(PropertyNode) do begin if PropertyNode.NodeName='d:creationdate' then Resources.Last.FCreationDate:=UTCToSystemTime(ISODateTime2UTC(PropertyNode.Text)) else if PropertyNode.NodeName='d:displayname' then Resources.Last.FDisplayName:=Utf8ToAnsi(PropertyNode.Text) else if PropertyNode.NodeName='d:getcontentlength' then Resources.Last.FContentLength:=PropertyNode.NodeValue else if PropertyNode.NodeName='d:getlastmodified' then Resources.Last.FLastmodified:=DecodeRfcDateTime(PropertyNode.Text) else if PropertyNode.NodeName='d:resourcetype' then Resources.Last.FCollection:=PropertyNode.ChildNodes.Count>0; PropertyNode:=PropertyNode.NextSibling; end; end; PropNodeChild:=PropNodeChild.NextSibling; end; end; ChildNode:=ChildNode.NextSibling; end; ResponseNode:=ResponseNode.NextSibling; end; end; finally XMLDoc:=nil; end; end; Β var Str: string; I: Integer; begin WebDAV.Login := Edit1.Text; WebDAV.Password := Edit2.Text; Resources.Clear; Str:=WebDAV.PROPFIND(1, InputBox('Π Π΅ΡΡΡΡ', 'Π Π΅ΡΡΡΡ', '')); if Length(Trim(Str))>0 then begin ParseResources(Str); for I := 0 to Resources.Count-1 do begin with ListView1.Items.Add do begin Caption:=Resources[i].DisplayName; SubItems.Add(Resources[i].Href); SubItems.Add(DateTimeToStr(Resources[i].CreationDate)); SubItems.Add(DateTimeToStr(Resources[i].Lastmodified)); SubItems.Add(IntToStr(Resources[i].ContentLength)); if Resources[i].Collection then SubItems.Add('yes') else SubItems.Add('no'); SubItems.Add(IntToStr(Resources[i].StatusCode)) end; end; Β end; end;
ΠΡΠ³Π»ΡΠ΄ΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΆΡΡΠ΅Π½ΡΠΊΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎ ΡΠ°ΡΡΡΠΌ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ. ΠΠ½Π°ΡΠ°Π»Π΅ ΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PROPFIND ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Π΄Π°ΡΡ Π² InputBox:
WebDAV.Login := Edit1.Text; WebDAV.Password := Edit2.Text; Resources.Clear; Str:=WebDAV.PROPFIND(1, InputBox('Π Π΅ΡΡΡΡ', 'Π Π΅ΡΡΡΡ', ''));
ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΎΡΠ΅Π» ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π²Π΅ΡΠ½ΡΠ» Π½Π°ΠΌ ΠΎΡΠ²Π΅Ρ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ParseResources, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅Ρ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. Π‘Π°ΠΌΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Ρ ΠΎΡΡ ΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΎ, Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ β ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠ·Π»Π°ΠΌ XML ΠΈ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ. ΠΡΠ»ΠΈ ΠΠ°ΠΌ ΡΡΡΠ΄Π½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ParseResources, ΡΠΎ Π½ΠΈΠΆΠ΅ Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» ΠΠ°ΠΌ Π»ΠΈΡΡΠΈΠ½Π³ ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΠΊ ΠΊΠΎΠ΄Ρ:
procedure ParseResources(const AXMLStr: string); var XMLDoc: IXMLDocument; ResponseNode,ChildNode,PropNodeChild, PropertyNode: IXMLNode; s, su,Value: string; begin XMLDoc:=TXMLDocument.Create(nil); try XMLDoc.LoadFromXML(AXMLStr); if not XMLDoc.IsEmptyDoc then begin //Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ·Π΅Π» d:response ResponseNode:=XMLDoc.DocumentElement.ChildNodes.First; while Assigned(ResponseNode) do begin //ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ° Π² ΡΠΏΠΈΡΠΊΠ΅ Resources.Add(TWDResource.Create); //ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΡΠ·Π»Π°ΠΌ d:response ChildNode:=ResponseNode.ChildNodes.First; while Assigned(ChildNode) do begin if ChildNode.NodeName='d:href' then Resources.Last.FHref:=ChildNode.Text else //Π½Π°ΡΠ»ΠΈ ΡΠ·Π΅Π» ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΡΠ΅ΡΡΡΡΠ° if ChildNode.NodeName='d:propstat' then begin //Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΡΠ·Π΅Π», ΠΎΠ±ΡΡΠ½ΠΎ - ΡΡΠΎ d:status PropNodeChild:=ChildNode.ChildNodes.First; while Assigned(PropNodeChild) do begin //ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠ΄ ΡΡΠ°ΡΡΡΠ° if PropNodeChild.NodeName='d:status' then begin Value:=PropNodeChild.Text; s := Trim(SeparateRight(Value, ' ')); su := Trim(SeparateLeft(s, ' ')); Resources.Last.FStatusCode:=StrToIntDef(su, 0); end else //Π½Π°ΡΠ»ΠΈ ΡΠ·Π΅Π» d:prop - ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎ Π΅Π³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΡΠ·Π»Π°ΠΌ if PropNodeChild.NodeName='d:prop' then begin PropertyNode:=PropNodeChild.ChildNodes.First; while Assigned(PropertyNode) do begin if PropertyNode.NodeName='d:creationdate' then Resources.Last.FCreationDate:=UTCToSystemTime(ISODateTime2UTC(PropertyNode.Text)) else if PropertyNode.NodeName='d:displayname' then Resources.Last.FDisplayName:=Utf8ToAnsi(PropertyNode.Text) else if PropertyNode.NodeName='d:getcontentlength' then Resources.Last.FContentLength:=PropertyNode.NodeValue else if PropertyNode.NodeName='d:getlastmodified' then Resources.Last.FLastmodified:=DecodeRfcDateTime(PropertyNode.Text) else if PropertyNode.NodeName='d:resourcetype' then Resources.Last.FCollection:=PropertyNode.ChildNodes.Count>0; //Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΡΠ·Π΅Π» Ρ d:prop PropertyNode:=PropertyNode.NextSibling; end; end; //Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΡΠ·Π΅Π» Ρ d:propstat PropNodeChild:=PropNodeChild.NextSibling; end; end; //Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΡΠ·Π΅Π» Ρ d:response ChildNode:=ChildNode.NextSibling; end; //Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ·Π΅Π» d:response ResponseNode:=ResponseNode.NextSibling; end; end; finally XMLDoc:=nil; end; end;
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΡΡΡΠΎΠ² Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ ΡΠ½ΠΎΠ²Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ OnClick ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ListView Π΄Π°Π½Π½ΡΠΌΠΈ:
for I := 0 to Resources.Count-1 do begin with ListView1.Items.Add do begin Caption:=Resources[i].DisplayName; SubItems.Add(Resources[i].Href); SubItems.Add(DateTimeToStr(Resources[i].CreationDate)); SubItems.Add(DateTimeToStr(Resources[i].Lastmodified)); SubItems.Add(IntToStr(Resources[i].ContentLength)); if Resources[i].Collection then SubItems.Add('yes') else SubItems.Add('no'); SubItems.Add(IntToStr(Resources[i].StatusCode)) end; end;
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡ ΠΎΠ΄ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π΅ΡΠ΅Π²Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π² Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PROPFIND Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°.
Π‘ΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°
ΠΠ½Π°ΡΠ°Π»Π΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄Π° GET. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΡΡΡ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ GET, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΆΠ΅ ΡΡΠΎ ΡΠ°Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π² ΡΠ°ΠΌΡΡ ΡΠ°Π·Π½ΡΠΌ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ API. Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ Π½Π°ΠΌ ΡΠ°ΠΉΠ» Π² ΡΠΆΠ°ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π΅ΡΠ»ΠΈ ΡΠΆΠ°ΡΠΈΠ΅ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ (ΠΏΡΠΎ ΡΠ°Π±ΠΎΡΡ Ρ GZIP Ρ ΠΏΠΈΡΠ°Π» Π² ΡΡΠ°ΡΡΠ΅ βΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ GZip Π² Synapse.β). Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΆΠ°ΡΠΈΡ.
ΠΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Ρ ΠΊΠ»Π°ΡΡΠ°Β TWebDAVSend ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄:
type TWebDAVSend = class private FHTTP: THTTPSend; [...] public [...] function Get(const ElementHref:string; var Response:TStream):boolean; end; Β function TWebDAVSend.Get(const ElementHref: string; var Response:TStream): boolean; var URL: string; begin if not Assigned(Response) then Exit; URL:=GetRequestURL(ElementHref,false); with FHTTP do begin Headers.Clear; Document.Clear; Headers.Add('Authorization: Basic ' + FToken); Headers.Add('Accept: */*'); if HTTPMethod('GET', URL) then begin Result:=ResultCode=200; if not Result then raise Exception.Create(IntToStr(ResultCode)+' '+ResultString) else Document.SaveToStream(Response); end else raise Exception.Create(rsPropfindError+' '+ResultString); end; end;
ΠΠ΅ΡΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Get ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΡΡ ΠΊ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΏΠΎΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠΊΠ°ΡΠ°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ElementHref β ΡΡΠΎ ΡΡΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΈΠ· XML, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΡΡΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΡΡΡΠΎΠ² (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Href). ΠΠ½Π°ΡΠ°Π»Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ URL ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΉΠ», Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ Get. ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠΎ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΠΏΠΎΡΠΎΠΊ Response. ΠΠΎΡ ΠΈ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° π ΠΡΡΠ°Π»ΠΎΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ API Π―Π½Π΄Π΅ΠΊΡΠ°
ΠΠ»ΠΈΠ΅Π½ΡΡ ΡΠ°ΡΡΠΎ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΌΡ Π½Π°ΡΡΠΈΠ»ΠΈ Foster Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠ΅ΠΊΡ. ΠΡΠ΅ Π΄Π΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ API Π―Π½Π΄Π΅ΠΊΡΠ°. ΠΠΎ, ΠΊΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π½Π΅Π»ΡΠ·Ρ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ ΠΈ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠ΅ΠΊΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΉΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ Ρ Ρ ΠΎΡΡ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠΈΡΠ΅ΠΊΡΠΎΠΌ.Β
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ API?
ΠΠ°ΠΏΡΠΎΡ ΠΊ API Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΠΈΡΠ΅ΠΊΡΠ° β ΡΠ΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΠΎΠ³ΠΎ Π°Π³Π΅Π½ΡΡΡΠ²Π°. Π Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΎΠΊΠ΅Π½ β ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ OAuth, Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»Ρ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ. ΠΡΠΎΡ ΡΠ°Π³ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ΅Π½. ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΡ Π·Π°ΡΠ²ΠΊΡ Π½Π° Π΄ΠΎΡΡΡΠΏ ΠΊ API.
ΠΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ, ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΏΠΎΠ΄Π°Π½Π½ΡΡ Π·Π°ΡΠ²ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π·Π΄Π΅ΡΡ.
ΠΠ°ΡΠ²ΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΡΡΡΠΏ
ΠΠ° ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠ°ΠΏΠ°Ρ ΡΠ°Π±ΠΎΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°ΡΠ²ΠΊΠΈ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ API ΠΠΈΡΠ΅ΠΊΡΠ°. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΡΡΡΠΏ ΠΊ Β«ΠΠ΅ΡΠΎΡΠ½ΠΈΡΠ΅Β». ΠΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½ΡΡ Π·Π°ΡΠ²ΠΊΡ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ:
- ΠΠ»ΠΈΠΊΠ°Π΅ΠΌ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Β«ΠΠΎΠ²Π°Ρ Π·Π°ΡΠ²ΠΊΠ°Β».
- ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Β«Π’Π΅ΡΡΠΎΠ²ΡΠΉ Π΄ΠΎΡΡΡΠΏΒ».
- ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ°Π³Π΅ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»Ρ (Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΠΎ Π½Π΅ ΡΠΎΡΠΈΠ½ΡΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ).
Π‘ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ Π² 98% Π²Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π°.
Π ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ Π΄Π²ΡΡ ΠΏΡΠΎΡΠ΅Π½ΡΠ°Ρ ΡΠ»ΡΡΠ°Π΅Π² Π―Π½Π΄Π΅ΠΊΡ ΡΠΎΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°Π½ΠΎΡΠΈΡΡ Π²ΡΠ΅Π΄ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠΌ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΡΠΌ ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡ Π·Π°ΡΠ²ΠΊΡ.
ΠΠ°ΡΠ²ΠΊΠ° Π½Π° ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ
ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠ°Π»ΠΎ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° Π·Π°Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Β«ΠΡΠΎΡΠΌΠΈΡΡ Π·Π°ΡΠ²ΠΊΡ Π½Π° ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏΒ». ΠΠ°Π»Π΅Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ²ΠΈΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠΈ ΠΏΠΈΡΠ°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠΊΠΈΠ»Π»Ρ ΠΏΡΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»Ρ Β«ΠΠΏΠΈΡΠΈΡΠ΅ ΡΡ Π΅ΠΌΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΠΈΡΠ΅ΠΊΡΠΎΠΌΒ».
Π‘ΡΠ°Π·Ρ ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ ΠΎΠ±ΡΠΈΠ΅ ΡΡΠ°Π·Ρ Π―Π½Π΄Π΅ΠΊΡ Π½Π΅ ΠΏΡΠΎΠΌΠΎΠ΄Π΅ΡΠΈΡΡΠ΅Ρ. ΠΠ°ΡΠ²ΠΊΡ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡ, Π° Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΏΠΎΠΏΡΠΎΡΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ: 1. ΠΠ΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. 2. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π²Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² API, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. 2.1. Π£ΠΊΠ°Π·Π°ΡΡ, Ρ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ API Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. 2.2. ΠΠΎΡΠ΅ΠΌΡ Π²ΡΠ±ΡΠ°Π½Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ ΡΠ΅ΡΠ°ΡΡ. 2.3. ΠΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ API. 3. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π»ΠΈΠΌΠΈΡΡ ΠΠΈΡΠ΅ΠΊΡΠ° (Π° ΠΈΡ Π½Π΅ΠΌΠ°Π»ΠΎ), ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡΠΎΠ². Π’ΡΡ ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ, ΡΡΠΎ ΠΌΡ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅ΠΌ Π»ΠΎΠΌΠΈΡΡΡΡ ΠΊ API, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠ»ΠΈ Π·Π° Π³ΡΠ°Π½ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Π½ΠΎΠ³ΠΎ. ΠΠΎΠΆΠ½ΠΎ ΠΊΠΈΠ½ΡΡΡ ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ Π»ΠΈΠΌΠΈΡΠΎΠ².
4. ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΡΠΈΠ½ΡΠΎΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠΈΠΊΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡΡΡ ΡΡ Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠΡΠΎΠ΄Π΅Π»Π°Π² Π²Π΅ΡΡ ΠΏΡΡΡ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠ°Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π°ΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΌΡ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ Π΄ΠΎΠ»Π³ΠΎΠΆΠ΄Π°Π½Π½ΡΠΉ ΡΡΠ°ΡΡΡ Β«ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎΒ» Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°.
ΠΠ° ΡΠΈΠ½ΠΈΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Foster Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π΅Ρ Π·Π½Π°Π΅ΡΠ΅. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΌΠΎΠ³ΡΡ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠ΅ΠΊΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π°Π²ΡΠ΅Π΄ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΠΎΠΉ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΡΡΠ°ΡΠΈ, Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° Ρ ΡΡΠ»ΡΠ³ΠΎΠΉ [PPC 2.0] ΠΎΡ Netpeak ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Π² ΠΊΠ΅ΠΉΡΠ΅.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ β ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π―Π½Π΄Π΅ΠΊΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ Ρ ΡΠ°Π½ΠΈΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΄Π΅Π»ΠΈΡΡΡΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΡΠ°ΠΉΠ»Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌΠΈ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ Π―Π½Π΄Π΅ΠΊΡΠ°.
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° ΠΏΡΠΎΡΡ. ΠΠ° Π²Π°ΡΠ΅ΠΌ ΠΠ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ β «Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ». Π ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Π‘ΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π―Π½Π΄Π΅ΠΊΡΠ°.
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΠΈΡΠΊΠ°, ΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 3 ΠΠ± ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ, Π·Π°Π³ΡΡΠ·ΠΈΠ² Π½Π° ΠΠΈΡΠΊ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ²ΡΠΈΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΠ°ΠΉΠ» Π² ΡΠΎΡ.ΡΠ΅ΡΠΈ, Π²Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΠ΅ ΡΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄ΠΎ 10 ΠΠ±. Π’Π°ΠΊ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΡΡΡΠΎ, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°ΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΠΊΡΡΠΏΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π½Π° ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΌ Π΄ΠΈΡΠΊΠ΅, ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΡΡΠΎΠΈΠ² ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΊΡΡΠΏΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ — ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈΡΠ΅ ΡΡΡΠ»ΠΊΡ, Π° Π²Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ, Π΄ΡΡΠ·ΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΌΠΈ ΠΈΡ ΡΠΊΠ°ΡΠ°ΡΡ.
ΠΠΎΡΡΡΠΏ ΠΊ Ρ ΡΠ°Π½ΡΡΠΈΠΌΡΡ Π΄Π°Π½Π½ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΌΠΈΡΠ°, Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ.
ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠΎΠΌ:
- Π§Π΅ΡΠ΅Π· Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
- ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
- Π‘ ΠΏΠΎΠΌΠΎΡΡΡ WebDAV-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° WebDAV ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ WebDAV-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² API ΠΠΈΡΠΊΠ°. Π€ΡΠ½ΠΊΡΠΈΡ API — Application Programming Interface (ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ) β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΠΉ Π΄ΠΈΡΠΊ Π² Π»ΡΠ±ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°Ρ , ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡΠΈΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° WebDAV. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
Handy Backup Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠΎΠΌ.
Π‘ΠΎΠ·Π΄Π°Π½Π½Π°Ρ Π½Π°ΠΌΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΏΠ°ΠΏΠΊΠΈ, ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Windows, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ 1Π‘.
ΠΠ»Π°ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π±ΡΠΊΠ°ΠΏΠΈΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ Π²ΠΈΠ΄Ρ Π΄Π°Π½Π½ΡΡ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ MySQL, MS SQL, PostgreSQL, DB2, MS Exchange ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ±Π·ΠΎΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° 2020 — Π ΠΎΡΡΠΈΠΉΡΠΊΠ°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Google
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ
2,00 Π΄ΠΎΠ»Π»Π°ΡΠ° Π‘Π¨Π Π² ΠΌΠ΅ΡΡΡ Π·Π° 100 ΠΠ
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
7,0 / 10
ΠΠ»ΡΡΡ
- ΠΡΠΎΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΎΡΠΈΡΠΎΠΌ
- Π₯ΠΎΡΠΎΡΠΈΠ΅ ΡΠ΅Π½Ρ
- ΠΠ°ΡΠΈΡΠ΅Π½ΠΎ ΠΎΡ U.ΠΠΎΡ. Π£ΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΡΠΈΠ½ΡΠΎΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°
ΠΠΈΠ½ΡΡΡ
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
- Π‘ΠΊΠΎΡΠΎΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°ΡΡΠΎΡΠΎΠΆΠΈΡΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΠ²ΡΠΎΠΏΡ
- ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
- ΠΠ΅Π· ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ ΠΠ±Π·ΠΎΡ
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΌΡ Π΅Π³ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ, ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΠΉ Google — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ.ΠΡΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΠ΅Ρ Ρ Π·Π°ΠΏΠ°Π΄Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ. Π¦Π΅Π½Ρ ΠΈ ΠΏΠ»Π°Π½Ρ Π―Π½Π΄Π΅ΠΊΡ ΠΠΈΡΠΊΠ° ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΡΠ΅Π΄Π½Π΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠ±Π»Π°ΡΠ½ΡΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΎΡΠ΅Π½Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ ΡΡΠΎΡ ΠΎΠ±Π·ΠΎΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΌΠΎΠ³ΡΡ Π»ΠΈ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΡΠ³Π°Π½Ρ Π‘Π¨Π ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²Π°ΡΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ, ΠΎΠ½ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ ΠΌΠΎΠ³ΡΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Π½ΡΠΆΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΡΡΠΎΠΌ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π°Ρ ΡΠΏΠΈΡΠΎΠΊ Π»ΡΡΡΠΈΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² ΠΎΠ±Π»Π°ΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ.
ΠΠΎΠ»Π½ΡΠΉ ΠΎΠ±Π·ΠΎΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° ΡΠΈΡΠ°ΠΉΡΠ΅ Π½ΠΈΠΆΠ΅.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΡ
# | Π‘Π΅ΡΠ²ΠΈΡ | Π Π΅ΠΉΡΠΈΠ½Π³ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠ»Π°ΡΠ½ΡΠΉ ΡΠ°ΡΠΈΡ | ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ |
---|---|---|---|---|---|
1 | pCloud | ΠΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ±Π·ΠΎΡ | pCloud — ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΠ±Π»Π°ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΡΠ΄ΠΈΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²ΡΡΠΎΡΠ°ΠΉΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π·Π°ΡΠΈΡΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°) Ρ ΠΏΠΎΡΡΡΡΠ°ΡΡΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ.ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΠΏΠ»Π°Π½Π°ΠΌΠΈ LIFETIME. ΠΠ½ ΠΏΡΠΎΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΡΡΡΠΈΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π½Π° ΡΡΠ½ΠΊΠ΅. 10 ΠΠ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. | 4,99 $ / ΠΌΠ΅ΡΡΡ 500 ΠΠ | ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² pCloud |
2 | Sync.com | ΠΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ±Π·ΠΎΡ | Sync.com — ΠΊΠ°Π½Π°Π΄ΡΠΊΠΎΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠ°Π·Π³Π»Π°ΡΠ΅Π½ΠΈΡ.ΠΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π±Π΅ΡΠΏΡΠ΅ΡΠ΅Π΄Π΅Π½ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ (ΡΠ΅ΡΠ΅Π· ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°) Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ². 5 ΠΠ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. | 8 $ / ΠΌΠ΅ΡΡΡ 2000 ΠΠ | ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Sync.com |
3 | Icedrive | ΠΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ±Π·ΠΎΡ | Icedrive — ΡΡΠΎ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² ΠΠ΅Π»ΠΈΠΊΠΎΠ±ΡΠΈΡΠ°Π½ΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ².ΠΠ½ΠΈ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ ΡΡΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Twofish, ΡΡΠΎ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅. ΠΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΏΠ»Π°Π½Π°ΠΌΠΈ LIFETIME Π΄Π΅Π»Π°Π΅Ρ ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ! 10 ΠΠ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. | 4,99 β¬ / ΠΌΠ΅ΡΡΡ 1000 ΠΠ | ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Icedrive |
4 | ΠΠΠΠ | ΠΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ±Π·ΠΎΡ | MEGA ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.Π£ Π½Π΅Π³ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ / ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠ½Π»Π°ΠΉΠ½-ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°, ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ / ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΡΡΠ΅. 15 ΠΠ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. | 4,99 β¬ / ΠΌΠ΅ΡΡΡ 400 ΠΠ | ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΠΠΠ |
5 | Π’ΡΠ΅ΡΠΎΡΠΈΡ | ΠΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ±Π·ΠΎΡ | Tresorit Π·Π°ΡΠΈΡΠ°Π΅Ρ Π²Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²Π΅ΠΉΡΠ°ΡΡΠΊΠΈΡ Π·Π°ΠΊΠΎΠ½ΠΎΠ² ΠΎ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΡΡΡΠ°ΡΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ , Π½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠ»Ρ Ρ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΡΠΎΠ³ΠΈΠΌΠΈ ΠΈ Π½Π΅ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌΠΈ ΡΠ΅Π½Π°ΠΌΠΈ. 3 ΠΠ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. | 9,99 β¬ / ΠΌΠ΅ΡΡΡ 500 ΠΠ | ΠΠ΄ΠΈ Π² Π’ΡΠ΅ΡΠΎΡΠΈΡ |
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ:
Π¦Π΅Π½Ρ ΠΈ ΠΏΠ»Π°Π½Ρ
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ ΡΡΠΎ?
ΠΡΠΎΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
Π‘ΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ±ΠΌΠ΅Π½ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠ½Π»Π°ΠΉΠ½-ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π―Π½Π΄Π΅ΠΊΡ.Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π΄ΠΈΡΠΊΠ°
Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ ΠΈ ΠΏΠ»Π°Π½Ρ Π―Π½Π΄Π΅ΠΊΡ ΠΠΈΡΠΊΠ°
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΈΡΠ½ΡΡ ΠΏΠ»Π°Π½ΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ. ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π²Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΡΠΎΠΌΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π³ΠΎΠ΄, Π²Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ 17% Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠ»Π°Π½Π΅.
ΠΠ»Π°Π½ | Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ | Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ |
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ | ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ | 10 ΠΠ |
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ + 100 ΠΠ | $ 2.00 / ΠΌΠ΅ΡΡΡ 20,40 Π΄ΠΎΠ»Π». Π‘Π¨Π / Π³ΠΎΠ΄ | 100 ΠΠ |
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ + 1000 ΠΠ | 10,00 Π΄ΠΎΠ»Π». Π‘Π¨Π Π² ΠΌΠ΅ΡΡΡ 99,6 Π΄ΠΎΠ»Π». Π‘Π¨Π Π² Π³ΠΎΠ΄ | 1000 ΠΠ |
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ + 3000 ΠΠ | 30,00 Π΄ΠΎΠ»Π». Π‘Π¨Π Π² ΠΌΠ΅ΡΡΡ 300,00 Π΄ΠΎΠ»Π». Π‘Π¨Π / Π³ΠΎΠ΄ | 3000 ΠΠ |
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ Π²Π°ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ:
- Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΆΡΡΠ½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ²
- ΠΠ΅Π· ΡΠ΅ΠΊΠ»Π°ΠΌΡ
- ΠΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
- ΠΠ΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΡΡΡΠ»ΠΊΠ°ΠΌ
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ ΠΏΠ»Π°Π½ΠΎΠ² ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Π½Π΅ Π΄Π΅ΡΠ΅Π² ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π΄Π΅ΡΠ΅Π²ΡΠΌΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°ΠΌΠΈ ΠΎΠ±Π»Π°ΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π»ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ ΡΡΠΎ?
Π―Π½Π΄Π΅ΠΊΡ — ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ Π² Π ΠΎΡΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ Π΅Π΅ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΠΌ Google, ΠΈ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΠΊ. ΠΠ½ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π² Π ΠΎΡΡΠΈΠΈ Ρ Π΄ΠΎΠ»Π΅ΠΉ ΡΡΠ½ΠΊΠ° ΠΎΠΊΠΎΠ»ΠΎ 60% Π² ΡΡΠΎΠΉ ΡΡΡΠ°Π½Π΅. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠ΅ΡΠ΅ Π΄ΠΎΡΡΠΎΠΉΠ½ΠΎΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΠ³Π°Π½ΠΎΠ² Π‘Π¨Π ΠΊ Π²Π°ΡΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ, ΡΠΎΠ³Π΄Π° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Π΄Π»Ρ ΡΠ΅Π±Ρ. Π₯ΠΎΡΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠΊΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΡ. ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΡΡΠ΅ΠΉ Π² ΠΠ²ΡΠΎΠΏΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΡΡΡΡ ΠΌΠΈΡΠ°.
Π£Π΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΡΠ΅ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ Π½Π° Π―Π½Π΄Π΅ΠΊΡΠ΅, Π·Π½Π°ΡΠΈΡ, Π²Ρ Π³ΠΎΡΠΎΠ²Ρ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠΎΠΌ. ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΉΠΌΠ΅Ρ ΠΏΠ°ΡΡ ΠΌΠΈΠ½ΡΡ.
Π‘Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π΅Π½.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΊΠ°ΡΡ Π² ΡΠ²ΠΎΠΈΡ ΠΏΠ°ΠΏΠΊΠ°Ρ , ΠΊΠ°ΠΊ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, ΠΈΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΆΠΈΠΌΠ°ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«Π€ΠΎΡΠΎΒ», Β«ΠΠ±ΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏΒ», Β«ΠΡΡΠΎΡΠΈΡΒ» ΠΈ Β«ΠΠΎΡΠ·ΠΈΠ½Π°Β». ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΠΎΡΠ΅Π½Ρ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΡΠΉ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· 3 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ΄ΠΎΠ² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. Π‘Π°ΠΌΠ° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ Π² Π²Π΅ΡΠ°Ρ .
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Office ΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ PDF-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Office 365 Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
ΠΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΡΠ·ΡΠΊΠΈ, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡ ΡΠΈΠ»ΡΠΌΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΠΏΡΡΠΌΠΎ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ»ΠΈΠ΅Π½Ρ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Windows , macOS ΠΈ Linux .
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Π±ΡΠ»Π° ΡΠ΄Π΅Π»Π°Π½Π° Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π±ΡΡΡΡΠΎ. Π ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠ°Π» Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ ΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π² ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ, ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΡΠ°Π»Π°ΡΡ Π½Π° Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.ΠΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎΠ΅, Π½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ. ΠΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π½Π° Π·Π΅ΠΌΠ½ΠΎΠΌ ΡΠ°ΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π―Π½Π΄Π΅ΠΊΡ ΡΠΎΠ΄ΠΎΠΌ ΠΈΠ· Π ΠΎΡΡΠΈΠΈ, Π° Π΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² Π ΠΎΡΡΠΈΠΈ ΠΈ Π€ΠΈΠ½Π»ΡΠ½Π΄ΠΈΠΈ. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ.
Π€Π°ΠΉΠ»Ρ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ ( ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ), Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ (ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ). ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ .
ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π½Π° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ΅ — 50 ΠΠ. ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ 10 ΠΠ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ.
Π Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠΊΡΠ°Π½Π°, ΡΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΠ°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ Gyazo.
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π±Π»ΠΎΠΊΠΎΠ² , ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΊΠΎΡΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ. Π.).Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Π½Π΅ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΠΏΠ°ΠΏΠΊΡ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠ°ΠΏΠΊΠ° Π±ΡΠ»Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Ρ ΠΎΠ±Π»Π°ΠΊΠΎΠΌ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π΅ Π½Π° Π²ΠΎΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π΄ΠΈΡΠΊ. Π Π―Π½Π΄Π΅ΠΊΡ.
ΠΠ±ΠΌΠ΅Π½ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
ΠΠ±ΠΌΠ΅Π½ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Ρ Π―Π½Π΄Π΅ΠΊΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ. ΠΠ½ Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ»Ρ, Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠΎΠΊΠΎΠ² Π³ΠΎΠ΄Π½ΠΎΡΡΠΈ ΠΈ Ρ. Π. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΡΠΎΠ·Π΄Π°Π² ΡΡΡΠ»ΠΊΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Ρ Π΄ΡΡΠ·ΡΡΠΌΠΈ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅, Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ QR-ΠΊΠΎΠ΄.
ΠΠ°ΡΠ΅ΠΌΡ Π΄ΡΡΠ³Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°ΠΊΠΊΠ°ΡΠ½Ρ Π½Π° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ΅ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΅ΠΌΡ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. Π§ΡΠΎ ΠΆ, ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΡΠ°ΠΉΠ», ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π²Π°ΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½ΠΈΠΊΠΎΠΌΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ Π΅Π΅ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π»ΡΠ΄ΡΠΌ ΠΈ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΈΠΌ Π΄Π²Π° ΡΡΠΎΠ²Π½Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ:
- ΠΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ: ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ
- Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π½ΠΈΠ΅: ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡ
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²
Π€Π°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΠ΅, Π±ΡΠ΄ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΡΠ·ΠΈΠ½Π΅ 30 Π΄Π½Π΅ΠΉ , ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°.ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π²Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ. Π€Π°ΠΉΠ»Ρ Π² ΠΊΠΎΡΠ·ΠΈΠ½Π΅ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅ΡΡΠΎ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΌΠ΅ΡΡΠΎ, Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΈΡ ΠΈΠ· ΠΊΠΎΡΠ·ΠΈΠ½Ρ Π²ΡΡΡΠ½ΡΡ.
ΠΠ΅ΡΡΠΈΠΈ Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΡΠ°Π½ΡΡΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 14 Π΄Π½Π΅ΠΉ Π² Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌ ΠΏΠ»Π°Π½Π΅ ΠΈ Π΄ΠΎ 90 Π΄Π½Π΅ΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΠΈΠ· ΠΏΠ»Π°ΡΠ½ΡΡ ΠΏΠ»Π°Π½ΠΎΠ².
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΡ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² Π ΠΎΡΡΠΈΡ ΠΈ Π€ΠΈΠ½Π»ΡΠ½Π΄ΠΈΡ .
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ ΠΎΡΠ΅Π½Ρ ΡΠΎΠΌΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎ Π΅Π³ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ½ΠΈ Π½Π΅ ΠΎΡΠ²Π΅ΡΠΈΠ»ΠΈ Π½Π° ΠΌΠΎΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅ ΠΏΠΈΡΡΠΌΠ° ΠΈ Π½Π΅ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ»ΠΈ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΡΡΠΎΠΌ. ΠΠ½ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Ρ Π»ΠΈ ΡΠ°ΠΉΠ»Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΠΊΠ°ΠΊΡΡ Π·Π°ΡΠΈΡΡ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅ΡΡ ΠΊ ΡΡΠΎΠΌΡ, Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΡΠ°Π²ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π―Π½Π΄Π΅ΠΊΡΠ° Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ³Π°Π΄ΡΠ²Π°ΡΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π·Π°ΡΠΈΡΠ°ΡΡ Π½Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ. ΠΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, GDPR ΠΈΠ»ΠΈ HIPAA).
ΠΠ½ΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΡ Ρ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠ°Π·Π³Π»Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²Π°ΡΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ Π»ΠΈΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ pCloud ΠΈ Sync.com). ΠΡΠΎ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΡΠ°Π·Π³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Ρ ΠΌΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±Ρ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π²Π°ΠΌ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° Π½Π°ΡΠΈ 10 Π»ΡΡΡΠΈΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² ΠΎΠ±Π»Π°ΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ ΠΈ Π½Π°ΠΉΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° ΠΎΠ±Π»Π°ΡΠ½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΠΈ. .
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΄Π²ΡΡ ΡΡΠ°ΠΏΠ½ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ , Ρ ΠΎΡΡ ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΅ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΊΡΠΎΡ.
ΠΠ½Π»Π°ΠΉΠ½-ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΎΠ±Π»Π°ΡΠ½ΡΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ Π² Π±Π°Π·Π΅ ΡΠ°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ². ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ°ΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ²ΡΠ·ΠΈ ΠΎΡΠ΅Π½Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ, Π΄Π°ΠΆΠ΅ ΠΈΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΏΡΠΎΡΡΠΎ Π·Π°Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Ρ ΠΏΠ»Π°ΡΠ½ΡΠΌΠΈ ΡΠ°ΡΠΈΡΠ½ΡΠΌΠΈ ΠΏΠ»Π°Π½Π°ΠΌΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ. ΠΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ Ρ Π½ΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡΡ ΠΈΠΌ Π½Π°ΠΏΡΡΠΌΡΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Word, Excel ΠΈ Powerpoint
ΠΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π½Π° ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡΠ½ΠΎ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Smart TV Π΄Π»Ρ LG
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΎΡ LG Smart TV, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΡΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° ΡΠ΅ΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Π΄Π»Ρ Smart TV. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΉΡΠΈ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ LG, Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΅Π³ΠΎ ΠΈ Π²ΠΎΠΉΡΠΈ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
ΠΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π° Android ΠΈ iOS . ΠΠ° ΠΌΠΎΠ΅ΠΌ iPhone 6s ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠ»Π°Π²Π½ΠΎ. Π ΡΡΠΎΠΌ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ ΡΠ²ΠΎΠ΅ Π΄Π΅Π»ΠΎ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π·Π°Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Ρ, ΡΡΠΎ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π»Ρ Π²Π°Ρ, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ Π² ΡΠ΅ΡΠΈ, ΡΡΠΎ Π·Π°ΠΉΠΌΠ΅Ρ ΡΠ°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ — Π² ΡΠ΅Π»ΠΎΠΌ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΎΠ±Π»Π°ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ. Π¦Π΅Π½Ρ ΠΈ ΠΏΠ»Π°Π½Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ΅Π΄Π½ΠΈΠΌΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠ±Π»Π°ΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΡΠΎ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π½Π΅ Π±Π΅Π· Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ². Π£ Π½Π΅Π³ΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ (ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π»ΡΠ±ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ) ΠΈ ΠΎΡΠ΅Π½Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ , ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² .ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΌΠ΅Π½Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ ΠΈ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΏΠ°ΡΠ°ΡΡΡΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ Π½Π° ΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΎΡ ΡΠ°ΠΊΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ Π―Π½Π΄Π΅ΠΊΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ, ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Π ΠΎΡΡΠΈΠΈ ΠΈ Π€ΠΈΠ½Π»ΡΠ½Π΄ΠΈΠΈ, Π° ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π°ΠΏΠ°Π΄Π½ΡΡ Π°Π³Π΅Π½ΡΡΡΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π²Π°ΡΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ. ΠΡΠ»ΠΈ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π»ΡΡΡΠΈΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠΎΠΉΠ΄ΠΈΡΠ΅, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΡΡΠΎ Π½Π΅ ΡΠΎΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ³Π»Π°ΡΠ°ΡΡΡΡ.
ΠΠ°Π΄Π΅ΡΡΡ, ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π²ΡΠ΅, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π·Π½Π°ΡΡ ΠΎ Π―Π½Π΄Π΅ΠΊΡΠ΅.ΠΠΈΡΠΊ Π² ΡΡΠΎΠΌ ΠΎΠ±Π·ΠΎΡΠ΅ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ°. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π²ΠΎΠΏΡΠΎΡΡ Π±Π΅Π· ΠΎΡΠ²Π΅ΡΠ°, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π½ΠΈΠΆΠ΅, ΠΈ Ρ ΠΎΡΠ²Π΅ΡΡ Π½Π° Π½ΠΈΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ!
Π―Π½Π΄Π΅ΠΊΡ ΠΠΈΡΠΊ — ArchWiki
Π―Π½Π΄Π΅ΠΊΡ ΠΠΈΡΠΊ — ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ Π―Π½Π΄Π΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π°Π΅Ρ Π²Π°ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²Π°ΡΠΈΠΌ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΌ, Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌ Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΡ.
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π―Π½Π΄Π΅ΠΊΡ ΠΠΈΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ Ρ ΠΠΈΡΠΊΠΎΠΌ,
- ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΏΠ°ΠΏΠΊΠΈ,
- Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΠΏΠΎΠΊ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΡΠ½Π΄Π΅ΠΊΡ-Π΄ΠΈΡΠΊ AUR ΠΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ Linux ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΈΠ· AUR. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ CLI — Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΡΠΌ. # ΠΠ΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
Π§ΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΎΠΊΡΠΈ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅
$ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ½Π΄Π΅ΠΊΡ-Π΄ΠΈΡΠΊΠ°
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΡΠ½Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ°Π³Π°, ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π―Π½Π΄Π΅ΠΊΡ ΠΠΈΡΠΊ.
ΠΠΎΠΌΠ°Π½Π΄Ρ
Π£ΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠ°ΠΏΠΊΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² man yandex-disk
ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
$ ΡΠ½Π΄Π΅ΠΊΡ-Π΄ΠΈΡΠΊ --help
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
-
setup
— ΠΠ°ΠΏΡΡΠΊ ΠΌΠ°ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
-
start
— ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½ ΠΈ Π½Π°ΡΠ°ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΠΏΠΎΠΊ. Π’Π΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ°ΠΉΠ» Β«.sync / statusΒ».
-
status
— ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΠ°ΡΡΡ Π΄Π΅ΠΌΠΎΠ½Π°: ΡΡΠ°ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠΈΠ±ΠΊΠΈ, Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΡΠ°ΡΡΡ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°.ΠΡΠ»ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π€ΠΠΠ, Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ ΡΡΠ°ΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
-
token
— ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½ OAuth, Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ — /.config/yandex-disk/passwd). ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ -p PASSWORD ΠΈΠ»ΠΈ —password PASSWORD Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ, ΡΠΎ ΠΏΠ°ΡΠΎΠ»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²Π²Π΅Π΄Π΅Π½ ΠΈΠ· STDIN.
-
ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ
— ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΈ Π²ΡΠΉΡΠΈ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ (Π΅ΡΠ»ΠΈ Π΄Π΅ΠΌΠΎΠ½ Π·Π°ΠΏΡΡΠ΅Π½, Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ).
-
ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ
— ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΉΠ» / ΠΏΠ°ΠΏΠΊΡ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° STDOUT.ΠΠ»Π΅ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ Π² ΠΏΠ°ΠΏΠΊΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ —overwrite, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
-
ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ
— ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Ρ / ΠΏΠ°ΠΏΠΊΠ΅.
ΠΠ΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅
http://help.yandex.com/disk/cli-clients.xml
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ — Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠ±Π»Π°ΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ β’ MintGuide.Org
Π€Π°ΠΉΠ» , ΡΠ΅ΡΠ²ΠΈΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ , Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΡ.ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΈΡΠΊΠ° Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ 11 ΠΠ .
ΠΠΎΠ»Π½Π°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Windows, OS X, iPhone, Android, Windows Phone, Linux !!!
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΠΈΡΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ³Π»Π°ΡΠΈΠ² Π΄ΡΡΠ·Π΅ΠΉ Π² Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ. ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ +0,5 ΠΠ, Π° ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½Π½ΡΠ΅ Π»ΡΠ΄ΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ +1 ΠΠ.
ΠΠ°Π³Π°Π·ΠΈΠ½
Π€Π°ΠΉΠ»Ρ Π½Π° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ΅ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠ»ΠΎΠΌΠΊΠ΅ ΡΠ΅Π»Π΅ΡΠΎΠ½Π° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. Π£ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΌΡΡ ΡΠ΅Π½Π½ΡΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ ΠΈ Π²Π°ΠΆΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠΎΡΡΡΠΏ
ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΌΠΈΡΠ°, Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΡ.
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π½Π° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ΅ Ρ ΡΠ΅ΠΌΡΠ΅ΠΉ, ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠ·ΡΡΠΌΠΈ. ΠΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΠ΅, ΠΊΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²Π°ΡΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ.
API
ΠΠ½ΡΠ΅Π³ΡΠΈΡΡΠΉΡΠ΅ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ Ρ WebDAV API.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊΠ° Π² Linux Mint (Ubuntu)
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅.
ΠΠ°ΡΠ΅ΠΌ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΎΠ΄Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
sudo echo Β«deb http://repo.yandex.ru/yandex-disk/deb/ stable mainΒ» | sudo tee -a /etc/apt/sources.list.d/yandex.list> / dev / null && wget http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG -O- | sudo apt-key add — && sudo apt-get update && sudo apt-get install -y yandex-disk
ΠΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ apt-get:
sudo echo Β«deb http://repo.yandex.ru / yandex-disk / deb / stable main Β»>> / etc / apt / sources.list.d / yandex.listsudo apt-get updatesudo apt-get install yandex-disk
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΡΡΡΠ½ΡΡ, Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΡΠ»ΠΊΠ΅ Π½ΠΈΠΆΠ΅:
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ setup:
- ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΠΈΡΠΊΠ°. ΠΡΠ»ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠΌΡ ΠΏΡΡΡΡΠΌ, Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΠΏΠ°ΠΏΠΊΠ° Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ.
- Π£ΠΊΠ°ΠΆΠΈΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ (Π΄Π° / Π½Π΅Ρ).
- Π£ΠΊΠ°ΠΆΠΈΡΠ΅, Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ (Π΄Π° / Π½Π΅Ρ).
- ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° Π―Π½Π΄Π΅ΠΊΡΠ΅.
- ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ Π½Π° Π―Π½Π΄Π΅ΠΊΡΠ΅.
- ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ~ / .config / yandex-disk Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ config.cfg .
ΠΠ° ΡΡΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½Π°. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π―Π½Π΄Π΅ΠΊΡ.ΠΠΈΡΠΊ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΡΡΠ°ΡΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ»ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΠ»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
Π£Π΄Π°ΡΠΈ !!!
Π‘Π°ΠΉΡ ΠΏΠ΅ΡΠ΅ΡΠ΅Π» Π½Π° Π½ΠΎΠ²ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ ΠΌΠ½Π΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΌΠ½Π΅ ΡΠ²ΠΎΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, Π²ΡΠ΄Π΅Π»ΠΈΠ² ΡΡΠΎΡ ΡΠ΅ΠΊΡΡ ΠΈ Π½Π°ΠΆΠ°Π² Ctrl + Enter .
Π―Π½Π΄Π΅ΠΊΡΠ΄ΠΈΡΠΊ
YANDEX DΔ°SK 2019 SΓPER TΓRK Δ°FΕA (LΔ°NK AΓIKLMADA 2020)
LΔ°NK: https: // tr.ΡΡΡΠ»ΠΊΠ° / vK2Vg
LΔ°NK: https://tr.link/vK2Vg
LΔ°NK: https://tr.link/vK2Vg
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π°ΡΡΠΈΠ²,
ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ½Π΄Π΅ΠΊΡ-Π΄ΠΈΡΠΊ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ nasΔ±l kullanΔ±lΔ±r mobil,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ arΕiv mega,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ dev arΕiv,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΓΌnlΓΌ arΕiv,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ yΓΌkleme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ arΕiv yeni,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ arΕiv fotoΔraf,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π°ΡΡΠΈΠ² 50 Π³Π±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ baΔlantΔ± engellendi sorunu,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ baΕak karahan,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ bilgisayardan kaldΔ±rma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ bΓΌyΓΌk arΕiv,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π±Π΅Π΄Π°Π²Π° Π°Π»Π°Π½,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ bΓΆrΓΌ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ baΔlantΔ± engellendi hatasΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ boyutu arttΔ±rma,
sΔ±fΔ±r bir ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ sΔ±fΔ±r bir ΡΡΡΠ»ΠΊΠ°,
Π΄ΠΈΡΠΊ ΡΠ½Π΄Π΅ΠΊΡΠ° Π°ΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠ½ΠΈ,
ΡΠΎΡΠΎΡΠΎΠΏ cs6 ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Γ§ΓΆp kutusundan silinen dosyalarΔ± geri getirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π΄Π΅Ρ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ dosya yΓΌkleme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π΄Π΅Π½ Π΄ΠΎΡΡ ΠΈΠ½Π΄ΠΈΡΠΌΠ΅,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π΄ΠΎΡΡ ΠΈΠ½Π΄ΠΈΡΠΌΠ΅,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ depolama alanΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ dosya indirme limiti aΕΔ±ldΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π΄ΠΈΠ»Π°Π½ Π΄Π΅ΡΠ΅,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ dil deΔiΕtirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π΅ Π½Π°ΡΡΠ» ΠΊΠ°ΠΉΡΡ ΠΎΠ»ΡΠ½ΡΡ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π΅ ΠΊΠΈΡΠ°ΠΏ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ epub kitap,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ engellendi,
ΠΠ»Π²ΠΈΡ ΠΠ°ΠΉΠ½Π΅ΡΠ°Ρ ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ,
en iyi ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ,
Π΄ΠΈΡΠΊ ΡΠ½Π΄Π΅ΠΊΡ evonmoss,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ fotoΔraf arΕivi,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΎΡΠΎ Π°ΡΡΠΈΠ²,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΈΠ»ΡΠΌ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ fotoΔraf yΓΌkleme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΈΠ»ΡΠΌ Π°ΡΡΠΈΠ²ΠΈ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΈΠ»ΡΠΌ Π°ΡΡΠΈΠ²ΠΈ 2019,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΈΠ»ΡΠΌ Π°ΡΡΠΈΠ²ΠΈ 2018,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ fotoΔraf silme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΈΠ»ΡΠΌ Π°ΡΡΠΈΠ²ΠΈ 2017,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΈΠ»ΡΠΌ indirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ gb arttΔ±rma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π³ΠΈΡΠΈΡ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ geΓ§miΕi silme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ giriΕ yap,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ geΓ§miΕ temizleme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ gΓΌncel,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Ρ
Π°Π΄ΠΈΡ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ hΔ±zlΔ± indirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ hesap aΓ§ma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ hesabΔ±mΔ± unuttum,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ https yadi sk d l3bf3rxf3u2hdp,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ hΔ±zlΔ± dosya yΓΌkleme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ hesap aΓ§,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ hesabΔ± nasΔ±l aΓ§Δ±lΔ±r,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ hande,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ indirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ indirme nasΔ±l,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ indirme limiti aΕΔ±ldΔ± sorunu,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ indirme sΔ±nΔ±rΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ indir,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ inci,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ indirme sorunu,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ile dosya paylaΕΔ±mΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ingilizce kitaplar,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ kayΔ±t olma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΊΠ°Π»Π΄ΡΡΠΌΠ°,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΊΠΈΡΠ°ΠΏ Π°ΡΡΠΈΠ²,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΊΠ°ΠΉΠ΄Π΅Π΄ΠΈΠ»Π΅ΠΌΠ΅Π΄ΠΈ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ kitap nasΔ±l indirilir,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΊΠΈΡΠ°ΠΏ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ kayΔ±t,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ kapasitesi arttΔ±rma hilesi,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΊΠ°ΠΉΠ΄ΠΎΠ»,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ kayΔ±t olmuyor,
ΡΠ½Π΄Π΅ΠΊΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΈΡΠΊ 2019,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π»ΠΈΠ»ΠΎ,
ΡΠ½Π΄Π΅ΠΊΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΈΡΠΊ aΓ§ma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π»ΠΈΠ½ΠΊΠΈ,
ΡΠ½Π΄Π΅ΠΊΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΈΡΠΊ behzat Γ§,
ΡΠ½Π΄Π΅ΠΊΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΈΡΠΊ paylaΕΔ±mΔ±,
ΡΠ½Π΄Π΅ΠΊΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΈΡΠΊ PaylaΕma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΌΠ΅Π³Π° Π°ΡΡΠΈΠ²,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΌΠΎΠ±ΠΈΠ»,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ mΓΌzik arΕivi 2019,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ mΓΌzik arΕivi 2018,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΌΡΠ·ΠΈΠΊ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ mΓΌzik arΕivi,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ mp3 arΕivi,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ merve sanay,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΌΠ΅Π³Π°,
melek ΓΆzΓ§aΔan ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ nedir nasΔ±l kullanΔ±lΔ±r,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ nasΔ±l kullanΔ±lΔ±r,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ nasΔ±l indirilir,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ nasΔ±l kullanΔ±lΔ±r telefon,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ nasΔ±l Π²ΠΈΠ΄Π΅ΠΎ indirilir,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ne iΕe yarar,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ nilay hoca,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ nasΔ±l kullanΔ±lΔ±r ios,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ oluΕtur,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ oyun arΕivi,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ otomatik yΓΌkleme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΓΆznur garip,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΓΆzellikleri,
duru ΓΆnver ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π΄Π»Ρ ΠΊΠ°Π·Π°Π½ΠΌΡ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ paylaΕΔ±m,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ pdf,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΏΡΠΎΠΌΠΎΡΡΠΎΠ½ ΠΊΠΎΠ΄Ρ 2019,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ PaylaΕma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° arΕivi,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ pdf Π°ΡΡ
ΠΈΠ²,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ paylaΕΔ±mlarΔ±,
ΠΏΡΠΎΠΌΠΎΠΊΠΎΠ΄ ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊΠ° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ pdf ΠΊΠΈΡΠ°ΠΏ Π°ΡΡΠΈΠ²ΠΈ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ rusΓ§a hata,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ rar dosyasΔ± aΓ§ma,
ΠΎΠ±Π·ΠΎΡ ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊΠ°,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΡΡΡΠ°,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΎΡΡ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ silme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ sΔ±nΔ±r aΕΔ±ldΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠΎΡΠ½ΠΌΠ°,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ silinen fotoΔraflarΔ± geri getirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ sΔ±fΔ±r bir,
Π΄ΠΈΡΠΊ ΡΠ½Π΄Π΅ΠΊΡ merve sanay,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Εifremi unuttum,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Εifre deΔiΕtirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Εifre kΔ±rma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΡΡ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠ΅Π»Π΅ΡΠΎΠ½,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ tΓΌrkΓ§e yapma,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠ΅Π½ Π΄ΠΎΡΡ ΠΈΠ½Π΄ΠΈΡΠΌΠ΅,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠ΅ ΠΊΠΈΡΠ°ΠΏ Π°ΡΠ°ΠΌΠ°,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΡΡ Π°ΠΉΡ pdf,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ toplu indirme,
ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ½Π΄Π΅ΠΊΡ-Π΄ΠΈΡΠΊ Π½Π° ΡΡΡΠΊ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠ°ΠΉΡ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ uygulamasΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π΄ΠΈΡΠΊΠ° hΔ±zΔ±,
API Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊΠ°,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΓΌcretsiz depolama alanΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΓΌye olmadan indirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΓΌcretsiz alan,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΓΌnlΓΌler,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ indirme,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ aΓ§Δ±lmΔ±yor,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ½Π΄ΠΈΡ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ indirici,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ nasΔ±l indirilir,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΊ,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ·Π»Π΅ΠΌΠ΅,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ Π°ΡΡ
ΠΈΠ²,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ Π²ΠΈΠ΄Π΅ΠΎ Π°ΡΠ°ΠΌΠ°,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ yabancΔ± arΕiv,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΠΉΠ΅Π½ΠΈ Π°ΡΡΠΈΠ²,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ yeterli alan yok,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ yeterli alan yok hatasΔ±,
ΡΠ½Π΄Π΅ΠΊΡ Π΄ΠΈΡΠΊ ΡΠ΄ΠΈ.