{"id":207138,"date":"2013-12-24T23:56:03","date_gmt":"2013-12-24T19:56:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=207138"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=207138","title":{"rendered":"<span class=\"post_title\">\u0428\u043a\u043e\u043b\u044c\u043d\u044b\u0439 \u0437\u0432\u043e\u043d\u043e\u043a \u043d\u0430 Raspberry Pi \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/161\/392\/522\/161392522a8c76409f763323d0383784.png\" align=\"left\"\/> \u0414\u043e\u0431\u0440\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0443\u0442\u043e\u043a, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u041d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u044b\u0435 Linux \u0441\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 SoC \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0449\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0441\u0440\u0435\u0434\u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439, \u0442\u0430\u043a \u0438 \u0441\u0440\u0435\u0434\u0438 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043b\u0435\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0412\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0434\u0430\u0447 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432, \u0438 \u0434\u0430\u0436\u0435 \u0442\u0435\u0445 \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0435\u0448\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e, \u0445\u043e\u0442\u044c \u0438 \u043c\u0435\u043b\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u2014 \u044d\u0442\u043e \u0442\u043e\u0442 \u0435\u0449\u0435 \u043e\u0432\u0435\u0440\u043a\u0438\u043b\u043b, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u0442\u0430\u043a \u043b\u0438 \u044d\u0442\u043e \u043f\u043b\u043e\u0445\u043e? \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u043d\u0430\u0448 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 <a href=\"http:\/\/habrahabr.ru\/post\/206782\/#comment_7125942\">\u0441\u043f\u043e\u0440<\/a> \u0441 \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0438\u043d\u043e\u043c <a href=\"http:\/\/habrahabr.ru\/users\/devzona\/\" class=\"user_link\">devzona<\/a> \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h4>\n<p>  \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044f\u0432\u043d\u043e\u0439 \u043d\u0438\u0448\u0435\u0439 \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0447\u0435\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0448\u043a\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0432\u043e\u043d\u043a\u0430? \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0434\u0443\u043c\u0430\u043b \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043b\u0435\u0442 5-7 \u043d\u0430\u0437\u0430\u0434, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u043b \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/cfa\/de7\/363\/cfade7363a149cc51af7ce89d4493a67.jpg\" align=\"right\"\/><br \/>  \u0421\u043e\u0431\u0440\u0430\u043d\u043e, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u043d\u0430 \u041c\u041a \u0441\u0435\u0440\u0438\u0438 8050, \u0438\u043c\u0435\u0435\u0442 \u043d\u0430 \u0431\u043e\u0442\u0443 \u0447\u0430\u0441\u0438\u043a\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0443\u043c\u0435\u0435\u0442 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u0435, \u0438 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0443\u043c\u0435\u0435\u0442 \u0432\u043e\u0432\u0440\u0435\u043c\u044f \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u0440\u0435\u043b\u044e\u0448\u043a\u0443, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0443\u044e \u0448\u043a\u043e\u043b\u044c\u043d\u044b\u0439 \u0437\u0432\u043e\u043d\u043e\u043a. \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0431\u043b\u0430\u0433\u043e\u043f\u043e\u043b\u0443\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u043b\u0435\u0442, \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439 \u043a \u043d\u0435\u043c\u0443 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0441\u0435 \u0442\u0435\u0447\u0435\u0442 \u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0425\u0430\u0440\u044c\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0448\u043a\u043e\u043b\u0430 \u0441 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0435\u0433\u043e-\u0442\u043e \u0442\u0430\u043c \u0440\u0435\u0448\u0438\u043b\u0430 \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u0435\u0440\u0435\u0430\u0442\u0442\u0435\u0441\u0442\u0430\u0446\u0438\u044e \u0432 \u043b\u0438\u0446\u0435\u0439 \u0441 \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e. \u0422\u0430\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u0430\u0442\u0442\u0435\u0441\u0442\u0430\u0446\u0438\u044f, \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0441 45-\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0445 \u0443\u0440\u043e\u043a\u043e\u0432 \u043d\u0430 \u043f\u0430\u0440\u044b, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0447\u0430\u0441\u043e\u0432 \u043f\u043e 40 \u043c\u0438\u043d\u0443\u0442. \u0422\u0443\u0442-\u0442\u043e \u0438 \u043f\u0440\u0438\u0448\u043b\u0430 \u0431\u0435\u0434\u0430. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0447\u0430\u0441\u0438\u043a\u043e\u0432 \u043d\u0430 \u041c\u041a \u0431\u043b\u0430\u0433\u043e\u043f\u043e\u043b\u0443\u0447\u043d\u043e <s>\u0441\u043f\u0438\u043b\u0441\u044f<\/s> \u0443\u0435\u0445\u0430\u043b \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443, \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b. \u0418\u043c\u0435\u043d\u043d\u043e \u0441 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u043f\u043e\u0441\u0442\u0443\u0447\u0430\u043b\u0441\u044f \u043a\u043e \u043c\u043d\u0435 \u0432 \u0421\u043a\u0430\u0439\u043f \u043e\u0434\u043d\u0438\u043c \u043e\u0441\u0435\u043d\u043d\u0438\u043c \u0434\u043d\u0435\u043c \u043c\u043e\u0439 \u0434\u0440\u0443\u0433 \u041a\u043e\u0441\u0442\u044f. <\/p>\n<p>  \u041e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043f\u0430\u0446\u0438\u0435\u043d\u0442\u0430 \u043f\u0440\u0438\u0448\u043b\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0447\u0435\u043c \u0437\u0430 \u043f\u0430\u0440\u0443 \u043d\u0435\u0434\u0435\u043b\u044c \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0434 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u041f\u043e \u0441\u0443\u0442\u0438, \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0441 \u043d\u0443\u043b\u044f. \u0418, \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e, \u0432\u0435\u0447\u0435\u0440\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u043d\u044f \u043a\u0443\u0440\u044c\u0435\u0440 \u0438\u0437 DHL \u043f\u0440\u0438\u0432\u0435\u0437 \u043c\u043d\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 Raspberry. \u0422\u0443\u0442 \u0438 \u043f\u0440\u0438\u0448\u043b\u0430 \u0438\u0434\u0435\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0447\u0430\u0441\u0438\u043a\u0438, \u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0430\u0441\u0438\u043a\u0438, \u0430 \u0441 \u043c\u0430\u0433\u0438\u0435\u0439. \u0412\u0435\u0434\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c \u043b\u0438\u043d\u0443\u043a\u0441\u043e\u043c \u043d\u0435 \u0431\u043e\u0440\u0442\u0443, \u0440\u0443\u043a\u0438 \u0440\u0430\u0437\u0432\u044f\u0437\u0430\u043d\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u0435\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b!<\/p>\n<h4>\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438<\/h4>\n<p>  \u0423\u0442\u0440\u043e\u043c, \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0433\u043e\u0432\u043e\u0440\u043e\u0432 \u0441 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u043c, \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0442\u0430\u043a: \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u041f\u041a, \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430 (\u0434\u043e\u0440\u043e\u0433\u043e), \u0443\u043c\u0435\u0442\u044c \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 (\u043f\u043e \u0437\u0432\u043e\u043d\u043a\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u044b, \u0432\u0441\u0435 \u0437\u0432\u043e\u043d\u043a\u0438 \u0441\u0442\u0440\u043e\u0433\u043e \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u044b), \u0443\u043c\u0435\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e, \u0438, \u043a\u0430\u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0446\u0438\u044f \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435, \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043c\u0435\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0439\u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433 \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0434\u043b\u044f \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0437\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ul>\n<li>\u0414\u0435\u043c\u043e\u043d, \u0443\u043c\u0435\u044e\u0449\u0438\u0439 \u0434\u0435\u0440\u0433\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e GPIO \u043d\u043e\u0436\u043a\u0443 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f<\/li>\n<li>\u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0432\u043e\u043d\u043a\u043e\u0432<\/li>\n<li>\u0427\u0430\u0441\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/li>\n<li>\u0421\u0438\u043b\u043e\u0432\u0430\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0448\u043a\u043e\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0432\u043e\u043d\u043a\u0430\u043c\u0438<\/li>\n<\/ul>\n<p>  \u042f \u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0443\u043f\u0443\u0441\u043a\u0430\u044e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Raspberry Pi, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u043e\u043b\u043e\u043d \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0442\u0438, \u0442\u0430\u0439\u043c-\u0437\u043e\u043d\u044b \u0438 \u0442.\u0434. <\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c.<\/p>\n<h4>\u0427\u0430\u0441\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/h4>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0447\u0430\u0441\u043e\u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0437\u044f\u043b \u043c\u0435\u043b\u043a\u0443\u044e \u043f\u043b\u0430\u0442\u043a\u0443 \u043d\u0430 DS1302, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d\u0430 \u043d\u0430\u0448\u043b\u0430\u0441\u044c \u0443 \u043c\u0435\u043d\u044f \u0432 \u043a\u0443\u0447\u043a\u0435 \u0437\u0430\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437 \u041a\u0438\u0442\u0430\u044f \u0445\u043b\u0430\u043c\u0430. \u0412 \u0441\u0435\u0442\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0430\u0441\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f <a href=\"http:\/\/www.hobbytronics.co.uk\/raspberry-pi-real-time-clock\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438\u0445 \u0447\u0430\u0441\u0438\u043a\u043e\u0432 \u043a \u043c\u0430\u043b\u0438\u043d\u043a\u0435. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/f78\/edb\/7ab\/f78edb7ab46a5f405825529952604c39.jpg\" \/><\/div>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0444\u0442, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u0438 RTC. \u0421\u043e\u0444\u0442 \u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b \u043f\u043e\u0434 \u0441\u0435\u0431\u044f, \u0434\u0430\u0431\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f RTC \u043f\u0435\u0440\u0435\u0434 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c.<\/p>\n<p>  \u041f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443, \u0447\u0430\u0441\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u0430\u043b\u0438\u043d\u043a\u0438 \u0441 NTP \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u0438, \u0435\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a NTP \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0435\u0442, \u0442\u043e\u0433\u0434\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0447\u0430\u0441\u044b \u043c\u0430\u043b\u0438\u043d\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441 \u0447\u0430\u0441\u0430\u043c\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0422\u0430\u043a\u043e\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c, \u0442\u0430\u043a \u043a\u0430\u043a DS1302 \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0443 \u0443\u043f\u043e\u043b\u0437\u0430\u0442\u044c \u043d\u0430 \u043f\u0430\u0440\u0443 \u0441\u0435\u043a\u0443\u043d\u0434 \u0432 \u0441\u0443\u0442\u043a\u0438, \u0447\u0442\u043e \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c ntpd \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 \u043a\u043e\u0441\u0442\u044b\u043b\u044c:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/usr\/local\/bin\/update_rtc<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/bash  LOG=&quot;\/var\/log\/rtc-sync.log&quot; DATE=`date`  sleep 30  echo &quot;*** $DATE&quot; &gt;&gt;$LOG  until ping -nq -c3 8.8.8.8; do     echo &quot;No network, updating system clock from RTC.&quot; &gt;&gt;$LOG     rtc-pi 2&gt;&1     exit done  echo &quot;Network detected. Updating RTC.&quot; &gt;&gt;$LOG date +%Y%m%d%H%M%S |xargs .\/rtc-pi 2&gt;&1 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/init.d\/rtc<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/sh # \/etc\/init.d\/rtc   ### BEGIN INIT INFO # Provides:          RTC controll # Required-Start:    $remote_fs $syslog # Required-Stop:     $remote_fs $syslog # Default-Start:     2 3 4 5 # Default-Stop:      0 1 6 # Short-Description: Simple script to start RTC sync # Description:       A simple script from prostosergik &lt;serge.liskovsky@gmail.com&gt; which will run script that synchronizes RTC module clock with system clock at startup. ### END INIT INFO   case &quot;$1&quot; in   start)     echo &quot;RTC sync...&quot;     \/usr\/local\/bin\/update_rtc& 2&gt;&1     ;;   stop)     echo &quot;Stopping RTC Sync...&quot;     # kill application you want to stop     killall update_rtc     ;;   *)     echo &quot;Usage: \/etc\/init.d\/rtc {start|stop}&quot;     exit 1     ;; esac  exit 0 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u2026 \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443:  <\/p>\n<pre><code class=\"bash\">sudo update-rc.d rtc defaults<\/code><\/pre>\n<p>  \u042d\u0442\u0438 \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0447\u0430\u0441\u0438\u043a\u0438 \u043c\u0430\u043b\u0438\u043d\u043a\u0438 \u0441 RTC \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0441\u0435\u0442\u044c, \u0438\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0432 RTC, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430. \u0427\u0435\u0440\u0435\u0437 30 \u0441\u0435\u043a \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 ntpd \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0447\u0430\u0441\u044b. \u0412 \u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432 RTC \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 Raspberry \u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0435\u043d. \u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435, \u043d\u043e \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0435 \u0441\u043c\u043e\u0433. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 \u043a\u0440\u043e\u043d \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f RTC \u0440\u0430\u0437 \u0432 2-3 \u0447\u0430\u0441\u0430, \u0434\u0430\u0431\u044b \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u0432 \u0447\u0430\u0441\u0430\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u0415\u0441\u043b\u0438 \u043c\u043d\u043e\u0433\u043e\u0443\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0435\u0442 \u043b\u0443\u0447\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0431\u0443\u0434\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0434.<\/p>\n<h4>\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440<\/h4>\n<p>  \u0422\u0443\u0442 \u0434\u043e\u043b\u0433\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d POST \u0437\u0430\u043f\u0440\u043e\u0441. \u0425\u0440\u0435\u0441\u0442\u043e\u043c\u0430\u0442\u0438\u0439\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 Python \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u0441\u043e\u0431\u043e\u0439. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">webserver.py<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">#!\/usr\/bin\/python # -*- coding: utf-8 -*-  import cgi, re, json from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer import collections  from config import *   class MainRequestHandler(BaseHTTPRequestHandler):      def do_GET(self):          if self.path == '\/':                          lessons = readSchedule()             schedule = ''             for lesson in lessons:                 schedule += u&quot;&lt;b&gt;\u0427\u0430\u0441 &quot;+lesson+&quot;&lt;\/b&gt;: &quot;+lessons[lesson].get('start', '--:--') + &quot;&nbsp;-&nbsp;&quot; + lessons[lesson].get('end', '--:--') + &quot;&lt;br \/&gt;&quot;                          data = {                 'schedule': schedule.encode('utf-8')             }                          TemplateOut(self, 'index.html', data)             return          elif self.path == '\/form.html':                          lessons = readSchedule()              form = ''             for lesson in lessons:                 form += u&quot;&lt;div class='form_block'&gt;&lt;label&gt;\u0427\u0430\u0441 &quot;+lesson+&quot;&lt;\/label&gt; &lt;input type='text' name='lesson_&quot;+lesson+&quot;_start' value='&quot;+lessons[lesson].get('start', '--:--') + &quot;'&gt; - &lt;input type='text' name='lesson_&quot;+lesson+&quot;_end' value='&quot;+lessons[lesson].get('end', '--:--') + &quot;'&gt; &lt;\/div&gt; &quot;&quot;&quot;              data = {                 'form': form.encode('utf-8')             }                          TemplateOut(self, 'form.html', data)             return                  elif self.path == '\/remote.html':                          lessons = readScheduleRemote()              form = ''             for lesson in lessons:                 form += u&quot;&lt;div class='form_block'&gt;&lt;label&gt;\u0427\u0430\u0441 &quot;+lesson+&quot;&lt;\/label&gt; &lt;input type='text' name='lesson_&quot;+lesson+&quot;_start' value='&quot;+lessons[lesson].get('start', '--:--') + &quot;'&gt; - &lt;input type='text' name='lesson_&quot;+lesson+&quot;_end' value='&quot;+lessons[lesson].get('end', '--:--') + &quot;'&gt; &lt;\/div&gt; &quot;&quot;&quot;              data = {                 'form': form.encode('utf-8')             }                          TemplateOut(self, 'form.html', data)             return          else:             try:                 TemplateOut(self, self.path)             except IOError:                 self.send_error(404, 'File Not Found: %s' % self.path)      def do_POST(self):          # Parse the form data posted         form = cgi.FieldStorage(             fp=self.rfile,              headers=self.headers,             environ={                 'REQUEST_METHOD':'POST',                 'CONTENT_TYPE':self.headers['Content-Type'],             }         )          lessons = {}         if self.path.endswith('save'):              # Echo back information about what was posted in the form             for field in form.keys():                  field_item = form[field]                  if type(field_item) == type([]):                     pass # no arrays processing now                 else:                     if field_item.filename:                         pass #no files now.                     else:                         if re.match('lesson_([\\d]+)_(start|end)', field):                             (lesson, state) = re.findall('lesson_([\\d]+)_(start|end)', field)[0]                             try:                                 lessons[lesson]                             except Exception:                                 lessons[lesson] = {}                              lessons[lesson][state] = field_item.value              # printlessons             json_s = json.dumps(lessons)              if json_s:                 try:                     f = open(JSON_FILE, 'w+')                      f.write(json_s)                     f.close()                      HTMLOut(self, 'Saved OK.' + JS_REDIRECT)                 except IOError, e:                     # raise e                     HTMLOut(self, 'Error saving. IO error. '+e.message)             else:                 HTMLOut(self, 'Json Error.')         else:             self.send_error(404, 'Wrong POST url: %s' % self.path)          return    def Redirect(request, location):     request.send_response(301)     request.send_header('Location', location)     request.end_headers()                return       def Headers200(request):     request.send_response(200)     request.send_header('Content-type',    'text\/html')     request.end_headers()              return     def TemplateOut(request, out_file, data = {}):      f = open(SCRIPT_DIR + out_file)      out = f.read()     f.close()      #tiny template engine     for key, var in data.items():         out = out.replace(&quot;{{&quot;+key+&quot;}}&quot;, var)      HTMLOut(request, out)  def HTMLOut(request, html):     Headers200(request)      f = open(SCRIPT_DIR + 'base.html')      out = f.read()     f.close()      out = out.replace(&quot;{{content}}&quot;, html)     request.wfile.write(out)  def readSchedule():      try:         f = open(JSON_FILE, 'r')          json_s = f.read()         f.close()     except IOError:         return []           try:         lessons = json.loads(json_s)     except Exception:         return []      lessons = collections.OrderedDict(sorted(lessons.items()))      return lessons  def readScheduleRemote():      import urllib2      try:         response = urllib2.urlopen(REMOTE_URL)         json_s = response.read()         except Exception:         return []      try:         lessons = json.loads(json_s)     except Exception:         return []      lessons = collections.OrderedDict(sorted(lessons.items()))      return lessons  def main():     try:         server = HTTPServer(('', 8088), MainRequestHandler)         print 'Started httpserver...'         server.serve_forever()     except KeyboardInterrupt:         print '^C received, shutting down server.'         server.socket.close()  if __name__ == '__main__':     main()  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0418\u0437 \u0441\u043a\u0443\u043a\u0438 \u0438 \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u0438 \u0431\u044b\u043b \u0434\u0430\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0430\u0442\u043e\u0440. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>  \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442, \u0434\u0443\u043c\u0430\u044e, \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438 \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a GET-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043e\u0442\u0434\u0430\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0434\u0432\u0435 \u0444\u043e\u0440\u043c\u043e\u0447\u043a\u0438 \u0438 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a POST-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0444\u043e\u0440\u043c\u044b \u0432 JSON-\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0439 \u0437\u0432\u043e\u043d\u043a\u043e\u0432.<\/p>\n<h4>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u043e\u0440 \u0448\u043a\u043e\u043b\u044c\u043d\u044b\u043c \u0437\u0432\u043e\u043d\u043a\u043e\u043c<\/h4>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 GPIO \u0434\u043b\u044f Python, \u043c\u043e\u0440\u0433\u0430\u0442\u044c <s>\u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0438\u043a\u043e\u043c<\/s> \u0448\u043a\u043e\u043b\u044c\u043d\u044b\u043c \u0437\u0432\u043e\u043d\u043a\u043e\u043c \u0441 \u043c\u0430\u043b\u0438\u043d\u043a\u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u042d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">daemon.py<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">#!\/usr\/bin\/python # -*- coding: utf-8 -*-  import time import threading import json  import RPi.GPIO as GPIO  from config import *   GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False)  GPIO.setup(25, GPIO.OUT) GPIO.output(25, False)  def read_schedule():     schedule = []     try:         f = open(JSON_FILE, 'r')          json_s = f.read()         f.close()         try:             json_data = json.loads(json_s)         except Exception, e:             json_data = []          for lesson in json_data.values():             start = lesson.get('start', False)             end = lesson.get('end', False)             if start is not False:                 # print start.split(&quot;:&quot;)                 (s_h, s_m) = start.split(&quot;:&quot;)                 schedule.append({'h': int(s_h), 'm':int(s_m)})                 del s_h                 del s_m             if end is not False:                 (e_h, e_m) = end.split(&quot;:&quot;)                 schedule.append({'h': int(e_h), 'm':int(e_m)})                             del e_h                 del e_m          return schedule          # schedule      except IOError, e:         return []     except Exception, e:         return []  class Alarm(threading.Thread):     def __init__(self):         super(Alarm, self).__init__()         self.schedule = read_schedule()         self.keep_running = True      def run(self):         try:             while self.keep_running:                 now = time.localtime()                  for schedule_item in self.schedule:                     if now.tm_hour == schedule_item['h'] and now.tm_min == schedule_item['m']:                                                  print &quot;Ring start...&quot;                         GPIO.output(25, True)                                                  time.sleep(5)                                                  print &quot;Ring end...&quot;                         GPIO.output(25, False)                          self.schedule = read_schedule() #reload schedule if it was changed                         time.sleep(55) # more than 1 minute                                          #print &quot;Check at &quot;+str(now.tm_hour)+':'+str(now.tm_min)+':'+str(now.tm_sec)                   time.sleep(1)         except Exception, e:             raise e             # return     def die(self):         self.keep_running = False  alarm = Alarm()  def main():     try:         alarm.start()         print 'Started daemon...'         while True:             continue     except KeyboardInterrupt:         print '^C received, shutting down daemon.'         alarm.die()  if __name__ == '__main__':     main()  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0415\u0441\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u0442\u043e \u043d\u0430 5 \u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0437\u0432\u043e\u043d\u043e\u043a (\u043f\u043e\u0434\u0430\u0435\u043c \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430 \u043d\u043e\u0436\u043a\u0443 25 GPIO). \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0432\u043e\u043d\u043a\u0430 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e \u0438\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0412\u0441\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<h4>\u0414\u0435\u043c\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0438 \u0434\u0440\u0435\u0441\u0441\u0438\u0440\u0443\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0441\u0430<\/h4>\n<p>  \u0414\u0435\u0439\u0441\u0442\u0432\u0443\u044f \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 RTC, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u0438\u043a\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/init.d\/schedule_daemon<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/sh   ### BEGIN INIT INFO # Provides:          schedule_daemon # Required-Start:    $remote_fs $syslog # Required-Stop:     $remote_fs $syslog # Default-Start:     2 3 4 5 # Default-Stop:      0 1 6 # description: School Ring Schedule daemon # processname: School Ring Schedule daemon ### END INIT INFO  export SCHEDULE_ROOT=\/home\/pi\/ring_app export PATH=$PATH:$SCHEDULE_ROOT  SERVICE_PID=`ps -ef | grep daemon.py | grep -v grep | awk 'END{print $2}'`   usage() {         echo &quot;service schedule_daemon {start|stop|status}&quot;         exit 0 }  case $1 in       start)          if [ $SERVICE_PID ];then             echo &quot;Service is already running. PID: $SERVICE_PID&quot;         else             $SCHEDULE_ROOT\/daemon.py& 2&gt;&1         fi         ;;     stop)          if [ $SERVICE_PID ];then             kill -9 $SERVICE_PID         else             echo &quot;Service is not running&quot;         fi         ;;     status)           if [ $SERVICE_PID ];then             echo &quot;Running. PID: $SERVICE_PID&quot;         else             echo &quot;Not running&quot;         fi         ;;     *) usage         ;; esac <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/init.d\/schedule_webserver<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/sh   ### BEGIN INIT INFO # Provides:          schedule_webserver # Required-Start:    $remote_fs $syslog # Required-Stop:     $remote_fs $syslog # Default-Start:     2 3 4 5 # Default-Stop:      0 1 6 # description: School Ring Schedule web-server # processname: School Ring Schedule web-server ### END INIT INFO  export SCHEDULE_ROOT=\/home\/pi\/ring_app export PATH=$PATH:$SCHEDULE_ROOT  SERVICE_PID=`ps -ef | grep webserver.py | grep -v grep | awk 'END{print $2}'`   usage() {         echo &quot;service schedule_webserver {start|stop|status}&quot;         exit 0 }  case $1 in       start)          if [ $SERVICE_PID ];then             echo &quot;Service is already running. PID: $SERVICE_PID&quot;         else             $SCHEDULE_ROOT\/webserver.py& 2&gt;&1         fi         ;;     stop)          if [ $SERVICE_PID ];then             kill -9 $SERVICE_PID         else             echo &quot;Service is not running&quot;         fi         ;;     status)          if [ $SERVICE_PID ];then             echo &quot;Running. PID: $SERVICE_PID&quot;         else             echo &quot;Not running&quot;         fi         ;;     *) usage         ;; esac <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0418 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u00ab\u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u044b\u0445 \u0441\u043e\u0431\u0430\u0447\u0435\u043a\u00bb \u0434\u043b\u044f \u043d\u0438\u0445. \u042d\u0442\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441, \u0438, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0435\u0433\u043e.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/init.d\/schedule_daemon_wd<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/sh   ### BEGIN INIT INFO # Provides:          schedule_daemon_wd # Required-Start:    $remote_fs $syslog # Required-Stop:     $remote_fs $syslog # Default-Start:     2 3 4 5 # Default-Stop:      0 1 6 # description: School Ring Schedule daemon watchdog # processname: School Ring Schedule daemon watchdog ### END INIT INFO  export SCHEDULE_ROOT=\/home\/pi\/ring_app export PATH=$PATH:$SCHEDULE_ROOT  SERVICE_PID=`ps -ef | grep daemon.py | grep -v grep | awk '{print $2}'`   check_service() {         if [ -z $SERVICE_PID ];then             service schedule_daemon start         fi }   check_service  usage() {     echo &quot;schedule_daemon_wd {start|stop|status}&quot;     exit 0 }   case $1 in     start )           if [ $SERVICE_PID ];then             echo &quot;schedule_daemon is already running. PID: $SERVICE_PID&quot;         else             service schedule_daemon start         fi         ;;     stop )           if [ $SERVICE_PID ];then             service schedule_daemon stop         else             echo &quot;schedule_daemon is already stopped&quot;         fi         ;;     status)          if [ $SERVICE_PID ];then             echo &quot;schedule_daemon is running. PID: $SERVICE_PID&quot;         else             echo &quot;schedule_daemon is not running&quot;         fi         ;;     *) usage         ;; esac <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/init.d\/schedule_webserver_wd<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/sh   ### BEGIN INIT INFO # Provides:          schedule_webserver_wd # Required-Start:    $remote_fs $syslog # Required-Stop:     $remote_fs $syslog # Default-Start:     2 3 4 5 # Default-Stop:      0 1 6 # description: School Ring Schedule web-server watchdog # processname: School Ring Schedule web-server watchdog ### END INIT INFO  export SCHEDULE_ROOT=\/home\/pi\/ring_app export PATH=$PATH:$SCHEDULE_ROOT  SERVICE_PID=`ps -ef | grep webserver.py | grep -v grep | awk '{print $2}'`   check_service() {         if [ -z $SERVICE_PID ];then             service schedule_webserver start         fi }   check_service  usage() {     echo &quot;schedule_webserver_wd {start|stop|status}&quot;     exit 0 }   case $1 in     start )           if [ $SERVICE_PID ];then             echo &quot;schedule_webserver is already running. PID: $SERVICE_PID&quot;         else             service schedule_webserver start         fi         ;;     stop )           if [ $SERVICE_PID ];then             service schedule_webserver stop         else             echo &quot;schedule_webserver is already stopped&quot;         fi         ;;     status)           if [ $SERVICE_PID ];then             echo &quot;schedule_webserver is running. PID: $SERVICE_PID&quot;         else             echo &quot;schedule_webserver is not running&quot;         fi         ;;     *) usage         ;; esac <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u043c\u0438 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b:<\/p>\n<pre><code class=\"bash\">sudo update-rc.d schedule_daemon_wd defaults sudo update-rc.d schedule_webserver_wd defaults <\/code><\/pre>\n<p>  \u0418 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u0440\u043e\u043d \u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\/etc\/cron.d\/wd.cron<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#Watchdog tasks   * * * * * \/etc\/init.d\/schedule_daemon_wd * * * * * \/etc\/init.d\/schedule_webserver_wd  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u043e\u0431\u0430 \u0434\u0435\u043c\u043e\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u0432 \u043a\u043e\u043d\u0446\u0435 wd.cron, \u0438\u043d\u0430\u0447\u0435 crond \u0431\u0443\u0434\u0435\u0442 \u0435\u0433\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c!<\/p>\n<h4>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e \u0441\u0438\u043b\u043e\u0432\u0443\u044e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0443<\/h4>\n<p>  \u0412\u0441\u044f \u0441\u0438\u043b\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u043d\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e. \u0421\u0443\u043c\u043c\u0430\u0440\u043d\u0430\u044f \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0432 \u0448\u043a\u043e\u043b\u0435 \u043e\u043a\u043e\u043b\u043e 0.5 \u041a\u0412\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u0438\u043c\u0438\u0441\u0442\u043e\u0440\u0430 BC137X \u0432 \u043f\u0430\u0440\u0435 \u0441 \u043e\u043f\u0442\u0440\u043e\u043d\u043e\u043c MOC3061 \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0445\u043e\u0437\u044f\u0439\u0441\u0442\u0432\u0430. \u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, 3.3 \u0432\u043e\u043b\u044c\u0442\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0440\u043e\u043d\u0430.   <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/1eb\/fca\/b9e\/1ebfcab9e00baf9a6a9dfdf4a7e70abb.png\" \/><\/div>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0443\u0442 \u0438 \u0440\u0435\u043b\u0435, \u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u044f \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430\u043c, \u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0438. \u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044e \u043c\u0430\u043a\u0435\u0442\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043d\u0435 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e, \u0442.\u043a. \u0434\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e \u043c\u043e\u043d\u0442\u0430\u0436\u0430 \u0442\u0430\u043a \u0438 \u043d\u0435 \u0434\u043e\u0448\u043b\u043e.<\/p>\n<h4>\u0427\u0435\u0433\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442<\/h4>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438\u043c\u0435\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 Linux-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0432 \u0441\u0432\u043e\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u00ab\u043d\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u00bb \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0438\u0447\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0443\u0439\u0434\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432\u0441\u0435-\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e \u0442\u043e, \u0447\u0435\u0433\u043e, \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<p>  <i>\u0412\u043e \u043f\u0435\u0440\u0432\u044b\u0445<\/i>, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c. \u0421\u0442\u043e\u0438\u043b\u043e \u0431\u044b \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 HTTP-Auth \u0445\u043e\u0442\u044f \u0431\u044b, \u0438\u043b\u0438, \u0434\u043e\u043f\u0438\u0441\u0430\u0432 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u0432 \u00ab\u0430\u0434\u043c\u0438\u043d-\u043f\u0430\u043d\u0435\u043b\u044c\u00bb \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0414\u0430 \u0438 \u043d\u0430\u0434 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0442\u043e\u0438\u0442, \u043a\u0430\u043a \u0434\u043e, \u0442\u0430\u043a \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b.<br \/>  <i>\u0412\u043e \u0432\u0442\u043e\u0440\u044b\u0445<\/i>, \u043d\u0443\u0436\u043d\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0430\u043a\u0430\u0434\u0435\u043c. \u0447\u0430\u0441\u043e\u0432 \u0432 \u0444\u043e\u0440\u043c\u0443. \u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u0434\u043e\u0440\u0438\u0441\u043e\u0432\u0430\u0432 \u0432 \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u043b\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u043e\u0433\u043e JavaScript \u043a\u043e\u0434\u0430.<br \/>  <i>\u0412 \u0442\u0440\u0435\u0442\u044c\u0438\u0445<\/i>, \u043c\u043d\u0435 \u0442\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u00ab\u0442\u0440\u0435\u0432\u043e\u0436\u043d\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443\u00bb \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430 \u0431\u044b \u0437\u0432\u043e\u043d\u043e\u043a \u0437\u0430 5-10 \u0441\u0435\u043a\u0443\u043d\u0434. \u041f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u043a\u0430 \u0434\u043b\u044f \u043f\u044b\u0442\u043b\u0438\u0432\u044b\u0445 \u0443\u043c\u043e\u0432 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439, \u0431\u043b\u0430\u0433\u043e, \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435. <br \/>  <i>\u0412 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0445<\/i>, \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0431\u043b\u043e\u043a\u0430 \u0431\u0435\u0441\u043f\u0435\u0440\u0435\u0431\u043e\u0439\u043d\u043e\u0433\u043e \u043f\u0438\u0442\u0430\u043d\u0438\u044f. \u0412\u0432\u0438\u0434\u0443 \u043e\u0442\u043a\u0430\u0437\u0430 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0434\u043e \u043d\u0435\u0433\u043e \u043c\u044b \u0442\u0430\u043a \u0438 \u043d\u0435 \u0434\u043e\u0448\u043b\u0438. <\/p>\n<h4>\u0427\u0435\u043c \u0432\u0441\u0451 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u043e\u0441\u044c<\/h4>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0425\u0430\u0440\u044c\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0433\u0438\u043c\u043d\u0430\u0437\u0438\u044f \u0441 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0435\u0433\u043e-\u0442\u043e \u0442\u0430\u043c \u0440\u0435\u0448\u0438\u043b\u0430, \u0447\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e 3 \u0433\u0440\u0438\u0432\u043d\u044b \u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c, \u043e\u0447\u0435\u043d\u044c \u0442\u0440\u0443\u0434\u043d\u043e, \u0438 \u043d\u0430\u043c \u0432 \u0438\u0442\u043e\u0433\u0435 \u0434\u0430\u043b\u0438 \u043e\u0442 \u0432\u043e\u0440\u043e\u0442 \u043f\u043e\u0432\u043e\u0440\u043e\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u043e \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0434\u0430\u0440\u043e\u043c. \u041e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0436\u0435\u043b\u0435\u0437\u043e\u043c \u043d\u0430 Python \u043c\u043d\u0435, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u043d\u0435 \u0440\u0430\u0437 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0436\u0438\u0437\u043d\u0438, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0430 \u0437\u0430\u0433\u043e\u0440\u043e\u0434\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0434\u043e\u043c\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u043c \u0438\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u043c\u043e\u0437\u0433\u043e\u0432\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430. \u0415\u0441\u043b\u0438 \u0441\u043c\u043e\u0433 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0432\u043e\u043d\u043a\u043e\u043c, \u0442\u043e \u0438 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u0438 \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u043c\u043e\u0433\u0443. <\/p>\n<h4>\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h4>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u043d\u0435\u0441\u0442\u0438 \u0434\u043e \u0432\u0430\u0441 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u043c\u044b\u0441\u043b\u044c. \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0445, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0437\u0430\u0434\u0430\u0447 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439, \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u0438\u0431\u043a\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c\u044e, \u0447\u0442\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043b\u044c\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u0438 \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044e \u0441\u0440\u0435\u0434\u0441\u0442\u0432. <\/p>\n<p>  \u041d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0441\u0435\u0433\u043e \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043e \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0442\u0440\u0435\u0445 \u0447\u0430\u0441\u043e\u0432. \u0414\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043e \u0443\u043c\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0435\u0449\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435. \u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0448\u0443 \u043d\u0435 \u043f\u0438\u043d\u0430\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430 \u043a\u0440\u0438\u0432\u043e\u0432\u0430\u0442\u044b\u0439 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043a\u043e\u0434 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u042d\u0442\u043e \u043c\u043e\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Python. \u0412\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0434 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430\u043c, \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f\u043c \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c. \u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0438 \u0432\u0438\u0434\u0435\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u044b\u043b\u043e\u0436\u0443 \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e.<\/p>\n<p>  \u0421 \u043d\u0435\u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435\u043c \u0436\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u0440\u0430\u0434\u043e\u043c <a href=\"http:\/\/habrahabr.ru\/users\/devzona\/\" class=\"user_link\">devzona<\/a> \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Arduino. \u0423\u0432\u0435\u0440\u0435\u043d, \u043c\u043d\u0435 \u0435\u0441\u0442\u044c \u0447\u0435\u043c\u0443 \u0443 \u043d\u0435\u0433\u043e \u043f\u043e\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043b\u0430\u043d\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445. \u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0431\u0435\u0449\u0430\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u043e\u0438\u0441\u0442\u0438\u043d\u0443 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0439.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/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=\"http:\/\/habrahabr.ru\/post\/207138\/\"> http:\/\/habrahabr.ru\/post\/207138\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/161\/392\/522\/161392522a8c76409f763323d0383784.png\" align=\"left\"\/> \u0414\u043e\u0431\u0440\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0443\u0442\u043e\u043a, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435. \u041d\u0435 \u0441\u0435\u043a\u0440\u0435\u0442, \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u044b\u0435 Linux \u0441\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 SoC \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0449\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0441\u0440\u0435\u0434\u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439, \u0442\u0430\u043a \u0438 \u0441\u0440\u0435\u0434\u0438 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043b\u0435\u0435 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0412\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0434\u0430\u0447 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432, \u0438 \u0434\u0430\u0436\u0435 \u0442\u0435\u0445 \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0440\u0435\u0448\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e, \u0445\u043e\u0442\u044c \u0438 \u043c\u0435\u043b\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u2014 \u044d\u0442\u043e \u0442\u043e\u0442 \u0435\u0449\u0435 \u043e\u0432\u0435\u0440\u043a\u0438\u043b\u043b, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u0442\u0430\u043a \u043b\u0438 \u044d\u0442\u043e \u043f\u043b\u043e\u0445\u043e? \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u043d\u0430\u0448 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 <a href=\"http:\/\/habrahabr.ru\/post\/206782\/#comment_7125942\">\u0441\u043f\u043e\u0440<\/a> \u0441 \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0438\u043d\u043e\u043c <a href=\"http:\/\/habrahabr.ru\/users\/devzona\/\" class=\"user_link\">devzona<\/a> \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-207138","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/207138","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=207138"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/207138\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=207138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=207138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=207138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}