{"id":500624,"date":"2026-10-28T11:31:26","date_gmt":"2026-10-28T08:31:26","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=500624"},"modified":"2026-10-28T11:31:26","modified_gmt":"2026-10-28T08:31:26","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=500624","title":{"rendered":"PocketDeploy: \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u0432\u043e\u0439 Bluesky PDS \u043d\u0430 Android \u2014 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0438 \u0433\u0434\u0435 \u043f\u043e\u043a\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0434\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u043c\u0443 Android \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430: \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0430\u0439\u0442 \u0441 API \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0418\u0418-\u0430\u0433\u0435\u043d\u0442 \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0435\u043c\u0443 \u043f\u043e\u0440\u0443\u0447\u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0417\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u044f \u0432\u0437\u044f\u043b \u043f\u043e\u0434\u0445\u043e\u0434 Coolify; PocketDeploy \u2014 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0441 Coolify \u043c\u044b \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u0441 JavaScript API. \u0417\u0430\u0442\u0435\u043c \u2014 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 HTTPS-\u0430\u0434\u0440\u0435\u0441, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f MCP-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 Node.js runtime \u0447\u0435\u0440\u0435\u0437 Termux. \u0412 <strong>0.7.0-alpha.2<\/strong> \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Bluesky PDS \u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 Android, \u0430 \u0435\u0433\u043e \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432\u0438\u0434\u0435\u043d \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c Relay \u0438 AppView.<\/p>\n<p><a href=\"https:\/\/pocketdeploy.vibecoding.by\/\" rel=\"noopener nofollow\">\u0421\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a> \u0442\u043e\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 HTML \u0438\u0437 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e Android. \u042d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 Android 11 x86_64 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 2048 \u041c\u0438\u0411 RAM, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 VPS; \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0432 \u044d\u0442\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b. \u041e\u0431\u043b\u0430\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0433\u0434\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f Doze, \u043d\u0430\u0433\u0440\u0435\u0432, \u0431\u0430\u0442\u0430\u0440\u0435\u044f \u0438 \u0441\u043c\u0435\u043d\u0430 \u0441\u0435\u0442\u0438.<\/p>\n<p>\u042f \u0437\u0430\u0434\u0430\u044e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f; \u043a\u043e\u0434, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0418\u0418-\u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0443\u0437\u0438\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0443\u044e \u0446\u0435\u043b\u044c: \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442\/PDS \u0441 HTTPS, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0435\u0439. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u0430\u0436\u043d\u0435\u0435 \u0434\u043e\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c, \u0447\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b. \u041d\u0438\u0436\u0435 \u2014 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u044b \u0438 \u0441\u0431\u043e\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u043f\u0443\u0442\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u0434\u043e\u043c\u0435\u043d \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<blockquote>\n<p><strong>\u0421\u0440\u0435\u0437 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0430\u043b\u044c\u0444\u044b.<\/strong> APK 0.7.0-alpha.2, versionCode 10, \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 <code>@atproto\/pds<\/code> 0.5.49. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u0442\u044c\u0438: <strong>26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026, \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f \u2014 02:20:23 UTC; \u0441\u0430\u0439\u0442 \u0438 PDS health \u2014 02:13:39 UTC<\/strong>. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0438. \u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433 \u0441\u0442\u0430\u0440\u043e\u0433\u043e ANR System UI; \u043e\u043d \u0437\u0430\u043a\u0440\u044b\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0430\u0439\u0442 \u0438 PDS \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0438\u0436\u0435. \u041c\u0430\u0442\u0440\u0438\u0446\u0430 Android 11\/15 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u0435\u0436\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 0.6; \u043c\u0438\u043d\u0438\u043c\u0443\u043c RAM \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432, \u043f\u043e\u043b\u043d\u044b\u0439 OAuth, \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 24\/7 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044b.<\/p>\n<\/blockquote>\n<h3>\u0427\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/h3>\n<p>\u0412 PocketDeploy \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432. \u041e\u043d\u0438 \u043d\u0435 \u0434\u0430\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0438 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0440\u0443\u0436\u0443 \u043e\u0434\u043d\u0438\u043c \u043e\u0431\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0418\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447, \u0437\u0430\u043c\u0435\u0442\u043a\u0438, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 JSON API<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 Java\/Rhino runtime; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u043b\u0438 \u041f\u041a \u043f\u043e USB<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 API \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u0438\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0413\u043e\u0442\u043e\u0432\u044b\u0439 HTML \u043d\u0430 Android; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 HTTPS-\u0448\u043b\u044e\u0437<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043b\u0435\u043d\u0434\u0438\u043d\u0433\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b GET\/HEAD, backend \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Node.js-\u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0437 Git<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 runtime \u0432 Termux<\/p>\n<\/td>\n<td>\n<p align=\"left\">Node\/Git-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b \u043d\u0430 host; \u0441\u043a\u0432\u043e\u0437\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 GitLab clone \u043d\u0430 Android \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0432\u043e\u0439 Bluesky PDS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Node.js-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432 Termux; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u043c\u0435\u043d \u0438 \u043f\u0440\u043e\u043a\u0441\u0438 \u0441 POST\/WebSocket<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0434\u0438\u043d \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 Relay \u0438 AppView<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0430\u0433\u0435\u043d\u0442\u043e\u043c<\/p>\n<\/td>\n<td>\n<p align=\"left\">MCP-\u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u043c \u041f\u041a, \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 Android-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043e\u043a\u043d\u0435<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043b\u0435\u043d\u0434\u0438\u043d\u0433\u0430 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 CRUD API \u0434\u043e\u0441\u043a\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0410 \u0434\u043e\u0441\u0442\u0443\u043f \u043a PDS \u043d\u0435 \u0434\u0430\u0451\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a MCP, Termux-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u0438\u043b\u0438 ADB. \u0414\u043b\u044f \u0441\u0430\u0439\u0442\u0430 \u0438 PDS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0448\u043b\u044e\u0437\u0430.<\/p>\n<h3>\u0413\u0434\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 runtime \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 Java UI, \u0441\u043b\u0443\u0436\u0431\u044b \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430, HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 Rhino. \u0423 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0432\u043e\u0438 \u043f\u043e\u0440\u0442, \u0440\u0435\u043b\u0438\u0437\u044b \u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 HTML, CSS \u0438 JavaScript \u0441 Android; \u0437\u0430\u043f\u0440\u043e\u0441 \u043a <code>\/api\/*<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0442\u0430\u043c \u0436\u0435. \u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043d\u0435 \u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0431\u044d\u043a\u0435\u043d\u0434\u0430.<\/p>\n<p>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 root, Termux \u0438 \u041f\u041a. \u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u041f\u041a \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f stdio-\u043c\u043e\u0441\u0442\u0430 MCP \u0438 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 HTTPS-\u0448\u043b\u044e\u0437. \u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u0440\u043e\u043b\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 VPS: \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 Mac \u0432 \u0432\u044b\u0434\u0430\u0447\u0435 \u0441\u0430\u0439\u0442\u0430 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442. \u0412 \u043b\u044e\u0431\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0448\u043b\u044e\u0437\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 Android \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/7c\/6c\/8a\/7c6c8a696e6f3804a32be4f65b196af0.jpg\" alt=\"\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 PocketDeploy: HTTP-\u0441\u0435\u0440\u0432\u0435\u0440, Rhino \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 Android\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/7c\/6c\/8a\/7c6c8a696e6f3804a32be4f65b196af0.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/7c\/6c\/8a\/7c6c8a696e6f3804a32be4f65b196af0.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 PocketDeploy: HTTP-\u0441\u0435\u0440\u0432\u0435\u0440, Rhino \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 Android<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0421\u0445\u0435\u043c\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e runtime \u0438\u0437 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 0.6. \u041e\u043d\u0430 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0437\u0436\u0435 PDS: \u0442\u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c Termux, \u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0448\u043b\u044e\u0437 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 VPS.<\/em><\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0434\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u0438\u0437 \u043f\u044f\u0442\u0438 \u0444\u0430\u0439\u043b\u043e\u0432: <code>index.html<\/code>, <code>app.js<\/code>, <code>styles.css<\/code>, <code>backend.js<\/code> \u0438 <code>pocketdeploy.json<\/code>. \u0412 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438. \u0424\u0430\u0439\u043b\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437, \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u0430\u0434\u0430\u0447 \u043b\u0435\u0436\u0430\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/95\/77\/62\/957762f3639ccd9131cc566b71771e85.jpg\" alt=\"\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u0434\u043e\u0441\u043a\u0430: \u0447\u0435\u0442\u044b\u0440\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0438\u0437 Android API\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/95\/77\/62\/957762f3639ccd9131cc566b71771e85.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/95\/77\/62\/957762f3639ccd9131cc566b71771e85.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u0434\u043e\u0441\u043a\u0430: \u0447\u0435\u0442\u044b\u0440\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0438\u0437 Android API<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0421\u0435\u0430\u043d\u0441 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430: \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d \u0447\u0435\u0440\u0435\u0437 USB\/adb-\u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043a API Android 11 \u0441 0.6.0-alpha.3 \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u043b\u044f \u044d\u0442\u0438\u0445 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0447\u0442\u0435\u043d\u0438\u0435, \u0431\u0435\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e CRUD-\u043f\u0440\u043e\u0433\u043e\u043d\u0430. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u044b \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a \u2014 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435: \u00ab\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 Android\u00bb \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u00ab\u0413\u043e\u0442\u043e\u0432\u043e\u00bb \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u0451\u043c\u043a\u0443 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430.<\/em><\/p>\n<p>React \u0438\u043b\u0438 Vue \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u041f\u041a \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u0412 \u043d\u0451\u043c \u043d\u0435\u0442 npm-\u0441\u0431\u043e\u0440\u043a\u0438, Docker, Node.js SSR, SQL \u0438\u043b\u0438 WebSocket. \u0414\u043b\u044f Node.js \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0443\u0440 Termux: \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0430 Android \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043d\u0430 PDS. \u042d\u0442\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043a\u0432\u043e\u0437\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 Android \u2192 Termux \u2192 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 GitLab, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0449\u0451 \u0432\u043f\u0435\u0440\u0435\u0434\u0438.<\/p>\n<h3>\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/h3>\n<p>\u0414\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BF%D0%B5%D1%80%D0%B2%D1%8B%D0%B9-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA\" rel=\"noopener nofollow\">APK 0.7.0-alpha.2 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f<\/a> \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438; \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u043b\u044e\u0447\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u043d <code>minSdk 26<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c Android 8. \u042d\u0442\u043e \u043f\u043e\u0440\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 APK, \u0430 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430 \u044d\u0442\u043e\u0439 \u041e\u0421. \u041f\u0440\u0435\u0436\u043d\u0438\u0439 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 runtime \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 Android 11 \u0438 15; \u043d\u043e\u0432\u044b\u0439 PDS \u2014 \u043d\u0430 Android 11.<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 <strong>\u00ab\u0414\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u00b7 SPA + API + \u0431\u0430\u0437\u0430\u00bb<\/strong>. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>8081<\/code>: \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 <code>8080<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 <strong>\u00ab\u0422\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \/ \u041f\u041a \u043f\u043e USB\u00bb<\/strong> \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435. \u0417\u0430\u0442\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 <strong>\u00ab\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u00bb \u2192 \u00ab\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0430\u0439\u0442\u00bb<\/strong>: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 <strong>\u00abAPI-\u0442\u043e\u043a\u0435\u043d\u00bb<\/strong> \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u0434\u043e\u0441\u043a\u0443. \u041e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438; \u043f\u043e\u0441\u043b\u0435 \u0435\u0451 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0432\u0432\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440, \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0434\u043e\u0441\u043a\u0443 \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u043e\u043a\u0435\u043d. \u0417\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f: \u0435\u0451 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0440\u0435\u043b\u0438\u0437\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u041f\u041a, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e USB \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f USB-\u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<pre><code>adb -s DEVICE_SERIAL forward tcp:18081 tcp:8081# \u0412 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u041f\u041a: http:\/\/127.0.0.1:18081\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p><code>DEVICE_SERIAL<\/code> \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0437 <code>adb devices<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 MCP \u043d\u0435 \u043d\u0443\u0436\u043d\u044b.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/2e\/96\/b1\/2e96b1d4c68c1466fc0ff542ee218aa4.png\" alt=\"\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 PocketDeploy: \u0442\u0440\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 Android 11\" width=\"360\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/2e\/96\/b1\/2e96b1d4c68c1466fc0ff542ee218aa4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/2e\/96\/b1\/2e96b1d4c68c1466fc0ff542ee218aa4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 PocketDeploy: \u0442\u0440\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 Android 11<\/figcaption><\/div>\n<\/figure>\n<p><em>\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 Android 11: \u0442\u0440\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0410\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u0441\u043d\u0438\u043c\u043e\u043a 0.6.0-alpha.2, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u043e\u0433\u043e \u0441\u0435\u0430\u043d\u0441\u0430. \u042d\u0442\u043e \u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0440\u0430\u043d PDS \u0438 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0442\u0440\u0451\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435.<\/em><\/p>\n<h3>\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 API \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0435 \u0440\u0435\u043b\u0438\u0437\u0430<\/h3>\n<p>\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u2014 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>handle(request, db)<\/code>. \u041e\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0438 JSON. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 JavaScript \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0431\u0430\u0437\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"javascript\">function handle(request, db) {  if (request.path !== '\/api\/counter') {    return {status: 404, body: {error: 'Not found'}};  }  if (request.method === 'POST') {    var value = (db.get('counter') || 0) + 1;    db.set('counter', value);    return {body: {value: value}};  }  if (request.method === 'GET') {    return {body: {value: db.get('counter') || 0}};  }  return {status: 405, body: {error: 'Method not allowed'}};}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0438 \u043f\u0440\u044f\u043c\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0447\u0435\u0440\u0435\u0437 USB-\u043f\u0440\u043e\u0431\u0440\u043e\u0441, API \u0442\u0440\u0435\u0431\u0443\u0435\u0442 Bearer-\u0442\u043e\u043a\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0415\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 frontend; \u044d\u0442\u043e \u0441\u0435\u043a\u0440\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430, \u0430 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432. \u0412 \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u0441\u043a\u0435 \u0442\u043e\u043a\u0435\u043d \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0434\u043e \u0435\u0451 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<p>\u0411\u0430\u0437\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 JSON-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 Java Properties v1: <code>data\/records.db<\/code>, \u0434\u043e 256 \u043a\u043b\u044e\u0447\u0435\u0439, 64 \u041a\u0438\u0411 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 2 \u041c\u0438\u0411 \u043d\u0430 \u0444\u0430\u0439\u043b. \u041a\u0430\u0436\u0434\u044b\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 backend \u0447\u0438\u0442\u0430\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0430\u0439\u043b \u0446\u0435\u043b\u0438\u043a\u043e\u043c; \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441\u0442\u0430\u0442\u0438\u043a\u0438 \u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0430\u0437\u0443 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442. \u0417\u0430\u043f\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, <code>fsync<\/code> \u0438 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435. \u042d\u0442\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438.<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 2xx \u0438\u043b\u0438 3xx. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u0431\u043e 4xx\/5xx \u043e\u0442\u043c\u0435\u043d\u044f\u044e\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430. \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 PATCH \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u0423 TaskBoard \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0434\u043e \u043a\u043b\u044e\u0447\u0435\u0439: \u0437\u0430\u0434\u0430\u0447\u0430 <code>t7<\/code> \u043b\u0435\u0436\u0438\u0442 \u0432 <code>task_t7<\/code>, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u2014 \u0432 <code>task_next<\/code>. \u041f\u0440\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0438 \u0432 200 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 201 \u043a\u043b\u044e\u0447 \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 256. \u0423\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0442\u0435\u0440\u0435\u0442\u044c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/2e\/af\/7d\/2eaf7d3c5ea4913bf36dce6574114f9b.jpg\" alt=\"\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 t7: \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u044b \u0438\u0437 Android\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/2e\/af\/7d\/2eaf7d3c5ea4913bf36dce6574114f9b.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/2e\/af\/7d\/2eaf7d3c5ea4913bf36dce6574114f9b.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 t7: \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u044b \u0438\u0437 Android<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0422\u043e\u0442 \u0436\u0435 \u0441\u0435\u0430\u043d\u0441 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, \u043c\u0430\u0440\u0448\u0440\u0443\u0442 <\/em><code><em>\/task\/t7<\/em><\/code><em>. \u041e\u0442\u043a\u0440\u044b\u0442\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c \u0438\u0437 API. \u041a\u043d\u043e\u043f\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043a\u0430\u0434\u0440\u0435 \u043d\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u043b\u0430\u0441\u044c: \u0441\u043d\u0438\u043c\u043e\u043a \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435.<\/em><\/p>\n<h4>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043e\u0434\u043d\u0438\u043c HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c<\/h4>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 HTTP-worker \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 16 \u0437\u0430\u0434\u0430\u043d\u0438\u0439. \u0422\u0430\u0439\u043c\u0435\u0440 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 <code>accept<\/code>, \u0435\u0449\u0451 \u0434\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043a\u0435\u0442. \u041f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044e \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f: keep-alive \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. \u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f API \u043f\u043e \u0444\u0430\u0439\u043b\u0443 \u0431\u0430\u0437\u044b \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c: \u0447\u0435\u0442\u044b\u0440\u0435 worker \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0443\u044e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f Java\/Rhino \u0438\u043b\u0438 \u043e\u0442\u043c\u0435\u043d\u0443 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. \u0423 Rhino \u0441\u0432\u043e\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u042d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0427\u0430\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0440\u0435\u0434\u0435\u043b \u0438 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">JSON-\u0442\u0435\u043b\u043e API<\/p>\n<\/td>\n<td>\n<p align=\"left\">64 \u041a\u0438\u0411; \u0434\u043b\u044f POST\/PUT\/PATCH \u043d\u0443\u0436\u043d\u044b <code>Content-Length<\/code> \u0438 <code>Content-Type: application\/json<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a <code>backend.js<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">128 \u041a\u0438\u0411 UTF-8<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">JSON-\u043e\u0442\u0432\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">256 \u041a\u0438\u0411; \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438 Promise \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 HTTP<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>Transfer-Encoding<\/code> \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043e\u0442\u0432\u0435\u0440\u0433\u0430\u044e\u0442\u0441\u044f; chunked upload \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043d\u043e\u0435 JSON-\u0442\u0435\u043b\u043e. \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u043c\u0443 <code>handle<\/code>; runtime \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0435\u0433\u043e \u0440\u0430\u043d\u044c\u0448\u0435. CORS \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e origin \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u2014 frontend \u0438 API \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u041e\u0448\u0438\u0431\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 stack trace \u0438 \u043f\u0443\u0442\u0435\u0439 \u0444\u0430\u0439\u043b\u043e\u0432; \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438, \u0431\u0435\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0431\u0430\u0437\u044b \u0438 \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0435 webroot \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0440\u0435\u043b\u0438\u0437\u043e\u0432. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0431\u0430\u0437\u0443 \u0432 \u043d\u043e\u0432\u044b\u0439 bundle; \u043e\u0442\u043a\u0430\u0442 \u043a\u043e\u0434\u0430 \u043d\u0435 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0430\u0437\u044b. \u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441 \u043d\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e backup\/restore \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0444\u043b\u0430\u0439\u043d-\u043a\u043e\u043f\u0438\u0438 PDS, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0438\u0436\u0435, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0443. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u0432 <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/docs\/BACKEND.md\" rel=\"noopener nofollow\">\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 \u0431\u044d\u043a\u0435\u043d\u0434\u0430<\/a>.<\/p>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e<\/h3>\n<p>\u0414\u0435\u043f\u043b\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437, \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c. \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u043a\u0430\u0442\u0430. \u041a\u0432\u043e\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0443\u0441\u044f \u0440\u0435\u043b\u0438\u0437\u0443, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0442\u0430\u0440\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0440\u0438 merge: \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0447\u0430\u043b\u043e \u043e\u0442\u0441\u0447\u0451\u0442\u0430 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f. \u0421\u0442\u0430\u0440\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0443\u0442\u0440\u043e\u043c, \u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0447\u0435\u0440\u043e\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u0430\u044f \u043e\u0442\u0441\u0440\u043e\u0447\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043f\u0430\u0440\u044b \u00ab\u0442\u0435\u043a\u0443\u0449\u0438\u0439\/\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439\u00bb, \u0430 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445, \u0430 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u043e\u0432\u043d\u043e \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443.<\/p>\n<p>\u042d\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0430\u0441 \u0434\u043b\u044f \u0443\u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u043c \u0434\u0435\u0441\u044f\u0442\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u044b\u043c \u0441\u0440\u043e\u043a\u043e\u043c \u043e\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0422\u0430\u043a\u043e\u0439 \u0441\u0440\u043e\u043a \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u0430\u0439\u043c-\u0430\u0443\u0442\u0430 \u043c\u0435\u0436\u0434\u0443 \u0447\u0442\u0435\u043d\u0438\u044f\u043c\u0438: \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u043e\u0434\u043b\u0435\u0432\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0434\u043a\u0438\u043c\u0438 \u0431\u0430\u0439\u0442\u0430\u043c\u0438. \u041d\u043e \u0441\u0442\u0430\u0440\u043e\u043c\u0443 HTML \u043e\u043d \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0440\u0435\u0436\u043d\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0414\u043b\u044f frontend \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u0438\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0445\u0435\u0448\u0430\u043c\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.<\/p>\n<p>Rhino \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 PocketDeploy. \u0414\u043e\u0441\u0442\u0443\u043f \u043a Java-\u043a\u043b\u0430\u0441\u0441\u0430\u043c \u0437\u0430\u043a\u0440\u044b\u0442, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0441\u0442\u0435\u043a\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438 \u0436\u0451\u0441\u0442\u043a\u043e\u0433\u043e \u0431\u044e\u0434\u0436\u0435\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435\u0442. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430.<\/p>\n<h3>PDS \u0432 Termux: \u0441\u0435\u0440\u0432\u0435\u0440 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0430 \u043d\u0435 \u0432\u0441\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c<\/h3>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0441\u0442\u0430\u043b \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 <code>@atproto\/pds<\/code> 0.5.49. PocketDeploy \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 AT Protocol \u0437\u0430\u043d\u043e\u0432\u043e: \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u0438\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u044b\u0435 npm-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c upstream-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 Termux. \u041d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c Android \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Termux 0.118.3, Node.js 24.22.1 \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 SQLite. \u041f\u0435\u0440\u0432\u0430\u044f \u0441\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0437\u0430\u043d\u044f\u043b\u0430 \u043e\u043a\u043e\u043b\u043e \u0441\u0435\u043c\u0438 \u043c\u0438\u043d\u0443\u0442; \u0441\u0432\u0435\u0436\u0435\u043c\u0443 bootstrap \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f <code>pkg update &amp;&amp; pkg upgrade<\/code> \u0438\u0437-\u0437\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a C++\/OpenSSL.<\/p>\n<p>PDS \u0445\u0440\u0430\u043d\u0438\u0442 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u044b, \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, SQLite \u0438 \u043c\u0435\u0434\u0438\u0430 \u043d\u0430 Android. \u041e\u0431\u0449\u0430\u044f \u043b\u0435\u043d\u0442\u0430, \u043f\u043e\u0438\u0441\u043a, \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044f \u0438 \u0441\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 Relay\/AppView \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u0441\u0435\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 PDS \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0435\u0441\u044c Bluesky \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u0432 \u0442\u0435\u043b\u0435\u0444\u043e\u043d. \u0420\u043e\u043b\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 <a href=\"https:\/\/atproto.com\/guides\/self-hosting\" rel=\"noopener nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u043f\u043e self-hosting<\/a>.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/80\/6b\/75\/806b756ad4137ffc0c402d5447dc05f3.png\" alt=\"PocketDeploy 0.7.0-alpha.2: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 Bluesky PDS \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c Android 11\" width=\"380\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/80\/6b\/75\/806b756ad4137ffc0c402d5447dc05f3.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/80\/6b\/75\/806b756ad4137ffc0c402d5447dc05f3.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>PocketDeploy 0.7.0-alpha.2: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 Bluesky PDS \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c Android 11<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d alpha.2 \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u043c Android 11. \u0423 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e PDS \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0438 \u043e\u0442\u043c\u0435\u043d\u0443 \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f; \u043e\u0442\u043c\u0435\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0440\u0435\u043b\u0438\u0437. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u2014 running\/ready. \u042d\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438.<\/em><\/p>\n<p>\u0412 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0437\u0430\u0434\u0430\u0451\u0442 \u0434\u043e\u043c\u0435\u043d \u0438 \u043f\u043e\u0440\u0442, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442, \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0433\u043e, \u0447\u0438\u0442\u0430\u0435\u0442 \u0436\u0443\u0440\u043d\u0430\u043b \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435. \u0417\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u043c\u0435\u043d\u0430 \u0432 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0435 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 DNS \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0414\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 HTTPS\/WebSocket-\u043f\u0440\u043e\u043a\u0441\u0438; read-only \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043b\u0435\u043d\u0434\u0438\u043d\u0433\u0430 \u0434\u043b\u044f PDS \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442.<\/p>\n<p>\u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043a\u043b\u044e\u0447\u0435\u0439 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0435 npm-\u0440\u0435\u043b\u0438\u0437\u0430. \u041a\u043b\u044e\u0447\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437: \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u0438\u043b\u0438 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u043b\u0447\u0430 \u043d\u043e\u0432\u044b\u043c. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 APK \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 npm-\u0440\u0435\u043b\u0438\u0437. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 <strong>\u00ab\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 PDS\u00bb<\/strong>; \u0441\u0431\u043e\u0440\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442\u044b. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 restart \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442 \u0441\u0442\u0430\u0440\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 rollback \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 PDS \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b: \u0443 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u0441\u0445\u0435\u043c\u0430 SQLite, \u0430 \u043f\u043e\u0442\u0435\u0440\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u2014 \u043d\u0430\u0440\u0443\u0448\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c. \u0414\u043b\u044f \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043e\u0444\u043b\u0430\u0439\u043d-\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433: \u0441\u043e\u0432\u043f\u0430\u043b\u0438 \u043a\u043b\u044e\u0447\u0438, \u043f\u0440\u043e\u0448\u043b\u0438 \u0447\u0435\u0442\u044b\u0440\u0435 SQLite <code>quick_check<\/code>, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 PDS \u043e\u0442\u0432\u0435\u0442\u0438\u043b health \u0438 \u0432\u0435\u0440\u043d\u0443\u043b \u0442\u043e\u0442 \u0436\u0435 CID \u043f\u0440\u043e\u0444\u0438\u043b\u044f. \u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u043a\u043e\u043f\u0438\u0438 \u0431\u044b\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u044b. \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0435 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 VPS-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<h4>\u041a\u0430\u043a \u043c\u044b \u043e\u0442\u043b\u0438\u0447\u0438\u043b\u0438 \u00ab\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u00bb \u043e\u0442 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438<\/h4>\n<p>\u041e\u0442\u0432\u0435\u0442 <code>\/_health<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0436\u0438\u0432\u043e\u0439 PDS. \u0414\u043b\u044f \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443:<\/p>\n<ol>\n<li>\n<p>Handle <code>android-lab.pds.pocketdeploy.vibecoding.by<\/code>, DID \u0438 \u0430\u0434\u0440\u0435\u0441 PDS \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 WebSocket <code>\/xrpc\/com.atproto.sync.subscribeRepos<\/code> \u043e\u0442\u0434\u0430\u0451\u0442 \u043a\u043e\u043c\u043c\u0438\u0442 \u0441 \u0442\u0435\u043c \u0436\u0435 CID \u043f\u0440\u043e\u0444\u0438\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p>Relay <code>bsky.network<\/code> \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c; \u0435\u0433\u043e \u0440\u0435\u0432\u0438\u0437\u0438\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 AppView \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044c.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/21\/02\/6f\/21026fcd0d1a60bf1b722dfdf1bf6030.jpg\" alt=\"\u041b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Android PDS \u0432\u0438\u0434\u0435\u043d \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c Bluesky\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/21\/02\/6f\/21026fcd0d1a60bf1b722dfdf1bf6030.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/21\/02\/6f\/21026fcd0d1a60bf1b722dfdf1bf6030.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Android PDS \u0432\u0438\u0434\u0435\u043d \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c Bluesky<\/figcaption><\/div>\n<\/figure>\n<p><em>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 AppView \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 Android. \u042d\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 Bluesky, \u043d\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 PocketDeploy. \u0414\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0441\u0442\u044b \u043b\u0435\u043d\u0442\u044b, \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0438\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/em><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0434\u0435\u0432\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, Relay \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b PDS offline. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 <code>requestCrawl<\/code> \u0434\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e hostname \u0431\u044b\u043b \u043f\u0440\u0438\u043d\u044f\u0442, \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0440\u043d\u0443\u043b\u0430 active. \u042d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u0435\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e health: \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0441\u0435\u0442\u0438 \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f.<\/p>\n<p><a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/scripts\/check-pds-federation.cjs\" rel=\"noopener nofollow\">Read-only \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u0438<\/a> \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u0415\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u0440\u0438\u0451\u043c\u043e\u0447\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0438\u0442 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0441 <code>cursor=0<\/code>; \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0435\u0433\u043e PDS. \u041f\u043e\u043b\u043d\u044b\u0439 <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/docs\/BLUESKY-PDS-VERIFICATION.md\" rel=\"noopener nofollow\">\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b alpha.2<\/a> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439.<\/p>\n<h4>\u0413\u0434\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/h4>\n<p>PDS \u0441\u043b\u0443\u0448\u0430\u0435\u0442 loopback. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u043f\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f\u043c, \u0438\u043c\u043f\u043e\u0440\u0442 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d; \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b SSRF-\u0437\u0430\u0449\u0438\u0442\u0430 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 upstream. \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 Android \u0432 AES-GCM envelope \u0441 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u043e\u0439 \u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443 \u0438 nonce, \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f HMAC; \u043e\u043a\u043d\u043e \u0441 \u043a\u043e\u0434\u043e\u043c \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043e <code>FLAG_SECURE<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 Termux-\u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u0434 \u043e\u0434\u043d\u0438\u043c Android UID. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0438\u0445 \u0432 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b: \u0440\u044f\u0434\u043e\u043c \u0441 PDS \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0447\u0443\u0436\u043e\u0439 npm-\u043a\u043e\u0434.<\/p>\n<p>\u0412 alpha.2 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438\u0434\u0451\u0442 \u043f\u043e \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u043e\u043c\u0443 lockfile. \u041f\u043e\u0441\u043b\u0435 <code>npm ci<\/code> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0439 backport \u0434\u043b\u044f Zod v3: \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b, \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0434\u043e \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438. \u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044f\u0432\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c \u043f\u0430\u0442\u0447 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 upstream.<\/p>\n<p>\u041e\u0441\u0442\u0430\u0432\u0448\u0430\u044f\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0441\u043a\u0440\u044b\u0442\u0430: \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 <code>npm audit<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <strong>26 high, 0 moderate<\/strong> \u2014 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e advisory Zod \u043f\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c, \u0430 \u043d\u0435 26 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 backport \u0440\u0430\u043d\u043e \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440 <strong>\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445<\/strong> \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445; \u043e\u0431\u0449\u0435\u0433\u043e \u0431\u044e\u0434\u0436\u0435\u0442\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439 alpha.2 \u043d\u0435\u0442. \u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 audit \u0441 39 \u0434\u043e 26 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/docs\/BLUESKY-PDS-DEPENDENCIES.md\" rel=\"noopener nofollow\">\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/a> \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u0412\u0445\u043e\u0434, refresh, AppView-\u043f\u0440\u043e\u043a\u0441\u0438 \u0438 logout \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0438. \u041f\u043e\u043b\u043d\u044b\u0439 OAuth \u0441 PAR, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, PKCE, DPoP, refresh \u0438 revoke \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442. \u041e\u0442\u0432\u0435\u0442 OAuth metadata \u0441\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c 200 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u044d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439. SMTP-\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0438 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b; \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043b\u0438\u0447\u043d\u043e\u0433\u043e SMTP \u0438\u043b\u0438 Resend API \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443. \u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 \u044d\u0442\u0443 \u0430\u043b\u044c\u0444\u0443 \u044f \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e.<\/p>\n<h3>\u0410\u0433\u0435\u043d\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442, \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442<\/h3>\n<p>MCP \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 Node.js stdio-\u043c\u043e\u0441\u0442 \u043d\u0430 \u041f\u041a \u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 Android-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 <code>127.0.0.1:18124<\/code>, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440: \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c, \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0435\u0433\u043e \u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442.<\/p>\n<p>\u0410\u0433\u0435\u043d\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b; \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u0434 \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043e\u043a\u043d\u0435 Android. \u0421\u0430\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 MCP-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0435 \u0434\u0430\u0451\u0442. \u0418\u043c\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u2014 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u0430\u044f \u043c\u0435\u0442\u043a\u0430, \u0430 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u0430\u044f \u043b\u0438\u0447\u043d\u043e\u0441\u0442\u044c. \u041a\u0430\u0436\u0434\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0441\u0440\u043e\u043a \u0438 \u043e\u0442\u0437\u044b\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041e\u0442\u0437\u044b\u0432 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043d\u043e \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0434\u0435\u043f\u043b\u043e\u0439.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/8b\/41\/2a\/8b412a0770c9dde5089457713927f832.png\" alt=\"\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d MCP: \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435\u0442\" width=\"360\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/8b\/41\/2a\/8b412a0770c9dde5089457713927f832.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/8b\/41\/2a\/8b412a0770c9dde5089457713927f832.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d MCP: \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435\u0442<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0410\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d 0.6.0-alpha.2: \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432\u043a\u043b\u044e\u0447\u0451\u043d, \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445 \u0437\u0430\u044f\u0432\u043e\u043a \u2014 \u043d\u043e\u043b\u044c. \u042d\u0442\u043e \u044d\u043a\u0440\u0430\u043d \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c, \u0430 \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0430\u0447\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0441\u044a\u0451\u043c\u043a\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u0430\u0433\u0435\u043d\u0442\u0430\u043c \u043d\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c.<\/em><\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043e\u0440\u0443\u0447\u0435\u043d\u0438\u044f \u00ab\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043e\u0431\u043d\u043e\u0432\u0438 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443\u00bb \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c <code>projects.read<\/code> \u0438 <code>projects.deploy<\/code>, \u0430 \u0432 Android \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0435\u043a\u0442. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 <code>backend.js<\/code> \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e <code>projects.backend<\/code>; \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u2014 <code>projects.runtime<\/code>. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u0430\u0432\u043a\u0443 HTML \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u0430\u0432\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u0415\u0441\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: replace-\u043d\u0430\u0431\u043e\u0440 \u0431\u0435\u0437 <code>backend.js<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0442\u043e\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 <code>projects.backend<\/code>. \u0412 merge-\u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0439 backend. \u041f\u0440\u0438 rollback \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0431\u0430\u0439\u0442\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u0430 \u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0440\u0435\u043b\u0438\u0437\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0434 \u043e\u0434\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439 <code>store<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0435 \u043f\u043e\u0434\u043c\u0435\u043d\u0438\u043b\u0430 \u0440\u0435\u043b\u0438\u0437 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u0423 MCP \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0431\u044e\u0434\u0436\u0435\u0442\u044b: \u0434\u043e 64 \u0444\u0430\u0439\u043b\u043e\u0432, 512 \u041a\u0438\u0411 \u043d\u0430 \u0444\u0430\u0439\u043b, 1 \u041c\u0438\u0411 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u043e 1,75 \u041c\u0438\u0411 \u043d\u0430 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 JSON-\u0437\u0430\u043f\u0440\u043e\u0441. \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u043b\u0435\u0448\u0435\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u041e\u0442\u0432\u0435\u0442 \u0447\u0442\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d; \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>structuredContent<\/code> \u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c <code>sourceReadLimited=true<\/code>: \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>null<\/code> \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u043f\u0443\u0441\u043a \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430 \u0438\u0437-\u0437\u0430 \u0431\u044e\u0434\u0436\u0435\u0442\u0430, \u0430 \u043d\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0430\u0439\u043b\u0430.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f ECDH \u0438 HMAC \u0441 nonce, \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438 \u0445\u0435\u0448\u0435\u043c \u0442\u0435\u043b\u0430; \u043c\u043e\u0441\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u043e\u0442\u0432\u0435\u0442\u0430 \u0434\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 JSON. \u0421\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 Android \u0448\u0438\u0444\u0440\u0443\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 Keystore. \u042d\u0442\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0437\u0430\u0434\u0430\u044e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043e\u0432\u0435\u0440\u0438\u044f, \u043d\u043e \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e shell \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u043e \u0432\u0441\u0435\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0430\u0433\u0435\u043d\u0442 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442. <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/docs\/MCP.md\" rel=\"noopener nofollow\">\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e MCP<\/a> \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h3>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u043e JavaScript<\/h3>\n<p>\u0412 0.6.0-alpha.3 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d \u00ab\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 SEO-\u0441\u0430\u0439\u0442 \u00b7 HTML \/ SSG\u00bb. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u0432 HTML, canonical, Open Graph, <code>robots.txt<\/code> \u0438 <code>sitemap.xml<\/code>. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u0440\u0435\u043d\u0434\u0435\u0440\u0435\u0440 \u043d\u0430 Android \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d: \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u041f\u041a \u0438\u043b\u0438 \u0432 CI, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 JavaScript \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c. \u041d\u043e \u043f\u0443\u0441\u0442\u0430\u044f SPA \u0441 \u043c\u0435\u0442\u0430\u0442\u0435\u0433\u0430\u043c\u0438 \u0438 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u0440\u043d\u0435\u0432\u044b\u043c <code>div<\/code> \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u0448 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>spaFallback:false<\/code>: \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c 404, \u0430 \u043d\u0435 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c.<\/p>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0430\u043a\u043e\u0439: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441, \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 HTML \u043d\u0430 \u041f\u041a \u0438\u043b\u0438 \u0432 CI, \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u0442\u044c canonical \u0438 sitemap, \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c build \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e:<\/p>\n<pre><code>node scripts\/pocket-seo.cjs dist --site-url https:\/\/your-site.pages.dev --json<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0430\u0443\u0434\u0438\u0442\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 build-\u043f\u0430\u043f\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442. \u041f\u043e\u0441\u043b\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0436\u0438\u0432\u044b\u0435 HTTP-\u0441\u0442\u0430\u0442\u0443\u0441\u044b, MIME \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u041a\u043e\u0434 \u0432\u044b\u0445\u043e\u0434\u0430 <code>0<\/code> \u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442. \u0414\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0443\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 build \u0438 \u0434\u0435\u043f\u043b\u043e\u0439.<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0435 \u043d\u0443\u0436\u0435\u043d Node 20+. \u041e\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, canonical, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b sitemap \u0438 crawler-\u0444\u0430\u0439\u043b\u044b. \u041e\u043d\u0430 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 JavaScript, \u043d\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 CSS \u0438 \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0438\u043a\u0430\u043c. \u0414\u0430\u0436\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u2014 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f, \u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 Google \u043a \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>\u041a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u0438\u0432\u043d\u044b\u0439 XML-\u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <code>urlset \u2192 url \u2192 loc<\/code>; \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e, \u0447\u0435\u043c \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0437\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438 XML-schema validator.<\/p>\n<p>\u0417\u0430\u043a\u0440\u044b\u0442\u0430\u044f \u0434\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 <code>noindex, nofollow<\/code> \u0438 \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 sitemap. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c robots \u0438 \u043c\u0435\u0442\u0430\u0442\u0435\u0433\u0438 \u043d\u0435 \u0437\u0430\u0449\u0438\u0449\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435: \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f API \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e. <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/docs\/SEO.md\" rel=\"noopener nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f SEO<\/a> \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0436\u0438\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 \/done \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043d\u043e \u043d\u0435 \u0441 \u043b\u044e\u0431\u044b\u043c curl<\/h4>\n<p>\u0423 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0439 TaskBoard \u0432\u043a\u043b\u044e\u0447\u0451\u043d <code>spaFallback:true<\/code>. \u041e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0443\u0442\u0438 \u0431\u0435\u0437 \u0442\u043e\u0447\u043a\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u0438 \u0441 \u044f\u0432\u043d\u044b\u043c <code>Accept: text\/html<\/code>, \u0433\u0434\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439 <code>q<\/code> \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0443\u043b\u044f. \u041f\u0443\u0442\u0438 <code>\/api<\/code>, <code>\/assets<\/code>, <code>\/static<\/code>, <code>\/pair<\/code> \u0438 <code>\/rpc<\/code> \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 <code>\/done<\/code> \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443, \u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 <code>app.js<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 404.<\/p>\n<p>\u0414\u043b\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 USB-\u043f\u0440\u043e\u0431\u0440\u043e\u0441\u043e\u043c \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code># \u0411\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f: \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f HTML \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438 TaskBoard.curl -i -H 'Accept: text\/html' http:\/\/127.0.0.1:18081\/done# \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 Accept: *\/* \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 fallback.curl -i http:\/\/127.0.0.1:18081\/done# \u041f\u0440\u043e\u043f\u0430\u0432\u0448\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u043d\u0435 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439.curl -i -H 'Accept: text\/html' http:\/\/127.0.0.1:18081\/missing.js<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u0423 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e SEO-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f <code>spaFallback:false<\/code>: \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 404 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c HTML.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/57\/be\/74\/57be7491998971cc18eb884e7c24ee26.jpg\" alt=\"\u041c\u0430\u0440\u0448\u0440\u0443\u0442 done: \u0434\u0432\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/57\/be\/74\/57be7491998971cc18eb884e7c24ee26.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/57\/be\/74\/57be7491998971cc18eb884e7c24ee26.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041c\u0430\u0440\u0448\u0440\u0443\u0442 done: \u0434\u0432\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445<\/figcaption><\/div>\n<\/figure>\n<p><em>\u041a\u0430\u0434\u0440 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u0435\u0430\u043d\u0441\u0430 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f: \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u00ab\u0413\u043e\u0442\u043e\u0432\u043e\u00bb \u043e\u0442\u043a\u0440\u044b\u043b <\/em><code><em>\/done<\/em><\/code><em> \u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043b \u0434\u0432\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u0437 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445. \u042d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u044f\u043c\u043e\u0439 HTTP-\u0432\u0445\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c Accept, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435.<\/em><\/p>\n<h3>\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u0434\u043e\u043c\u0435\u043d: \u0438\u043c\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e<\/h3>\n<p>\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0441\u0430\u0439\u0442\u0430 \u2014 <a href=\"https:\/\/pocketdeploy.vibecoding.by\/\" rel=\"noopener nofollow\">pocketdeploy.vibecoding.by<\/a>, PDS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 <a href=\"https:\/\/pds.pocketdeploy.vibecoding.by\/xrpc\/_health\" rel=\"noopener nofollow\">pds.pocketdeploy.vibecoding.by<\/a>. \u041f\u0443\u0442\u044c \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code>\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \/ \u043a\u043b\u0438\u0435\u043d\u0442 Bluesky        \u2502 HTTPS, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0438\u043c\u044f        \u25bcVPS: Traefik \u2192 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430        \u2502 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0441\u0442\u0435\u043d\u0434\u0443 ADB-\u043f\u0440\u043e\u0431\u0440\u043e\u0441        \u25bc\u041e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 Android 11        \u251c\u2500 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 PocketDeploy \u2192 HTML \u0441\u0430\u0439\u0442\u0430        \u2514\u2500 Termux \u2192 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 PDS \u2192 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043a\u043b\u044e\u0447\u0438<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>Mac \u0438 Quick Tunnel \u0432 \u044d\u0442\u043e\u043c \u043f\u0443\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442. HTML \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0438\u0437 Android; \u043d\u0430\u043b\u0438\u0447\u0438\u0435 VPS-\u0448\u043b\u044e\u0437\u0430 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. TLS \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 edge, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u0434\u043e Android \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 HTTP. \u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043f\u043e\u0440\u0442\u044b Termux\/MCP \u0438 ADB \u043d\u0430\u0440\u0443\u0436\u0443 \u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0423 PDS \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u0440\u043e\u043a\u0441\u0438: \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u044b POST \u0438 WebSocket, \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043b\u0435\u043d\u0434\u0438\u043d\u0433 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f read-only. Nginx \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 upstream, \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 forwarding headers, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0438 Basic-\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e. \u0414\u043b\u044f handle-\u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e GET\/HEAD \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438, \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f Authorization. \u0417\u0430\u043f\u0440\u043e\u0441 \u043a \u0447\u0443\u0436\u043e\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443 \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0442\u0430\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f PDS.<\/p>\n<p>Handle \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0438 \u0434\u043e\u043c\u0435\u043d PDS \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430. \u041f\u043e <a href=\"https:\/\/atproto.com\/specs\/handle\" rel=\"noopener nofollow\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/a>, handle \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f <code>_atproto<\/code> TXT \u043b\u0438\u0431\u043e <code>\/.well-known\/atproto-did<\/code>, \u0430 DID \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e. Wildcard DNS \u043d\u0435 \u0432\u044b\u0434\u0430\u0451\u0442 wildcard TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0448\u043b\u044e\u0437\u0430 reconciler \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 handle, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043c\u0451\u043d \u0438 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e; \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u043d\u0435\u0448\u043d\u044f\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/examples\/pds-gateway\/HANDLES.md\" rel=\"noopener nofollow\">\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438 \u0435\u0451 \u0433\u0440\u0430\u043d\u0438\u0446\u044b<\/a> \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u043e\u0434\u043e\u043c.<\/p>\n<h4>\u0427\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0441 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u043c \u041f\u041a<\/h4>\n<p>\u0412 0.6 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442: Android \u2192 USB\/adb \u2192 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u041f\u041a \u2192 Quick Tunnel \u2192 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 Pages-\u0430\u0434\u0440\u0435\u0441. Managed helper \u0441\u043b\u0435\u0434\u0438\u043b \u0437\u0430 \u0441\u0432\u043e\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c \u0438 \u043c\u0435\u043d\u044f\u043b origin \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e Pages-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043c\u0435\u043d\u044b \u0442\u0443\u043d\u043d\u0435\u043b\u044f. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u043e\u0441\u044c, \u043d\u043e \u0432\u0441\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0435\u043b\u0430 \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u041f\u041a. \u042d\u0442\u043e\u0442 \u0440\u0435\u0436\u0438\u043c \u0438 \u0435\u0433\u043e <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/docs\/PUBLIC-ACCESS.md\" rel=\"noopener nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f<\/a> \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435; \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0435\u043b\u044c\u0437\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0439 VPS-\u0441\u0445\u0435\u043c\u0435.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/19\/46\/e2\/1946e2432ec6d6b2911f44b3cbf01c9e.png\" alt=\"\u0410\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0441\u0442\u0435\u0440 \u0441\u0435\u0442\u0438 PocketDeploy 0.6: \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 HTTPS \u0447\u0435\u0440\u0435\u0437 \u041f\u041a\" width=\"360\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/19\/46\/e2\/1946e2432ec6d6b2911f44b3cbf01c9e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/19\/46\/e2\/1946e2432ec6d6b2911f44b3cbf01c9e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0410\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0441\u0442\u0435\u0440 \u0441\u0435\u0442\u0438 PocketDeploy 0.6: \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 HTTPS \u0447\u0435\u0440\u0435\u0437 \u041f\u041a<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u043c\u0430\u0441\u0442\u0435\u0440\u0430 0.6. \u0417\u0434\u0435\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u043d \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 HTTPS \u0447\u0435\u0440\u0435\u0437 \u041f\u041a; \u044d\u0442\u043e \u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u044b\u043d\u0435\u0448\u043d\u0435\u0433\u043e VPS. \u041d\u0430\u0436\u0430\u0442\u0438\u0435 \u00ab\u0414\u0430\u043b\u0435\u0435\u00bb \u0441\u0430\u043c\u043e \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 DNS, \u0442\u0443\u043d\u043d\u0435\u043b\u044c \u0438\u043b\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.<\/em><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/b9\/08\/a0\/b908a0faae8f295ecd8bf406997f4964.jpg\" alt=\"\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043d\u0438\u043c\u043e\u043a \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u0434\u0430\u043d\u044b Android 11\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/b9\/08\/a0\/b908a0faae8f295ecd8bf406997f4964.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/b9\/08\/a0\/b908a0faae8f295ecd8bf406997f4964.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043d\u0438\u043c\u043e\u043a \u0441\u0430\u0439\u0442\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u0442\u0434\u0430\u043d\u044b Android 11<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0421\u043d\u0438\u043c\u043e\u043a \u043f\u043e\u0441\u043b\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0436\u043d\u0435\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u2014 Android 11; \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0438 \u0441\u0445\u0435\u043c\u0430 \u0448\u043b\u044e\u0437\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0432\u044b\u0448\u0435.<\/em><\/p>\n<p>\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d. DHCP reservation \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438; DNS \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u043c\u044f \u0441 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 CGNAT. \u041d\u0443\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u2014 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0442\u0443\u043d\u043d\u0435\u043b\u044c \u0438\u043b\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0448\u043b\u044e\u0437. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c; \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0443\u043f\u0438\u0442\u044c \u0434\u043e\u043c\u0435\u043d, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0443\u0436\u043e\u0439 \u0440\u043e\u0443\u0442\u0435\u0440 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c 24\/7 \u043d\u0435\u0442.<\/p>\n<h3>\u0418\u0441\u0442\u043e\u0440\u0438\u044f 0.6: \u0434\u0432\u0430 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044f \u0438 \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0441\u0442<\/h3>\n<p>\u042d\u0442\u043e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u0442\u0435\u043d\u0434\u0443 \u0441 Pages \u0438 Quick Tunnel, \u0430 \u043d\u0435 \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 PDS-\u0448\u043b\u044e\u0437\u0443. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0449\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c, \u0447\u0435\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0443\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438. \u0412 \u0448\u0442\u0430\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0432 Android \u0434\u0430\u043b\u0430 503 \u0431\u0435\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0433\u043e HTML; \u0437\u0430\u043f\u0443\u0441\u043a \u0432\u0435\u0440\u043d\u0443\u043b 200 \u0438 \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u0445\u0435\u0448 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e tunnel-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0448\u043b\u0430: supervisor \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u043e\u0432\u044b\u0439 origin, \u043e\u0431\u043d\u043e\u0432\u0438\u043b Pages, \u0430\u0434\u0440\u0435\u0441 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u0440\u0435\u0436\u043d\u0438\u043c.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c Android framework \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c package service. \u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u043b\u0433\u043e\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0435\u043d\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0442\u0440\u0451\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0427\u0435\u0442\u044b\u0440\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 TaskBoard \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u043e. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430; \u044d\u0442\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u0441\u043b\u0435 reboot.<\/p>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 adb-\u043f\u0440\u043e\u0431\u0440\u043e\u0441 <code>tcp:18110<\/code>. \u041d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438\u0441\u044c 503, \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u0448\u043b\u044e\u0437\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e origin. \u041d\u043e Android \u0441\u043d\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c. <strong>\u041f\u043e\u043b\u043d\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0434\u0435\u0441\u044f\u0442\u0438\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0439 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043f\u0440\u0438\u0451\u043c\u043a\u0438.<\/strong> \u0420\u0430\u0431\u043e\u0442\u0443 supervisor \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u0430.<\/p>\n<p>\u041f\u043e\u0437\u0436\u0435 \u0441\u0442\u0435\u043d\u0434 \u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c AVD \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u043b\u0438\u0446\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430. \u0422\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 UI-\u0434\u0440\u0430\u0439\u0432\u0435\u0440. \u0412 14:13:23 UTC 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u0432\u0441\u0435 \u0434\u0435\u0432\u044f\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u043e\u0448\u043b\u0438 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 hostname; Activity \u0431\u044b\u043b\u0430 \u0432 \u0444\u043e\u043d\u0435, \u0447\u0435\u0442\u044b\u0440\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u0430\u0434\u0430\u0447 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0435\u0436\u043d\u0438\u043c\u0438. \u042d\u0442\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u043c \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u043d\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043f\u0440\u043e\u0432\u0430\u043b \u0434\u0435\u0441\u044f\u0442\u0438\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430.<\/p>\n<p>\u0412 \u0442\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435 supervisor \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043d\u0430 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u043c \u041f\u041a; \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b\u0441\u044f. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0431\u044b\u043b\u0438 Android, \u041f\u041a, adb, \u0442\u0443\u043d\u043d\u0435\u043b\u044c \u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440. \u0417\u0430\u0442\u0435\u043c \u0441\u0442\u0435\u043d\u0434 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u043b\u0438 \u043d\u0430 VPS, \u043d\u043e \u0441\u0430\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u043d\u0435 \u0437\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u043b \u043a\u0430\u043a \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 503 \u0437\u0434\u0435\u0441\u044c \u2014 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430 \u043d\u0435 \u043f\u043e\u0432\u043e\u0434 \u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043e\u0442\u043a\u0430\u0437 \u0437\u0430 \u0441\u0442\u0430\u0440\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439. \u041e\u0442\u0432\u0435\u0442 \u0441\u0430\u043c\u043e\u0433\u043e edge-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043f\u0440\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c Android.<\/p>\n<h3>\u041e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f: HTTP 200 \u0435\u0449\u0451 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0437\u0434\u043e\u0440\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/h3>\n<p>\u041d\u043e\u0432\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0435\u043d\u0434 \u043a \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u044f\u043c \u043d\u0430 2 \u0413\u0411 \u0434\u0430\u043b\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0445\u043e\u0442\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u043e \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u0435 \u0434\u043e\u0448\u043b\u0430. \u041c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430, APK \u0438 \u0441\u0432\u0435\u0436\u0443\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0434\u0430\u043d\u043d\u044b\u0445 PDS, \u0437\u0430\u0442\u0435\u043c \u0445\u043e\u043b\u043e\u0434\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0442\u043e\u0442 \u0436\u0435 Android \u0441 \u043f\u0440\u0435\u0436\u043d\u0438\u043c\u0438 userdata. \u0412\u0442\u043e\u0440\u043e\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438, \u043f\u0430\u043c\u044f\u0442\u044c \u0433\u043e\u0441\u0442\u044f \u043d\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u043b\u0438, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438.<\/p>\n<p>\u041a\u043e\u043f\u0438\u044e PDS \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: \u0430\u0440\u0445\u0438\u0432 \u0447\u0438\u0442\u0430\u043b\u0441\u044f, \u0447\u0435\u0442\u044b\u0440\u0435 SQLite <code>quick_check<\/code> \u0432\u0435\u0440\u043d\u0443\u043b\u0438 <code>ok<\/code>, \u043a\u043b\u044e\u0447\u0438 \u0441\u043e\u0432\u043f\u0430\u043b\u0438 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 PDS \u0438\u0437 \u043a\u043e\u043f\u0438\u0438 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f \u2014 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443. \u0421\u043d\u0438\u043c\u043e\u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c: \u0440\u0435\u043b\u0438\u0437\u043d\u044b\u0439 APK \u043d\u0435 debuggable. \u0414\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 \u043e\u0442\u043a\u0430\u0437\u0430 \u043d\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u0430\u0441\u044c \u0437\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e; \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c userdata. \u042d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u00ab\u0435\u0441\u0442\u044c \u043a\u043e\u043f\u0438\u044f PDS\u00bb \u0438 \u00ab\u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0441\u044c Android-\u0441\u0435\u0440\u0432\u0435\u0440\u00bb.<\/p>\n<p>\u0425\u043e\u043b\u043e\u0434\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0430\u043d\u044f\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043c\u0438\u043d\u0443\u0442. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c <code>boot_complete=1<\/code>, \u043d\u043e \u0437\u0430\u0442\u0435\u043c <code>system_server<\/code> \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f, \u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438 <code>DeadSystemException<\/code>. \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b package\/activity services \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 Termux-\u0430\u0433\u0435\u043d\u0442, \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u0441\u0430\u0439\u0442 \u0438 PDS \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u043d\u044b \u0435\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430. \u0414\u0435\u0441\u044f\u0442\u0438\u043c\u0438\u043d\u0443\u0442\u043d\u0443\u044e \u0446\u0435\u043b\u044c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u041f\u0440\u0438\u0447\u0438\u043d\u0443 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 <code>system_server<\/code> \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0433\u043e\u043d \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043d\u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b: runtime-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b CPUWeight\/IOWeight 10 \u0438 CPUQuota 50%. \u041d\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0438 \u0434\u0435\u0441\u044f\u0442\u043e\u0439 \u0441\u0435\u043a\u0443\u043d\u0434\u0435 \u043e\u0431\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u043b\u0438, \u043d\u0430 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u0430\u0439\u0442\u0443 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f HTTP-\u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0430 PDS \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c 200. \u0422\u043e\u0447\u043d\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0430\u0439\u0442\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u0435 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d. \u0427\u0435\u0440\u0435\u0437 26,4 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c; \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u0432\u043e\u0442\u044b \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438. \u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0435\u0436\u0438\u043c \u0441\u0442\u0435\u043d\u0434\u0430, \u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c CPUQuota \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043e\u0442\u043a\u0430\u0437\u0430.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0430\u0442\u0430 \u0441\u0435\u043c\u044c \u043f\u0430\u0440 \u043d\u0438\u0437\u043a\u043e\u0447\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0437\u0430 60 \u0441\u0435\u043a\u0443\u043d\u0434 \u0434\u0430\u043b\u0438 <strong>14\/14 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 200<\/strong>, \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044e. Relay \u0443\u0441\u043f\u0435\u043b \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 offline \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f; \u043e\u0434\u0438\u043d <code>requestCrawl<\/code> \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e hostname \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b active, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430. \u0410\u043a\u043a\u0430\u0443\u043d\u0442\u044b, \u043f\u043e\u0441\u0442\u044b \u0438 \u043a\u043b\u044e\u0447\u0438 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c, \u0432 <strong>02:11 UTC<\/strong>, \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u0438\u0430\u043b\u043e\u0433 ANR \u0443 System UI. \u0412 <strong>02:13:39 UTC<\/strong> \u0441\u0430\u0439\u0442 \u0438 PDS \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0432\u0435\u0440\u043d\u0443\u043b\u0438 200. \u0412 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0434\u0432\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f KeyguardService \u0437\u0430 01:52 \u0438 01:56 UTC, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f; \u043d\u043e\u0432\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e. \u0412 02:19 UTC \u043e\u0434\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u00abWait\u00bb \u0437\u0430\u043a\u0440\u044b\u043b\u043e \u0434\u0438\u0430\u043b\u043e\u0433, \u0437\u0430\u0442\u0435\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0413\u043b\u0443\u0431\u0438\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u044d\u0442\u0438\u0445 ANR \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430: \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0435\u0444\u0435\u043a\u0442 \u0438\u043c\u0435\u043d\u043d\u043e PocketDeploy \u0438\u043b\u0438 \u0441\u0432\u044f\u0437\u044c \u0441 \u0443\u0436\u0435 \u043e\u0442\u043c\u0435\u043d\u0451\u043d\u043d\u043e\u0439 \u043a\u0432\u043e\u0442\u043e\u0439. \u0417\u0430\u0442\u043e \u043e\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f \u043d\u0443\u0436\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0423\u0440\u043e\u0432\u0435\u043d\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u0432\u0438\u0434\u0435\u0442\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0435\u0433\u043e \u044d\u0442\u043e \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Android UI \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433 ANR; \u0437\u0430\u043a\u0440\u044b\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u00abWait\u00bb<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u0438\u0447\u0438\u043d\u0443 \u0441\u0431\u043e\u044f \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0430\u0439\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 HTTP 200 \u043f\u043e\u0441\u043b\u0435 ANR<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c UI<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">PDS<\/p>\n<\/td>\n<td>\n<p align=\"left\">Health 200 \u0438 running\/ready \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 OAuth, \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">Relay, AppView \u0438 WSS \u043f\u0440\u043e\u0448\u043b\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u043f\u043e\u0441\u043b\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0443\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443\u044e \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u0438\u0451\u043c\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u0433\u043e \u0445\u043e\u043b\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0430 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430 health. \u0412 UI \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442, \u043a\u0430\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e. \u041e\u0434\u0438\u043d \u0437\u0435\u043b\u0451\u043d\u044b\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0441\u043a\u0440\u044b\u0432\u0430\u043b \u0431\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0442 \u043e\u0442\u043a\u0430\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0443\u0432\u0438\u0434\u0435\u043b\u0438.<\/p>\n<h3>\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0443\u0436\u043d\u043e: \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0441\u0442\u0435\u043d\u0434\u0430, \u0430 \u043d\u0435 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430<\/h3>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0445\u043e\u0442\u044f \u0431\u044b 4 \u0413\u0411 RAM. \u041f\u043e \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043c \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0440\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0430\u0439\u0442 \u0438 PDS \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438\u0441\u044c \u0432 \u0433\u043e\u0441\u0442\u0435\u0432\u043e\u043c Android \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 2048 \u041c\u0438\u0411, \u043d\u043e \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u0431\u0435\u0437 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0439 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041e\u0434\u0438\u043d \u0441\u043d\u0438\u043c\u043e\u043a \u043f\u0440\u043e\u0441\u0442\u043e\u044f 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430 \u0432 01:19 UTC \u0434\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041e\u0431\u044a\u0435\u043a\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u044c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">PocketDeploy, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 UI \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">37,0 \u041c\u0438\u0411 PSS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0438\u043a \u043f\u0440\u0438 \u0434\u0435\u043f\u043b\u043e\u0435 \u0438\u043b\u0438 \u043f\u043e\u0434 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Termux<\/p>\n<\/td>\n<td>\n<p align=\"left\">90,6 \u041c\u0438\u0411 PSS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0430\u043c\u044f\u0442\u044c \u0432\u0441\u0435\u0445 \u0435\u0433\u043e \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Node-\u043f\u0440\u043e\u0446\u0435\u0441\u0441 PDS<\/p>\n<\/td>\n<td>\n<p align=\"left\">121,0 \u041c\u0438\u0411 PSS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0401\u043c\u043a\u043e\u0441\u0442\u044c WebSocket \u0438\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0430\u0437\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0415\u0449\u0451 \u0434\u0432\u0430 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 Node-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">61,3 \u0438 47,7 \u041c\u0438\u0411 RSS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u043e\u0447\u043d\u044b\u0439 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 PSS \u0432\u0441\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0413\u043e\u0441\u0442\u0435\u0432\u043e\u0439 Android<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u043a\u043e\u043b\u043e 1981 \u041c\u0438\u0411 MemTotal, 972 \u041c\u0438\u0411 MemAvailable<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e ARM-\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><a href=\"https:\/\/developer.android.com\/tools\/dumpsys#meminfo\" rel=\"noopener nofollow\">PSS \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438<\/a>, RSS \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0445 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435. \u0421\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0432 \u00ab\u0442\u043e\u0447\u043d\u0443\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u00bb \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u041e\u043a\u043e\u043b\u043e 3 \u0413\u0438\u0411, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u0433\u0434\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u043b QEMU \u043d\u0430 VPS, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u0433\u043e\u0441\u0442\u0435\u0432\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c: \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u041e\u0417\u0423 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430.<\/p>\n<p>\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u041a\u0430\u0436\u0434\u044b\u0439 Termux-\u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u043c\u0435\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 Node-\u0441\u0443\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432. \u041f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0434\u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0435\u043b\u044c\u0437\u044f: \u043f\u0440\u0438 \u0441\u043c\u0435\u0440\u0442\u0438 \u0430\u0433\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u043f\u043e\u0442\u0435\u0440\u0435 IPC \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u0438\u0440\u043e\u0442\u0435\u0432\u0448\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0430 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439, SIGKILL \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 TERM. \u0412 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u0439 alpha.2 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u043d\u043e\u0432\u0430\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f.<\/p>\n<p>\u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c. \u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 WebSocket, \u0430 PDS \u0438\u043c\u0435\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 runtime \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u0427\u0438\u0441\u043b\u043e idle-\u0441\u043e\u043a\u0435\u0442\u043e\u0432, \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f, fan-out, \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c \u0438 \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432. \u0412 PDS \u0443\u0436\u0435 \u0435\u0441\u0442\u044c outbox \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c 500 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430; \u044d\u0442\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0431\u0430\u0439\u0442\u043e\u0432, \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a.<\/p>\n<p>\u0421\u0442\u0435\u043d\u0434 \u0434\u0435\u043b\u0438\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b VPS \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043e\u0442\u043a\u0430\u0442\u0430 \u043a\u0432\u043e\u0442\u044b \u0437\u0430\u043f\u0430\u0441 cgroup \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f \u043b\u0438\u0448\u044c \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 <strong>110\u2013116 \u041c\u0438\u0411<\/strong>, \u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0445\u043e\u0441\u0442\u0430 \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0430 <strong>930 \u041c\u0438\u0411<\/strong>. \u0414\u043b\u044f \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 \u043c\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 256 \u041c\u0438\u0411 \u0437\u0430\u043f\u0430\u0441\u0430 cgroup \u0438 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 1 \u0413\u0438\u0411 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0445\u043e\u0441\u0442\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u043c\u0438\u043d\u0443\u0442\u044b. \u041e\u0431\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b: <strong>\u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438<\/strong>. \u0413\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0430 \u0432\u0430\u0436\u043d\u0435\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0441\u0442\u0443\u043f\u0435\u043d\u044f\u043c\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0443\u0436\u043d\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u044f\/\u0447\u0430\u0441\u0442\u043e\u0442\u0430\/\u043e\u0431\u044a\u0451\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u043f\u0440\u0438 \u0443\u0445\u0443\u0434\u0448\u0435\u043d\u0438\u0438 health. \u041f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u043c \u043e\u0431\u0449\u0435\u043c \u0445\u043e\u0441\u0442\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u043b\u043e\u0445\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443. \u042d\u0442\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0435\u0440\u0432 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438, \u0430 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443 \u043d\u0443\u0436\u043d\u043e 4 \u0413\u0411. \u041f\u043e\u043a\u0430 \u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u0430 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u00ab\u043b\u044e\u0431\u043e\u0439 Android \u0441 2 \u0413\u0411 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0442 N \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\u00bb.<\/p>\n<h3>\u041a\u0430\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 alpha.2<\/h3>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">PDS \u043d\u0430 host<\/p>\n<\/td>\n<td>\n<p align=\"left\">35\/35, \u0431\u0435\u0437 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432: \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u0441\u0435\u043a\u0440\u0435\u0442\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 runtime, backport \u0438 handle reconciliation<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Termux \u043d\u0430 host<\/p>\n<\/td>\n<td>\n<p align=\"left\">35\/35, \u0431\u0435\u0437 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432: Node\/Git-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438 supervisor<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u0449\u0430\u044f host-\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>scripts\/test-all.sh<\/code> \u043f\u0440\u043e\u0439\u0434\u0435\u043d, \u0432\u043a\u043b\u044e\u0447\u0430\u044f JVM, MCP, \u0448\u043b\u044e\u0437\/SEO \u0438 33 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445 adversarial-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 nginx<\/p>\n<\/td>\n<td>\n<p align=\"left\">7\/7: \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b, Host\/forwarding headers, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 Authorization, \u0437\u0430\u043f\u0440\u0435\u0442\u044b \u0438 rate limit<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Security-\u043d\u0430\u0431\u043e\u0440 \u043d\u0430 Android<\/p>\n<\/td>\n<td>\n<p align=\"left\">6 pass, 1 skip; fixture \u0434\u043b\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e Zod \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0430 Android, \u043d\u0430 host \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 runtime \u043d\u0430 Android<\/p>\n<\/td>\n<td>\n<p align=\"left\">1\/1: account, record, blob, WebSocket-\u043a\u043e\u043c\u043c\u0438\u0442, restart \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0435\u0441\u0441\u0438\u044f \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u043e\u043c PDS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0445\u043e\u0434, refresh, AppView-\u043f\u0440\u043e\u043a\u0441\u0438 \u0438 logout<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0434\u0438\u043d \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442: \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u044c, WSS, Relay \u0438 AppView<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0434\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0444\u043b\u0430\u0439\u043d-\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 PDS \u0441 \u043f\u0440\u0435\u0436\u043d\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0438 CID \u043f\u0440\u043e\u0444\u0438\u043b\u044f<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0427\u0438\u0441\u043b\u0430 \u043d\u0435 \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0446\u0435\u043d\u043a\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 80 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 fixture nginx \u043f\u0440\u0438 concurrency 20 \u0434\u0430\u043b\u0438 43 \u043e\u0442\u0432\u0435\u0442\u0430 200 \u0438 37 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 429 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 rate limit, \u0430 \u043d\u0435 \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0423\u0441\u043f\u0435\u0445 host-runtime \u0442\u043e\u0436\u0435 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 Android: \u043d\u0430 host \u0438 \u043d\u0430 Android \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b.<\/p>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 <strong>0.6.0-alpha.3<\/strong> \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e: 402 JVM-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 33 adversarial-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f, 149 Node-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c; \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 Android 11 \u0438 15 \u2014 21 smoke \u0438 43 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430. \u041e\u043d\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0442\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0430\u043c. \u041f\u043e\u043b\u043d\u044b\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 MCP\/UI-\u043d\u0430\u0431\u043e\u0440\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0437\u0430\u0434\u043d\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u043a\u0430\u043a \u043d\u043e\u0432\u0430\u044f \u043f\u0440\u0438\u0451\u043c\u043a\u0430 PDS. <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/docs\/VERIFICATION-0.6.1.md\" rel=\"noopener nofollow\">\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b 0.6<\/a> \u0438 <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/docs\/BLUESKY-PDS-VERIFICATION.md\" rel=\"noopener nofollow\">\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b 0.7<\/a> \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0440\u044f\u0434\u043e\u043c \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438.<\/p>\n<p>APK \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d \u043a\u043b\u044e\u0447\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0442\u043a\u0430\u0437\u043e\u0432 \u043d\u0435 \u0440\u0430\u0432\u043d\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u043c\u0443 \u0430\u0443\u0434\u0438\u0442\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0432\u0441\u0435\u0445 OEM-\u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u0438\u043b\u0438 \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 24\/7.<\/p>\n<h3>\u0427\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u0432 \u043f\u043b\u0430\u043d\u0435: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0434\u0438\u043d \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0439 \u043f\u0443\u0442\u044c<\/h3>\n<p>\u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u0446\u0435\u043b\u044c \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e: \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442\/PDS \u0441 HTTPS, \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0430\u0437\u0430. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c APK \u0438 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 200 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041f\u0435\u0440\u0435\u0434 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0431\u043e\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0443\u0436\u043d\u044b:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u044b\u0439 quick start \u0438 \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0433\u0438, \u0432\u0440\u0435\u043c\u044f, \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 UI, \u0441\u0430\u0439\u0442\u0430, PDS \u0438 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438; \u044f\u0432\u043d\u043e \u043e\u0442\u043c\u0435\u0447\u0430\u0442\u044c \u0440\u0443\u0447\u043d\u043e\u0435 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u0430\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u044f \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043a\u043b\u044e\u0447\u0438. \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443, \u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0432\u0430 \u2014 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u043b\u043d\u044b\u0439 OAuth \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0447\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439 SMTP \u0438\u043b\u0438 Resend API.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u043d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435 \u0441 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u043e\u043c, \u0437\u0430\u0442\u0435\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 ARM64-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d, Doze, \u0441\u043c\u0435\u043d\u0430 Wi\u2011Fi\/LTE, \u0434\u0438\u0441\u043a, \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435. \u0417\u0430\u043c\u0435\u0440\u044b 2\/3\/4 \u0413\u0411 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u0430\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u0430 \u043d\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0443\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0441\u0435\u0430\u043d\u0441\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432, \u0441 \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u043c \u043e\u0442\u043a\u0430\u0437\u043e\u0432 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u043a\u0430 \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 Nostr \u0438 <strong>TON Storage \u0441 \u0432\u044b\u043f\u043b\u0430\u0442\u0430\u043c\u0438 \u0437\u0430\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u044b<\/strong>. TON \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0431\u044b \u043a \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0435\u0449\u0451 \u0434\u0438\u0441\u043a, \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u044c, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u0440\u043e\u043a\u0438 proofs; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e WebSocket-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043d\u0435 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442 \u0451\u043c\u043a\u043e\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0417\u0430\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u043d\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0438 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043d. \u041a \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0439 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438, \u043d\u043e\u0432\u044b\u043c \u0432\u0438\u0434\u0435\u043e \u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0439 \u043f\u0440\u0438\u0451\u043c\u043a\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043e \u0445\u043e\u0434\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439.<\/p>\n<p><a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\" rel=\"noopener nofollow\">\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, APK \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u2014 \u0432 GitLab<\/a>. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u0430. \u0414\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0435\u0441\u0442\u044c <a href=\"https:\/\/gitlab.com\/dzmitry.yandex\/pocketdeploy\/-\/blob\/main\/CONTRIBUTING.md\" rel=\"noopener nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430<\/a>. \u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432 <a href=\"https:\/\/t.me\/pocketdeploy_lab\" rel=\"noopener nofollow\">Telegram<\/a> \u0438 \u0432 <a href=\"https:\/\/discord.gg\/arMssyMdt\" rel=\"noopener nofollow\">Discord \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0435\u0440\u043e\u0432<\/a> (\u044d\u0442\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 30 \u0434\u043d\u0435\u0439 \u0441 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f). \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0435\u0440\u043a\u0430\u043b\u043e Telegram \u0432 Discord \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e.<\/p>\n<p>\u0421\u0430\u043c\u0430\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u0435\u0439\u0447\u0430\u0441 \u2014 \u043d\u0435 \u043e\u0431\u0449\u0438\u0439 \u043e\u0442\u0437\u044b\u0432 \u00ab\u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00bb, \u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0439 \u0442\u0435\u0441\u0442: \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, RAM, Android \u0438 OEM-\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430, \u0432\u0435\u0440\u0441\u0438\u044f APK, \u0448\u0430\u0433\u0438, \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0430\u0442\u0430\u0440\u0435\u0438 \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u043d\u044b\u043c \u044d\u043a\u0440\u0430\u043d\u043e\u043c. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0438 \u043e\u0431\u0435\u0437\u043b\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442; \u0442\u043e\u043a\u0435\u043d\u044b, \u043a\u043b\u044e\u0447\u0438 \u0438 \u043a\u043e\u0434\u044b \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0439 \u0432 \u043e\u0442\u0447\u0451\u0442 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435.<\/p>\n<p>\u041f\u043e\u043a\u0430 PocketDeploy \u0434\u043e\u043a\u0430\u0437\u0430\u043b \u0431\u043e\u043b\u0435\u0435 \u0443\u0437\u043a\u0443\u044e, \u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0432\u0435\u0449\u044c: Android \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c API, \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c PDS, \u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0441\u0435\u0442\u0438. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0430\u043f \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043f\u0440\u0438 \u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 \u0442\u0430\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0432\u043d\u0435 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1100452\/\">https:\/\/habr.com\/ru\/articles\/1100452\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0434\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u043c\u0443 Android \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430: \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0430\u0439\u0442 \u0441 API \u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0442\u0438\u0440\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0430 \u0418\u0418-\u0430\u0433\u0435\u043d\u0442 \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0435\u043c\u0443 \u043f\u043e\u0440\u0443\u0447\u0438\u043b\u0438 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. \u0417\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u044f \u0432\u0437\u044f\u043b \u043f\u043e\u0434\u0445\u043e\u0434 Coolify; PocketDeploy \u2014 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0441 Coolify \u043c\u044b \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b.\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0434\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u0441 JavaScript API. \u0417\u0430\u0442\u0435\u043c \u2014 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 HTTPS-\u0430\u0434\u0440\u0435\u0441, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f MCP-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 Node.js runtime \u0447\u0435\u0440\u0435\u0437 Termux. \u0412 0.7.0-alpha.2 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Bluesky PDS \u0445\u0440\u0430\u043d\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 Android, \u0430 \u0435\u0433\u043e \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432\u0438\u0434\u0435\u043d \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c Relay \u0438 AppView.\u0421\u0430\u0439\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0442\u043e\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 HTML \u0438\u0437 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e Android. \u042d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 Android 11 x86_64 \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 2048 \u041c\u0438\u0411 RAM, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 VPS; \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0432 \u044d\u0442\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b. \u041e\u0431\u043b\u0430\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0433\u0434\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f Doze, \u043d\u0430\u0433\u0440\u0435\u0432, \u0431\u0430\u0442\u0430\u0440\u0435\u044f \u0438 \u0441\u043c\u0435\u043d\u0430 \u0441\u0435\u0442\u0438.\u042f \u0437\u0430\u0434\u0430\u044e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f; \u043a\u043e\u0434, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u043e\u0433\u043e\u043d\u044b \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0418\u0418-\u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0441\u0443\u0437\u0438\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0443\u044e \u0446\u0435\u043b\u044c: \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442\/PDS \u0441 HTTPS, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439, \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439 \u043a\u043e\u043f\u0438\u0435\u0439. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u0430\u0436\u043d\u0435\u0435 \u0434\u043e\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c, \u0447\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b. \u041d\u0438\u0436\u0435 \u2014 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u043a\u0440\u0430\u043d\u044b \u0438 \u0441\u0431\u043e\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u043f\u0443\u0442\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u0434\u043e\u043c\u0435\u043d \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.\u0421\u0440\u0435\u0437 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0430\u043b\u044c\u0444\u044b. APK 0.7.0-alpha.2, versionCode 10, \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 @atproto\/pds 0.5.49. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u0442\u044c\u0438: 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026, \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f \u2014 02:20:23 UTC; \u0441\u0430\u0439\u0442 \u0438 PDS health \u2014 02:13:39 UTC. \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f 26 \u043e\u043a\u0442\u044f\u0431\u0440\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0438. \u041d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433 \u0441\u0442\u0430\u0440\u043e\u0433\u043e ANR System UI; \u043e\u043d \u0437\u0430\u043a\u0440\u044b\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0430\u0439\u0442 \u0438 PDS \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0438\u0436\u0435. \u041c\u0430\u0442\u0440\u0438\u0446\u0430 Android 11\/15 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u0435\u0436\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 0.6; \u043c\u0438\u043d\u0438\u043c\u0443\u043c RAM \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432, \u043f\u043e\u043b\u043d\u044b\u0439 OAuth, \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 24\/7 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044b.\u0427\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c\u0412 PocketDeploy \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432. \u041e\u043d\u0438 \u043d\u0435 \u0434\u0430\u044e\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0438 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0440\u0443\u0436\u0443 \u043e\u0434\u043d\u0438\u043c \u043e\u0431\u0449\u0438\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u0435\u043c.\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u0418\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0414\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447, \u0437\u0430\u043c\u0435\u0442\u043a\u0438, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 JSON API\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 Java\/Rhino runtime; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u043b\u0438 \u041f\u041a \u043f\u043e USB\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 API \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u0438\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0413\u043e\u0442\u043e\u0432\u044b\u0439 HTML \u043d\u0430 Android; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 HTTPS-\u0448\u043b\u044e\u0437\u0412 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043b\u0435\u043d\u0434\u0438\u043d\u0433\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b GET\/HEAD, backend \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044bNode.js-\u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0437 Git\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 runtime \u0432 TermuxNode\/Git-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b \u043d\u0430 host; \u0441\u043a\u0432\u043e\u0437\u043d\u043e\u0439 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 GitLab clone \u043d\u0430 Android \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u0421\u0432\u043e\u0439 Bluesky PDS\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 Node.js-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432 Termux; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u043c\u0435\u043d \u0438 \u043f\u0440\u043e\u043a\u0441\u0438 \u0441 POST\/WebSocket\u041e\u0434\u0438\u043d \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 Relay \u0438 AppView\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0430\u0433\u0435\u043d\u0442\u043e\u043cMCP-\u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u043c \u041f\u041a, \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 Android-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0422\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u043b \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043e\u043a\u043d\u0435\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043b\u0435\u043d\u0434\u0438\u043d\u0433\u0430 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 CRUD API \u0434\u043e\u0441\u043a\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0410 \u0434\u043e\u0441\u0442\u0443\u043f \u043a PDS \u043d\u0435 \u0434\u0430\u0451\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a MCP, Termux-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u0438\u043b\u0438 ADB. \u0414\u043b\u044f \u0441\u0430\u0439\u0442\u0430 \u0438 PDS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 \u0448\u043b\u044e\u0437\u0430.\u0413\u0434\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 runtime \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 Java UI, \u0441\u043b\u0443\u0436\u0431\u044b \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430, HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 Rhino. \u0423 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0432\u043e\u0438 \u043f\u043e\u0440\u0442, \u0440\u0435\u043b\u0438\u0437\u044b \u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 HTML, CSS \u0438 JavaScript \u0441 Android; \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \/api\/* \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0442\u0430\u043c \u0436\u0435. \u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u043d\u0435 \u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0431\u044d\u043a\u0435\u043d\u0434\u0430.\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 root, Termux \u0438 \u041f\u041a. \u0414\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u041f\u041a \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f stdio-\u043c\u043e\u0441\u0442\u0430 MCP \u0438 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 HTTPS-\u0448\u043b\u044e\u0437. \u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u0440\u043e\u043b\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 VPS: \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 Mac \u0432 \u0432\u044b\u0434\u0430\u0447\u0435 \u0441\u0430\u0439\u0442\u0430 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442. \u0412 \u043b\u044e\u0431\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0448\u043b\u044e\u0437\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 Android \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b.\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 PocketDeploy: HTTP-\u0441\u0435\u0440\u0432\u0435\u0440, Rhino \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 Android\u0421\u0445\u0435\u043c\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e runtime \u0438\u0437 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 0.6. \u041e\u043d\u0430 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0437\u0436\u0435 PDS: \u0442\u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c Termux, \u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0448\u043b\u044e\u0437 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 VPS.\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u0434\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u0438\u0437 \u043f\u044f\u0442\u0438 \u0444\u0430\u0439\u043b\u043e\u0432: index.html, app.js, styles.css, backend.js \u0438 pocketdeploy.json. \u0412 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c, \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438. \u0424\u0430\u0439\u043b\u044b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437, \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u0430\u0434\u0430\u0447 \u043b\u0435\u0436\u0430\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u0434\u043e\u0441\u043a\u0430: \u0447\u0435\u0442\u044b\u0440\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0438\u0437 Android API\u0421\u0435\u0430\u043d\u0441 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430: \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d \u0447\u0435\u0440\u0435\u0437 USB\/adb-\u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u043a API Android 11 \u0441 0.6.0-alpha.3 \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0414\u043b\u044f \u044d\u0442\u0438\u0445 \u043a\u0430\u0434\u0440\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u0447\u0442\u0435\u043d\u0438\u0435, \u0431\u0435\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e CRUD-\u043f\u0440\u043e\u0433\u043e\u043d\u0430. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u044b \u043a\u0430\u0440\u0442\u043e\u0447\u0435\u043a \u2014 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435: \u00ab\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0439 Android\u00bb \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0435 \u00ab\u0413\u043e\u0442\u043e\u0432\u043e\u00bb \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u0451\u043c\u043a\u0443 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430.React \u0438\u043b\u0438 Vue \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u041f\u041a \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u0412 \u043d\u0451\u043c \u043d\u0435\u0442 npm-\u0441\u0431\u043e\u0440\u043a\u0438, Docker, Node.js SSR, SQL \u0438\u043b\u0438 WebSocket. \u0414\u043b\u044f Node.js \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0443\u0440 Termux: \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0430 Android \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043d\u0430 PDS. \u042d\u0442\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043a\u0432\u043e\u0437\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 Android \u2192 Termux \u2192 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 GitLab, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u0449\u0451 \u0432\u043f\u0435\u0440\u0435\u0434\u0438.\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a: \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0414\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. APK 0.7.0-alpha.2 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438; \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u043b\u044e\u0447\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u043d minSdk 26, \u0442\u043e \u0435\u0441\u0442\u044c Android 8. \u042d\u0442\u043e \u043f\u043e\u0440\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 APK, \u0430 \u043d\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430 \u044d\u0442\u043e\u0439 \u041e\u0421. \u041f\u0440\u0435\u0436\u043d\u0438\u0439 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 runtime \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 Android 11 \u0438 15; \u043d\u043e\u0432\u044b\u0439 PDS \u2014 \u043d\u0430 Android 11.\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u00ab\u0414\u043e\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447 \u00b7 SPA + API + \u0431\u0430\u0437\u0430\u00bb. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u043f\u043e\u0440\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 8081: \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 8080.\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u00ab\u0422\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \/ \u041f\u041a \u043f\u043e USB\u00bb \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435. \u0417\u0430\u0442\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u00ab\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u00bb \u2192 \u00ab\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0430\u0439\u0442\u00bb: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442.\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u00abAPI-\u0442\u043e\u043a\u0435\u043d\u00bb \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u0434\u043e\u0441\u043a\u0443. \u041e\u043d \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438; \u043f\u043e\u0441\u043b\u0435 \u0435\u0451 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0432\u0432\u043e\u0434.\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0438 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440, \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0434\u043e\u0441\u043a\u0443 \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u043e\u043a\u0435\u043d. \u0417\u0430\u043f\u0438\u0441\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f: \u0435\u0451 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0440\u0435\u043b\u0438\u0437\u0430.\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u041f\u041a, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e USB \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f USB-\u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:adb -s DEVICE_SERIAL forward tcp:18081 tcp:8081# \u0412 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u041f\u041a: http:\/\/127.0.0.1:18081\/DEVICE_SERIAL \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0437 adb devices. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 MCP \u043d\u0435 \u043d\u0443\u0436\u043d\u044b.\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 PocketDeploy: \u0442\u0440\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 Android 11\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 Android 11: \u0442\u0440\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0410\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u0441\u043d\u0438\u043c\u043e\u043a 0.6.0-alpha.2, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u043e\u0433\u043e \u0441\u0435\u0430\u043d\u0441\u0430. \u042d\u0442\u043e \u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0440\u0430\u043d PDS \u0438 \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0442\u0440\u0451\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435.\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 API \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0435 \u0440\u0435\u043b\u0438\u0437\u0430\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u2014 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f handle(request, db). \u041e\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0438 JSON. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 JavaScript \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0431\u0430\u0437\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:function handle(request, db) {  if (request.path !== &#8216;\/api\/counter&#8217;) {    return {status: 404, body: {error: &#8216;Not found&#8217;}};  }  if (request.method === &#8216;POST&#8217;) {    var value = (db.get(&#8216;counter&#8217;) || 0) + 1;    db.set(&#8216;counter&#8217;, value);    return {body: {value: value}};  }  if (request.method === &#8216;GET&#8217;) {    return {body: {value: db.get(&#8216;counter&#8217;) || 0}};  }  return {status: 405, body: {error: &#8216;Method not allowed&#8217;}};}\u041f\u0440\u0438 \u043f\u0440\u044f\u043c\u043e\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0447\u0435\u0440\u0435\u0437 USB-\u043f\u0440\u043e\u0431\u0440\u043e\u0441, API \u0442\u0440\u0435\u0431\u0443\u0435\u0442 Bearer-\u0442\u043e\u043a\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0415\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 frontend; \u044d\u0442\u043e \u0441\u0435\u043a\u0440\u0435\u0442 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430, \u0430 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432. \u0412 \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0434\u043e\u0441\u043a\u0435 \u0442\u043e\u043a\u0435\u043d \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0434\u043e \u0435\u0451 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.\u0411\u0430\u0437\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 JSON-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 Java Properties v1: data\/records.db, \u0434\u043e 256 \u043a\u043b\u044e\u0447\u0435\u0439, 64 \u041a\u0438\u0411 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 2 \u041c\u0438\u0411 \u043d\u0430 \u0444\u0430\u0439\u043b. \u041a\u0430\u0436\u0434\u044b\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 backend \u0447\u0438\u0442\u0430\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0430\u0439\u043b \u0446\u0435\u043b\u0438\u043a\u043e\u043c; \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441\u0442\u0430\u0442\u0438\u043a\u0438 \u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0430\u0437\u0443 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442. \u0417\u0430\u043f\u0438\u0441\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, fsync \u0438 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435. \u042d\u0442\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438.\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 2xx \u0438\u043b\u0438 3xx. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u0431\u043e 4xx\/5xx \u043e\u0442\u043c\u0435\u043d\u044f\u044e\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430. \u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 PATCH \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0437\u0430\u0434\u0430\u0447\u0438.\u0423 TaskBoard \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0434\u043e \u043a\u043b\u044e\u0447\u0435\u0439: \u0437\u0430\u0434\u0430\u0447\u0430 t7 \u043b\u0435\u0436\u0438\u0442 \u0432 task_t7, \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u2014 \u0432 task_next. \u041f\u0440\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0438 \u0432 200 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 201 \u043a\u043b\u044e\u0447 \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 256. \u0423\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0442\u0435\u0440\u0435\u0442\u044c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430.\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 t7: \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u044b \u0438\u0437 Android\u0422\u043e\u0442 \u0436\u0435 \u0441\u0435\u0430\u043d\u0441 25 \u043e\u043a\u0442\u044f\u0431\u0440\u044f, \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \/task\/t7. \u041e\u0442\u043a\u0440\u044b\u0442\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c \u0438\u0437 API. \u041a\u043d\u043e\u043f\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043a\u0430\u0434\u0440\u0435 \u043d\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u043b\u0430\u0441\u044c: \u0441\u043d\u0438\u043c\u043e\u043a \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435.\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043e\u0434\u043d\u0438\u043c HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c\u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0447\u0435\u0442\u044b\u0440\u0435 HTTP-worker \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 16 \u0437\u0430\u0434\u0430\u043d\u0438\u0439. \u0422\u0430\u0439\u043c\u0435\u0440 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 accept, \u0435\u0449\u0451 \u0434\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043a\u0435\u0442. \u041f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044e \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f: keep-alive \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0442. \u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f API \u043f\u043e \u0444\u0430\u0439\u043b\u0443 \u0431\u0430\u0437\u044b \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c: \u0447\u0435\u0442\u044b\u0440\u0435 worker \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.\u0422\u0430\u0439\u043c\u0435\u0440 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0430 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0443\u044e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f Java\/Rhino \u0438\u043b\u0438 \u043e\u0442\u043c\u0435\u043d\u0443 \u0443\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. \u0423 Rhino \u0441\u0432\u043e\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u042d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0439 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438.\u0427\u0430\u0441\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u041f\u0440\u0435\u0434\u0435\u043b \u0438 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430JSON-\u0442\u0435\u043b\u043e API64 \u041a\u0438\u0411; \u0434\u043b\u044f POST\/PUT\/PATCH \u043d\u0443\u0436\u043d\u044b Content-Length \u0438 Content-Type: application\/json\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-500624","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=500624"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/500624\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=500624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=500624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=500624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}