{"id":198864,"date":"2013-11-26T19:44:03","date_gmt":"2013-11-26T15:44:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=198864"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=198864","title":{"rendered":"<span class=\"post_title\">\u0421\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0431\u0435\u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<h4>\u0418\u043d\u0442\u0440\u043e<\/h4>\n<p>  \u042f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 iOS-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e BaaS <a href=\"http:\/\/parse.com\">Parse.com<\/a> \u041d\u0438\u0436e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 tips&#038;tricks \u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 parse.com.<br \/>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u0443\u043c\u0430\u043b \u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430 RoR, \u043d\u043e, \u0432\u0438\u0434\u0438\u043c\u043e, \u043e\u043d\u0438 \u043d\u0435 \u0440\u0438\u0441\u043a\u043d\u0443\u043b\u0438 \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043c\u043d\u043e\u0433\u043e \u0434\u0435\u043d\u0435\u0433. \u041c\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0442\u0440\u043e\u0433\u043e\u0435 NDA, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 Appstore \u044f \u0434\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h4>\n<p>  \u042f \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0432\u0438\u0434\u0435\u043b \u0438 \u0441\u043b\u044b\u0448\u0430\u043b \u043f\u0440\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043a\u0438\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0438 \u0442\u0435\u0440\u044f\u043b\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0446\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0434\u0435\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0437\u043b\u043e\u0436\u0435\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421\u0447\u0438\u0442\u0430\u044e, \u0447\u0442\u043e \u0432 \u043d\u0435\u043c, \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438, \u0438 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0432\u0435\u0441\u044c \u043e\u043f\u044b\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0430 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Xcode \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/fe0\/345\/734\/fe034573418baede705f4d84946ca2f4.png\" alt=\"image\"\/><\/div>\n<\/div>\n<h5>\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043b\u043e\u0438<\/h5>\n<p>  <\/p>\n<h6>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0441\u0435\u0442\u044c\u044e<\/h6>\n<p>  \u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438: <a href=\"http:\/\/www.pubnub.com\">PubNub<\/a> \u0438 <a href=\"http:\/\/parse.com\">Parse<\/a>. \u0412\u0441\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 SDK \u044d\u0442\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435.  <\/p>\n<ul>\n<li>Message Center\n<ul>\n<li>PubNub SDK<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>  <\/p>\n<ul>\n<li>Parse Services<br \/>  \u0423 Parse \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0435 iOS SDK, \u043d\u043e \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043b\u0438\u0435\u043d\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0437\u0434\u043d\u0435\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 Parse RESTfull API, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 AFNetworking. \u0412\u0441\u044e \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u043c\u044b \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u043b\u0438 \u043d\u0430 <a href=\"https:\/\/parse.com\/docs\/cloud_code_guide\">cloud code<\/a> \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u044b\u0437\u044b\u0432\u0430\u043b \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 NSDictionary, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0441 Backbone.js, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0438\u0448\u0435\u0442\u0441\u044f cloud code, \u044f \u0441\u0442\u0430\u043b \u0432\u0441\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043c \u2014 \u044d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0435\u0435 \u0438 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u044b\u043b\u0430\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443. \u0422\u043e\u043b\u044c\u043a\u043e \u043d\u0430 login \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0441\u044b\u043b\u0430\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. <\/li>\n<\/ul>\n<p>  <\/p>\n<h6>UI<\/h6>\n<p>  \u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u2014 \u0442\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e ViewControllers, Views, Cells \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438 \u0441 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0432 \u0441\u0430\u043c\u044b\u0445 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 facebook, \u0442\u043e \u043e\u043d \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u043a\u0440\u0430\u043d \u0441 \u0442\u0435\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0435\u0441\u043b\u0438 \u0438\u0445 \u043d\u0435\u0442 \u0432 \u0435\u0433\u043e facebook \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435. \u0422\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 push notification. \u041d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c drag-n-drop \u0434\u043b\u044f UICollectionView \u2014 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e: <a href=\"https:\/\/github.com\/lxcid\/LXReorderableCollectionViewFlowLayout\">github.com\/lxcid\/LXReorderableCollectionViewFlowLayout<\/a>. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0448\u0430\u043c\u0430\u043d\u0438\u0442\u044c, \u043d\u043e, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0434\u043e\u043c \u043c\u043e\u0436\u043d\u043e.<br \/>  \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443 \u043f\u043e\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/emenegro\/pull-to-refresh\/tree\/master\/pull-to-refresh\/MNMPullToRefresh\">MNMPullToRefresh<\/a>, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d pull to refresh \u043a\u043e\u043d\u0442\u0440\u043e\u043b \u0434\u043b\u044f UITableView.<\/p>\n<h6>Data<\/h6>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 CoreData \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Magic Recording: \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0435\u0442\u0443, \u043a\u0440\u043e\u043c\u0435 \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.  <\/p>\n<ul>\n<li>Core Data\n<ul>\n<li>Magic Recording<\/li>\n<li>DataBaseManager class<\/li>\n<\/ul>\n<\/li>\n<li>DataSources<br \/>  \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f UIViewController, \u0433\u0434\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0411\u0414 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.<\/li>\n<li>Models<br \/>  \u041c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u2014 \u043c\u043e\u0434\u0435\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u043d\u0430\u043c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/li>\n<\/ul>\n<p>  <\/p>\n<h6>Synchronisation Layer<\/h6>\n<p>  \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0411\u0414 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e(\u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c). \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c id \u043d\u0435\u0442\u0443 \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 \u0411\u0414. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<br \/>  \u0414\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u043e\u043b\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c runtime \u0444\u0443\u043d\u043a\u0446\u0438\u0439:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u043e\u0434<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>-(id)syncLocal:(id)local withClass:(Class)localClass fromParse:(id)parse{     NSAssert([parse isKindOfClass:[UserStatistic class]], @&quot;wrong class&quot;);     UserStatistic*stat =(UserStatistic*)parse;     LocalUserStatistics* newLocalStat = (LocalUserStatistics*)local;     if(!newLocalStat)         newLocalStat=[super syncLocal:local withClass:localClass fromParse:parse];          unsigned int outCount;     Protocol* protocol = objc_getProtocol(&quot;StatisticsProtocol&quot;);     objc_property_t *propList = protocol_copyPropertyList(protocol, &outCount);      NSArray* noSetProps = [self propertiesDontNeedToSet];     for (int i = 0; i &lt; (int)outCount; i++) {         objc_property_t * oneProp = propList + i;     \tNSString *propName = [NSString stringWithUTF8String:property_getName(*oneProp)];         if([noSetProps indexOfObject:propName]==NSNotFound){             id newValue =[stat valueForKey:propName];             if(newValue && newValue!=[NSNull null]){                 [newLocalStat setValue:newValue forKey:propName];             }         }     }     free(propList);          return  newLocalStat; }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li>ParseObjectsSync<br \/>  \u0421\u043b\u043e\u0439 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u2014 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u0437 \u0441\u043b\u043e\u044f ParseObjectSync \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438<\/li>\n<li>ParseObjectSync<br \/>  \u0421\u043b\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u043b\u043e\u0433\u0438\u043a\u0430, \u0433\u0434\u0435 \u043c\u044b \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 Parse \u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u044c Core Date. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u043f\u043e\u043b\u044f, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e.<\/li>\n<li>Chat Engine<br \/>  UI \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0441\u0435\u0442\u044c\u044e \u0438 \u0411\u0414 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u041a\u043b\u0430\u0441\u0441 Chat Engine \u0442\u043e\u0436\u0435 \u043b\u0435\u0436\u0438\u0442 \u043c\u0435\u0436\u0434\u0443 UI \u0438 Pubnub c CoreDate. \u041e\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c, \u043d\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0437 \u043d\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u043c \u0441\u043b\u043e\u0435\u043c. \u0425\u043e\u0442\u044f, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.  <\/li>\n<\/ul>\n<p>  <\/p>\n<h6>In App Purchase<\/h6>\n<p>  \u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0432\u0430\u043b\u044e\u0442\u0430 \u2014 Coins (\u041c\u043e\u043d\u0435\u0442\u043a\u0438), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043a\u0443\u043f\u0438\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c In-App Purchase, \u043d\u0443 \u0430 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043d\u0430 \u0447\u0442\u043e :). \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f Apple&#8217;s In-App Purchase, \u043e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f Consumable Product, \u0442.\u0435. \u043d\u0443\u0436\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0438\u0441\u0438 \u0438 \u0443\u0447\u0435\u0442\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0430\/\u0440\u0430\u0441\u0445\u043e\u0434\u0430 \u043c\u043e\u043d\u0435\u0442\u043e\u043a, \u0438\u043d\u0430\u0447\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442 \u0434\u0435\u043d\u044c\u0433\u0438 \u0438 \u0440\u0430\u0441\u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f. <\/p>\n<p>  \u0411\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0442\u043e\u043d\u043a\u0438\u0439 \u0441\u043b\u043e\u0439 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0421\u0430\u043c\u0438 Coins \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 User \u043d\u0430 parse.com, \u0430 \u043d\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e. \u042d\u0442\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u043e \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0434 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u0437\u0430\u043a\u0446\u0438\u0438. \u0412\u0435\u0434\u044c \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f Coins \u0437\u0430\u043f\u0438\u0448\u0443\u0442\u0441\u044f \u043d\u0430 parse.com \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c finishTransaction. \u0417\u0434\u0435\u0441\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Block-a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u043f\u043e\u043a\u0430 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u0430\u043b \u043d\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u0442\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e Coins \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/p>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u044e\u0442: SKPaymentTransactionObserver (\u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b) \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0436\u0438\u0442\u044c \u0432\u0441\u044e \u0435\u0433\u043e \u0436\u0438\u0437\u043d\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0443\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0439\u0442\u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u0430\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0431\u044b\u043b\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. C\u0432\u043e\u0438\u0445 Singleton-\u043e\u0432 \u043c\u044b \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438.<\/p>\n<h6>Work Circle Controller<\/h6>\n<p>  \u0412 \u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u043a\u0438\u043c-\u0442\u043e \u0438 \u0442\u0430\u043a\u0438\u043c-\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0411\u0414 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0447\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u043d\u044e\u0430\u043d\u0441\u043e\u0432 \u0432 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0435: \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u044d\u043a\u0440\u0430\u043d \u0441 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0447\u0435\u0440\u0435\u0437 facebook \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 push notifications \u043f\u043e\u0441\u043b\u0435 \u043b\u043e\u0433\u0438\u043d\u0430, \u0432\u0435\u0434\u044c \u043d\u0435 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u043b\u043e\u0433\u0438\u043d \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u043a\u0435\u043d\u0430. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043e\u0442 push notifications \u043f\u043e\u0441\u043b\u0435 logout, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043b\u043e\u0433\u0438\u043d\u0430. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0432\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0430 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435, \u0436\u0438\u0442\u044c \u0441\u0442\u0430\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0435\u0433\u0447\u0435. \u041a\u043b\u0430\u0441\u0441, \u043a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435 \u0441\u0438\u043d\u0433\u043b\u0442\u043e\u043d \u2014 \u043e\u043d \u0436\u0438\u0432\u0435\u0442 \u0432 AppDelegate. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0432 AppDelegate \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c 146 \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430.<\/p>\n<h5>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 Parse.com<\/h5>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Parse \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c, \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 \u043d\u0435\u043c \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043b\u0438\u043c\u0438\u0442\u044b \u043d\u0430 \u043e\u0434\u0438\u043d \u0430\u043a\u043a\u0430\u0443\u043d\u0442 (Pro plan):<br \/>  <a href=\"https:\/\/www.parse.com\/questions\/burst-limit\">Burst limit<\/a>: 40 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443<br \/>  <a href=\"https:\/\/parse.com\/questions\/code-154the-number-of-count-operations-in-progress-has-reached-its-limit-code-154-version-1125\">API requests limit<\/a>: 160 \u2014 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (\u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0442)<br \/>  \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 cloud code \u0444\u0443\u043d\u043a\u0446\u0438\u0438: 15 \u0441\u0435\u043a\u0443\u043d\u0434<br \/>  \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 background job: 15 \u043c\u0438\u043d\u0443\u0442<\/p>\n<p>  \u041d\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0449\u0435 \u043d\u0435 \u043d\u0430\u0431\u0440\u0430\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0438 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0430\u043a \u043e\u043d\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435, \u043d\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u043c\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0435\u0442. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043b\u0438\u043c\u0438\u0442\u0430 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e API \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u042f \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 Parse \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 Enterprise plan \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438:<\/p>\n<p>  Total users: 1000<br \/>  Users performing request in the same time: 500<br \/>  API requests performing in the same time: 1000<br \/>  API calls burst limit: 1000<br \/>  Cloud code burst limit: 2000 <\/p>\n<p>  \u041e\u043d\u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e 1000 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u043e\u0438\u0442\u044c $14 000 \u0432 \u043c\u0435\u0441\u044f\u0446. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u044f \u0441\u043f\u0440\u043e\u0441\u0438\u043b \u0443 \u043d\u0438\u0445, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0438 \u043e\u043f\u0438\u0441\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041e\u043d\u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e 1000 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u043e, \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u041d\u0430 Parse \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u0442\u043e\u0439 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0411\u0414. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0412 \u043f\u043b\u0430\u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 Parse \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 <a href=\"http:\/\/kinvey.com\/\">Kinvey<\/a>. \u042f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u0437\u043d\u0430\u043b \u043e\u0431 \u044d\u0442\u043e\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0438 \u0443 Kinvey, \u0438 \u0432\u043e\u0442 \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438: \u00abYou are correct \u2014 we do not limit number of requests per second (or on total requests or API calls in any way).\u00bb \u0417\u0430 $1 400 \u0432 \u043c\u0435\u0441\u044f\u0446 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c BaaS, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c 50 000 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u043c\u0435\u0441\u044f\u0446, 3 \u0441\u0440\u0435\u0434\u044b, \u0430 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f 50 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u0430\u043f\u043f\u043e\u0440\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0442\u0430\u043a: \u00abBL scripts are written in their own containers within the Kinvey web console, so a BL script is defined as each chunk of JS code \u2014 certainly quite a lot can be fit into a single BL script if one so desires.\u00bb \u041a\u0430\u043a \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u044f \u043d\u0435 \u0437\u043d\u0430\u044e, \u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h6>Cloud code \u043d\u0430 Backbone.js<\/h6>\n<p>  \u041c\u043d\u0435, \u043a\u0430\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443, \u043f\u0438\u0441\u0430\u0432\u0448\u0435\u043c\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 \u0441\u043e \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u043a\u0430\u0441\u0430\u0432\u0448\u0435\u043c\u0443\u0441\u044f \u043a backend, \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c backbone.js. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f:  <\/p>\n<ul>\n<li> Callback hell.<br \/>  \u0440\u0435\u0448\u0438\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/caolan\/async\">async.js<\/a> <\/li>\n<li> Debugging.<br \/>  \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b Sublime. \u041f\u043e\u0442\u043e\u043c \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u0441\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0432 Cloud9, \u0438 \u0432 \u0442\u043e\u0442 \u0436\u0435 \u0434\u0435\u043d\u044c \u043d\u0430\u0448\u0435\u043b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439: \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043b\u044f \u0434\u0435\u043f\u043b\u043e\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 Parse \u0443 \u043d\u0435\u0433\u043e \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f python \u043d\u0430 Cloud9 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430 Sublime, \u0438 \u0434\u0435\u0431\u0430\u0433\u0433\u0438\u043d\u0433 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 deploy \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/li>\n<li>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<br \/>  \u0421\u043c\u043e\u0442\u0440\u0438 \u043d\u0438\u0436\u0435. \u042d\u0442\u043e \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0433\u043b\u0430\u0432\u044b<\/li>\n<\/ul>\n<h6>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h6>\n<p>  \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0440\u0435\u0434\u044b \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<br \/>  \u041a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043b \u043e\u0434\u0438\u043d \u0443\u043c\u043d\u044b\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0441\u0430\u043c\u043e\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0432 \u0442\u0435\u0441\u0442\u0430\u0445 \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0440\u0435\u0434\u044b \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<br \/>  \u0412 \u0445\u043e\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0441\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043b\u043e\u0433\u0438\u043a\u0438 \u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 cloud code \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u043b\u043e\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u0434\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u0434\u0435\u043f\u043b\u043e\u0435\u043c. <br \/>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u0442\u0435\u0441\u0442\u0430\u0445 \u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Work Circle Controller \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u043b\u0430\u0433\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0442\u043e\u0442 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u044b:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u043e\u0434<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code> #import &quot;WorkCircleController.h&quot;  \/\/UI #if !TEST #import &quot;LoginViewsManager.h&quot; #endif  \/\/Net #import &lt;Parse\/Parse.h&gt; #import &quot;ParseRESTClient.h&quot; #import &quot;StatisticService.h&quot; #import &quot;ProfilePicturesSync.h&quot;  #if !TEST #import &quot;ChatsEngine.h&quot;  \/\/Data #import &quot;DataBaseManager.h&quot; #import &quot;LocalUser.h&quot; #import &quot;LocalLockSlot.h&quot; #import &quot;LocalPicture.h&quot;  \/\/Sync #import &quot;SyncManager.h&quot; #import &quot;UserSync.h&quot; #else  #endif  #if !TEST @interface WorkCircleController(){     ProfilePicturesSync* profilePicturesSync; }  @property(nonatomic, weak) AppDelegate* appDelegate; @property(nonatomic, strong) LoginViewsManager* loginManager; @property(nonatomic, strong) NSData* deviceToken; @end  #endif   @implementation WorkCircleController  #if !TEST - (id)initWithDelegate:(AppDelegate*)appDelegate {     self = [self init];     if (self) {         self.appDelegate = appDelegate;         profilePicturesSync = [ProfilePicturesSync new];     }     return self; }    #pragma mark - Push notification  - (void)app:(UIApplication*)application didRegisterForRemoteNotificationsWithToken:(NSData*)deviceToken{     self.deviceToken = deviceToken;     if(self.state == LifeStateLoginDataAndNetLayersReady || self.state == LifeStateLoggedIn)         [self subscribeToPushes:deviceToken]; }  - (void)subscribeToPushes:(NSData *)deviceToken {     [self subscribeToParsePushes:deviceToken];     [self subscribeToChatPushes:deviceToken]; }  - (void)subscribeToParsePushes:(NSData *)deviceToken { ... }  - (void)subscribeToChatPushes:(NSData *)deviceToken { ... }   - (void)unsubscribeFromPushesInParseWithBlock:(void (^)(NSError *error))block { ... }  #endif   #pragma mark - Pre Login Logic  -(void)setupPreLoginStateWithBlock:(void (^) (NSError* error))block{     [self prepareNetManagersForPreLoggin]; #if !TEST     [self performUIUpdatesForPreLogginWithBlock:^(NSError *error) {         if(block)             block(error);     }]; #else     finishWithErrorBlock(nil); #endif }  -(void)prepareNetManagersForPreLoggin{     [[ParseRESTClient sharedClient] startParseService]; }  #if !TEST -(void)performUIUpdatesForPreLogginWithBlock:(void (^) (NSError* error))block {     ... } #endif  #pragma mark after register Login Logic - (void)afterRegistrationWithBlock:(void (^) (NSError* error))block{ ... }  #pragma mark - Login Logic -(void)loginWithBlock:(void (^) (NSError* error))block{         [self prepareDataManagersForLogginWithBlock:^(NSError *error) {         [self prepareNetManagersForLogginWithBlock:^(NSError *_error) { #if !TEST             [self performUIUpdatesForLogginWithBlock:^(NSError *uIError) {                 if(block)                     block(uIError);                 [self performAfterLoginUpdatesWithBlock:^(NSError *afterLoginError) {                                      }];             }]; #else             if(finishWithErrorBlock)                 finishWithErrorBlock(error); #endif         }];     }]; }  -(void)prepareDataManagersForLogginWithBlock:(void (^) (NSError* error))block{ #if !TEST     [DataBaseManager setupDataBaseWithUserId:[PFUser currentUser].email];     [[Settings defaultSettings] setUsername:[PFUser currentUser].email]; #endif     block(nil); }  -(void)prepareNetManagersForLogginWithBlock:(void (^) (NSError* error))block{     [[ParseRESTClient sharedClient] updateToken]; #if !TEST     ... #endif     block(nil); }  #if !TEST - (void)performUIUpdatesForLogginWithBlock:(void (^) (NSError* error))block{     ... }  - (void)performAfterLoginUpdatesWithBlock:(void (^) (NSError* error))block {    ... } #endif  #pragma mark - Logout Logic   -(void)logoutWithBlock:(void (^)(NSError *error))block{ #if !TEST ... #else     [PFUser logOut];     [[ParseRESTClient sharedClient] closeClient];     block(nil); #endif }  - (void)deleteAccountWithBlock:(void (^)(NSError *error))block{     [[ParseRESTClient sharedClient] closeClient]; #if !TEST     ... #else     [PFUser logOut];     block(nil); #endif      }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c.<br \/>  \u0412 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434:<\/p>\n<pre><code> - (void) setUpWithBlock:(void (^) (NSError* error))block{     [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@&quot;api.parse.com&quot;]; \/\/\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u0438\u043d\u0430\u0447\u0435 iOS \u043d\u0435 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 https \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0435 \u0410\u041f\u0418.     self.workCircleController = [WorkCircleController new];     [self.workCircleController setupPreLoginStateWithBlock:^(NSError *error) {         block(error);     }]; }<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0441\u0440\u0435\u0434\u0443 \u0438 \u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435, \u0442\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 <a href=\"https:\/\/github.com\/square\/SocketRocket\/blob\/master\/SRWebSocketTests\/SenTestCase%2BSRTAdditions.h\">SRTAdditions.h<\/a> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u043b\u0431\u0435\u043a\u043e\u0432 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432.<br \/>  \u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0438\u0434\u0435\u0438<br \/>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0431\u044b\u043b\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432. \u042f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043d\u0430 Parse \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c Jasmine \u0438\u043b\u0438 Mocha, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0435\u0439\u0441\u044b \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u043e\u0449\u0435 \u0440\u0435\u0448\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u044b, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u044f: \u0431\u0438\u043b\u0434\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0432\u0441\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435, \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043d\u043e\u0432\u044b\u0445 \u0444\u0438\u0447 \u043d\u0430 cloud code \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u043e\u0441\u044c, \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0442\u0435\u043d\u043d\u0438\u0441, \u043f\u043e\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u044b.<br \/>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/32d\/746\/6bc\/32d7466bc553e4dc2e06365a347c6378.png\" alt=\"image\"\/><br \/>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u0442\u0435\u043d\u043d\u0438\u0441 \u044f \u0441\u0442\u0430\u043b \u0438\u0433\u0440\u0430\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u0430\u0447\u0430\u043b\u044c\u0441\u0442\u0432\u043e \u0437\u0430\u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u043b\u043e\u0441\u044c \u0438 \u0440\u0435\u0448\u0438\u043b\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 <a href=\"http:\/\/hudson-ci.org\">hudson-ci.org<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0435\u0440\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u0434 \u0441 git, \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 sh \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0442\u0435\u0441\u0442\u044b. \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 <a href=\"https:\/\/github.com\/facebook\/xctool\">xtool<\/a>. \u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0442\u0435\u0441\u0442\u044b \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434 \u043a\u043e\u0434\u043e\u043c, \u043f\u043e\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u0435\u0441\u0442\u044b.<\/p>\n<h6>\u041b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h6>\n<p>  \u0414\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0443\u043b: <a href=\"https:\/\/github.com\/angelolloqui\/AGi18n\">agi18n<\/a><\/p>\n<h6>Tips &#038; Tricks<\/h6>\n<p>   <\/p>\n<ul>\n<li>\u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u0430\u0434\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c warnings \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"http:\/\/boredzo.org\/blog\/archives\/2009-11-07\/warnings\">\u0441\u0442\u0430\u0442\u044c\u044f 1<\/a>, <a href=\"http:\/\/lightyearsoftware.com\/2013\/03\/xcode-hard-mode\/\">\u0441\u0442\u0430\u0442\u044c\u044f 2<\/a><\/li>\n<li>\u0421\u043d\u0438\u043f\u0435\u0442\u044b (<a href=\"http:\/\/runmad.com\/blog\/2012\/09\/xcode-code-snippets-and-syncing\/\">\u0448\u0430\u0440\u0438\u043d\u0433 \u0447\u0435\u0440\u0435\u0437 dropbox<\/a>):\n<ul>\n<li><code>__weak typeof(self) weakSelf = self;<\/code><\/li>\n<li><code> (void (^)(NSError *error))&lt;#block#&gt;<\/code><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"http:\/\/github.com\/NYTimes\/objective-c-style-guide\">Code style \u043e\u0442 New York Times<\/a><\/li>\n<li><a href=\"http:\/\/revealapp.com\/\">Reveal<\/a>. \u041e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 UI. \u041e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u044f\u0441\u043d\u043e, \u043a\u0443\u0434\u0430 \u0443\u0435\u0445\u0430\u043b\u0430 \u0432\u044c\u044e \u0438\u043b\u0438 \u043a\u043e\u0433\u0434\u0430 \u0434\u0430\u044e\u0442 \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u043e\u0432\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u043c\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0432\u044c\u044e-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0438 \u0433\u0434\u0435 \u043a\u0430\u043a\u0438\u0435 \u0432\u044c\u044e. <\/li>\n<li>\u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0442\u0443\u043b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u043a\u043e\u043d\u043e\u043a \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432<br \/>  <a href=\"http:\/\/www.gieson.com\/Library\/projects\/utilities\/icon_slayer\/\">www.gieson.com\/Library\/projects\/utilities\/icon_slayer\/<\/a><\/li>\n<\/ul>\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\/198864\/\"> http:\/\/habrahabr.ru\/post\/198864\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<h4>\u0418\u043d\u0442\u0440\u043e<\/h4>\n<p>  \u042f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 iOS-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438 \u0431\u044d\u043a\u0435\u043d\u0434\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e BaaS <a href=\"http:\/\/parse.com\">Parse.com<\/a> \u041d\u0438\u0436e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 tips&#038;tricks \u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 parse.com.<br \/>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u0443\u043c\u0430\u043b \u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430 RoR, \u043d\u043e, \u0432\u0438\u0434\u0438\u043c\u043e, \u043e\u043d\u0438 \u043d\u0435 \u0440\u0438\u0441\u043a\u043d\u0443\u043b\u0438 \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043c\u043d\u043e\u0433\u043e \u0434\u0435\u043d\u0435\u0433. \u041c\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0442\u0440\u043e\u0433\u043e\u0435 NDA, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 Appstore \u044f \u0434\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\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-198864","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/198864","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=198864"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/198864\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=198864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=198864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=198864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}