{"id":399783,"date":"2024-06-29T14:52:40","date_gmt":"2024-06-29T14:52:40","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=399783"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=399783","title":{"rendered":"<span>\u0414\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 #423 (6 \u2014 12 \u0434\u0435\u043a\u0430\u0431\u0440\u044f)<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u0412 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b Swift \u0438 \u0434\u0440\u0443\u0436\u0431\u0430 \u0441 Google \u0410\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0432\u044b\u043a\u0438 \u0438 \u0433\u043e\u0434\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e\u0432\u044b\u0439 Flutter, \u0434\u043e\u0445\u043e\u0434\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u044d\u043c\u043e\u0434\u0437\u0438 2021 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/5_\/dn\/iz\/5_dnizxmnrsssalrdjano6xck20.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/5_\/dn\/iz\/5_dnizxmnrsssalrdjano6xck20.jpeg\" data-blurred=\"true\"\/><a name=\"habracut\"><\/a><\/p>\n<p>  <b>\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043d\u0430\u0448 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/5e\/k7\/bf\/5ek7bfhjzilma-pbharuioaa7lw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/5e\/k7\/bf\/5ek7bfhjzilma-pbharuioaa7lw.png\"\/><a href=\"https:\/\/t.me\/apptractor\">Telegram-\u043a\u0430\u043d\u0430\u043b<\/a>, \u0433\u0434\u0435 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c!<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/f19\/30a\/c49\/f1930ac4945596eb9707bc7a01bc5bdc.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/f19\/30a\/c49\/f1930ac4945596eb9707bc7a01bc5bdc.png\"\/> <b>iOS<\/b><\/p>\n<p>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/company\/JetBrains\/blog\/592065\/\">AppCode 2021.3: \u0430\u043a\u0442\u043e\u0440\u044b, \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 plist-\u0444\u0430\u0439\u043b\u043e\u0432, \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/593797\/\">Swift. \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/apple-poka-sohranit-monopoliyu-na-platezhi-za-iap.html\">Apple \u043f\u043e\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u043c\u043e\u043d\u043e\u043f\u043e\u043b\u0438\u044e \u043d\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0438 \u0437\u0430 IAP<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/develop\/coding\/kak-strukturirovat-svoy-swift-kod.html\">\u041a\u0430\u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 Swift-\u043a\u043e\u0434<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/v-app-store-zapustili-custom-product-pages.html\">\u0412 App Store \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 Custom Product Pages<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/www.emergetools.com\/blog\/posts\/SwiftProtocolConformance\">\u0423\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0446\u0435\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0432 Swift<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/mymasterdesigner.com\/2021\/11\/25\/closures-lambda-in-swift-programming\/\">\u0417\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f (Lambda) \u0432 Swift<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/www.objc.io\/blog\/2021\/11\/25\/transactions-and-animations\/\">\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0432 SwiftUI<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/@DarrenFindlay_91414\/unit-testing-memory-leaks-in-ios-with-swift-660b61b692d1\">\u041c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 iOS<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/tauk-blog\/handling-alert-interruptions-in-ios-ui-tests-f3b6d059940f\">\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0430\u043b\u0435\u0440\u0442\u043e\u0432 \u0432 UI-\u0442\u0435\u0441\u0442\u0430\u0445 \u0432 iOS<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/codechai\/implementing-force-update-feature-using-firebase-remote-config-in-ios-52beaabebab5\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Firebase Remote Config \u0432 iOS<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/@michaelrobertellis\/ios-network-framework-for-udp-33782ec0bafb\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0434\u043b\u044f UDP \u0432 iOS<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/engineering.rappi.com\/rappis-ios-bazel-build-system-migration-journey-eb1a2822a05\">\u041f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 Rappi \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 iOS \u043d\u0430 Bazel<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/betterprogramming.pub\/sharing-states-between-swiftui-views-d00d3f41a23b\">\u0428\u0430\u0440\u0438\u043d\u0433 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 SwiftUI<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/@kwnstantinosnikoloutsos\/charles-mockoon-for-ios-80cab9eabca6\">Charles + Mockoon \u0434\u043b\u044f iOS<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/blog.devgenius.io\/ios-core-data-with-sugar-syntax-ef53a0e06efe\">iOS Core Data \u0441 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0441\u0430\u0445\u0430\u0440\u043e\u043c<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/naukri-engineering\/overview-of-dsym-crashlytics-in-ios-dfd72eae8b58\">\u041a\u0430\u043a Crashlytics \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 iOS: \u043e\u0431\u0437\u043e\u0440 dSYM<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/muratkuslu.medium.com\/how-to-become-junior-ios-developer-eee9be1f4f68\">\u041a\u0430\u043a \u0441\u0442\u0430\u0442\u044c Junior iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/blog.devgenius.io\/sourcery-in-ios-10e93c822223\">Sourcery \u0432 iOS<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/ataberkturan.medium.com\/check-internet-connectivity-with-nwpathmonitor-in-swift-a54c6f80f4c2\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e NWPathMonitor \u0432 Swift<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/getpowerplay\/show-custom-toast-using-powerplaytoastkit-in-your-ios-app-ede08d291a52\">\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0442\u043e\u0441\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PowerplayToastKit<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/tauk-blog\/using-xctest-and-xctestcase-for-ios-tests-28828c829b3\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c XCTest \u0438 XCTestCase \u0432 iOS \u0442\u0435\u0441\u0442\u0430\u0445<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" data-src=\"https:\/\/habrastorage.org\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/colorkit.html\">ColorKit: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0432 iOS<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" data-src=\"https:\/\/habrastorage.org\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/messenger-clone-chat-dlya-ios.html\">Messenger Clone: \u0447\u0430\u0442 \u0434\u043b\u044f iOS<\/a><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/e1a\/3cf\/2a8\/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e1a\/3cf\/2a8\/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png\"\/> <b>Android<\/b><\/p>\n<p>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/company\/psb\/blog\/594573\/\">Android: \u043a\u0430\u043a \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 Google \u0410\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043e\u043c?<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/pervyy-vzglyad-na-material-you.html\">\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 Material You<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/compose-multiplatform-dostig-versii-1-0.html\">Compose Multiplatform \u0434\u043e\u0441\u0442\u0438\u0433 \u0432\u0435\u0440\u0441\u0438\u0438 1.0<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/594017\/\">Adb-server \u0432 Kaspresso<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/google-perenosil-igry-android-na-windows.html\">Google \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0438\u0433\u0440\u044b Android \u043d\u0430 Windows<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/591009\/\">\u041a\u0430\u043a \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0432\u043e\u0451 \u0432 CoordinatorLayout \u0438 \u043d\u0435 \u0443\u043c\u0435\u0440\u0435\u0442\u044c: \u043f\u0443\u0442\u044c Android-\u0441\u0430\u043c\u0443\u0440\u0430\u044f<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/593863\/\">Android App Shortcuts: static, dynamic, and pinned shortcuts. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/593655\/\">\u041f\u0438\u0448\u0435\u043c Android UI \u0447\u0438\u0441\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u0431<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/593601\/\">\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f Compose \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Android<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/593743\/\">Android Vitals \u2014 \u042d\u0442\u043e \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442?<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/594621\/\">\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043d\u0430 Jetpack Compose by Google<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/594383\/\">\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u0430\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0434\u043b\u044f Android Jetpack Compose? Brick<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/kak-sdelat-testovoe-zadanie-razbor-ot-senior-android-developer.html\">\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435: \u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442 Senior Android Developer<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/chrishorner.codes\/post\/debugging-dates\/\">\u0414\u0435\u043b\u043e \u043e\u0431 \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0432\u0448\u0438\u0445 \u0434\u043d\u044f\u0445<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/chris.banes.dev\/slotting-in-with-compose-ui\/\">\u041a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Compose UI<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/proandroiddev.com\/a-first-look-at-material-you-f8daea85b0d\">\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 Material You<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/getpowerplay\/s-o-l-i-d-principles-in-android-development-e31d3fa8cd48\">\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b S.O.L.I.D \u0432 Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/yanto-wendy98.medium.com\/building-android-dependency-injection-library-using-kotlin-from-scratch-part-1-5ace8d935317\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f Android \u043d\u0430 Kotlin \u0441 \u043d\u0443\u043b\u044f<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/yanto-wendy98.medium.com\/building-android-dependency-injection-library-using-kotlin-from-scratch-part-1-5ace8d935317\">\u041c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0441 TensorFlow Lite \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 Kotlin\/Java<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/adg-vit\/top-android-ui-libraries-81471af69256\">\u041b\u0443\u0447\u0448\u0438\u0435 UI-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f Android<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/heyabhi.medium.com\/my-productive-android-studio-setup-9dd3774a3b91\">\u041c\u043e\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Android Studio<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/craigrussell.io\/2021\/12\/testing-android-coroutines-using-runtest\/\">\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0440\u0443\u0442\u0438\u043d Android \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e runTest<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/betterprogramming.pub\/create-beautiful-programmatic-random-drawing-easily-with-perlin-noise-40e1eb1439e\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0443\u043c\u0430 \u041f\u0435\u0440\u043b\u0438\u043d\u0430 \u0432 Jetpack Compose<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/erselankhan.medium.com\/unit-testing-on-android-for-functions-methods-f526ceab078e\">\u042e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043d\u0430 Android<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" data-src=\"https:\/\/habrastorage.org\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/mortycomposekmm.html\">MortyComposeKMM: \u00ab\u0420\u0438\u043a \u0438 \u041c\u043e\u0440\u0442\u00bb \u043d\u0430 Kotlin Multiplatform<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" data-src=\"https:\/\/habrastorage.org\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/sketch.html\">Sketch: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f Kotlin<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" data-src=\"https:\/\/habrastorage.org\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/dadb.html\">Dadb: \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 ADB<\/a><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/708\/1c6\/34e\/7081c634ec176ab6b953d9d19e82a09a.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/708\/1c6\/34e\/7081c634ec176ab6b953d9d19e82a09a.png\"\/> <b>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/b><\/p>\n<p>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/company\/funcorp\/blog\/593231\/\">11 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 Senior QA, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f \u043f\u0440\u0438\u0448\u0451\u043b \u0437\u0430 \u0433\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/5-slozhnyh-navykov-kotorye-eksponentsialno-okupayutsya-v-programmirovanii.html\">5 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043a\u0443\u043f\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/video-mobius-2021-moscow.html\">\u0412\u0438\u0434\u0435\u043e Mobius 2021 Moscow<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/594963\/\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Flutter \u0441 \u043d\u0443\u043b\u044f \u0434\u043e \u0440\u0435\u043b\u0438\u0437\u0430: \u0418\u0434\u0435\u044f + \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/kak-testirovschiku-pobedit-rutinu-avtomatizatsiey.html\">\u041a\u0430\u043a \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/594913\/\">\u041f\u043e\u043b\u0443\u0447\u0438\u043b \u0434\u0438\u043f\u043b\u043e\u043c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0432\u043e\u0435\u0439 \u0438\u0433\u0440\u0435 \u043d\u0430 Unity<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/594069\/\">\u041e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0433\u0440\u044b \u043d\u0430 Unity, \u0447\u0430\u0441\u0442\u044c 3<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/594813\/\">\u041b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 Unity<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/podlodka-245-sovremennye-ide.html\">Podlodka #245: \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 IDE<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/replit-80.html\">$80 \u043c\u043b\u043d \u0432 \u0421\u0435\u0440\u0438\u0438 B: Replit \u2014 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/dragonboat.html\">$12 \u043c\u043b\u043d \u0432 \u0421\u0435\u0440\u0438\u0438 \u0410: Dragonboat \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/marketing-monetization\/localization\/smartling.html\">$160 \u043c\u043b\u043d: Smartling \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/flutter-2-8-igrovoy-dvizhok-i-uskorenie-raboty.html\">Flutter 2.8: \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/facebook-gaming-otkryvaet-vozmozhnost-igrat-so-strimerami.html\">Facebook Gaming \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0433\u0440\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/vc.ru\/hr\/328211-kuda-katyatsya-zarplaty-razrabotchikov-v-it\">\u041a\u0443\u0434\u0430 \u043a\u0430\u0442\u044f\u0442\u0441\u044f \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 IT?<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/vc.ru\/tech\/331225-supersila-macbook-pro-razrabotchiki-delyatsya-vpechatleniyami-ot-raboty-na-m1-pro\">\u0421\u0443\u043f\u0435\u0440\u0441\u0438\u043b\u0430 Macbook Pro: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 M1 Pro<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/ux.pub\/sovremennye-trendy-ui-dizayna-i-sposoby-ih-primeneniya-v-vashih-mobilnyh-prilozheniyah\/\">\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u043d\u0434\u044b UI-\u0434\u0438\u0437\u0430\u0439\u043d\u0430 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0430\u0448\u0438\u0445 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/blog.devgenius.io\/why-programming-is-easy-but-software-engineering-is-hard-90019fd78ed5\">\u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u0430<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/betterprogramming.pub\/dont-use-margins-for-spacing-between-components-use-gaps-1d3013ac1e80\">\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u043e\u043b\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0437\u0430\u0437\u043e\u0440\u044b<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/levelup.gitconnected.com\/flutter-state-management-2022-edition-2580d8095f0b\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0432 Flutter 2022<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/uxdesign.cc\/the-love-of-curvilinear-design-c32add2a77b9\">\u041b\u044e\u0431\u043e\u0432\u044c \u043a \u043a\u0440\u0438\u0432\u043e\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u043c\u0443 \u0434\u0438\u0437\u0430\u0439\u043d\u0443<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/medium.com\/livefront\/five-reasons-to-write-unit-tests-e1920f726b33\">5 \u043f\u0440\u0438\u0447\u0438\u043d \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/uxdesign.cc\/dark-ui-design-principles-and-best-practices-9b9061b86e1\">\u0422\u0435\u043c\u043d\u044b\u0439 \u0434\u0438\u0437\u0430\u0439\u043d UI: \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0438 \u043b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/itnext.io\/building-forms-in-flutter-is-fun-now-bdcab1f31f87\">\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u044b \u0432\u043e Flutter \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0441\u0435\u043b\u043e<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" data-src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\"\/> <a href=\"https:\/\/betterprogramming.pub\/quit-unit-testing-classes-and-use-a-behavior-oriented-approach-306a667f9a31\">\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043d\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435<\/a><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/509\/dc9\/bde\/509dc9bde69347ecbe0c21ff2973d7e7.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/509\/dc9\/bde\/509dc9bde69347ecbe0c21ff2973d7e7.jpg\" data-blurred=\"true\"\/> <b>\u0410\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430, \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433 \u0438 \u043c\u043e\u043d\u0435\u0442\u0438\u0437\u0430\u0446\u0438\u044f<\/b><\/p>\n<p>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/594443\/\">\u041f\u0443\u0448\u0438 \u0410\u0432\u0438\u0442\u043e: \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043d\u0430\u0432\u044f\u0437\u0447\u0438\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043d\u0435 \u0442\u0430\u043a\u0438\u043c \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u043c<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/company\/surfstudio\/blog\/594199\/\">\u0422\u043e\u043f-5 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/marketing-monetization\/ad-networks\/wakeapp-zanyal-mesta-v-5-kategoriyah-13-ogo-izdaniya-appsflyer-performance-index.html\">WakeApp \u0437\u0430\u043d\u044f\u043b \u043c\u0435\u0441\u0442\u0430 \u0432 5 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u0445 13-\u043e\u0433\u043e \u0438\u0437\u0434\u0430\u043d\u0438\u044f AppsFlyer Performance Index<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/appsflyer-privacy-cloud.html\">AppsFlyer \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 Intel \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0430\u0441\u0442\u043d\u043e\u0435 \u043e\u0431\u043b\u0430\u043a\u043e AppsFlyer Privacy Cloud<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/measure\/app-store-analytics\/rynok-prilozheniy-v-2021-vyrastet-na-20-do-133-mlrd.html\">\u0420\u044b\u043d\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 2021 \u0432\u044b\u0440\u0430\u0441\u0442\u0435\u0442 \u043d\u0430 20% \u0434\u043e $133 \u043c\u043b\u0440\u0434<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/semeynyy-treker-life360-prodaet-dannye-o-geolokatsii-svoih-polzovateley.html\">\u0421\u0435\u043c\u0435\u0439\u043d\u044b\u0439 \u0442\u0440\u0435\u043a\u0435\u0440 Life360 \u043f\u0440\u043e\u0434\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/analytics\/samye-populyarnye-emodzi-2021.html\">\u0421\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u044d\u043c\u043e\u0434\u0437\u0438 2021<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/measure\/app-store-analytics\/dohod-mobilnyh-skanerov-vyros-na-68-za-god.html\">\u0414\u043e\u0445\u043e\u0434 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u043a\u0430\u043d\u0435\u0440\u043e\u0432 \u0432\u044b\u0440\u043e\u0441 \u043d\u0430 68% \u0437\u0430 \u0433\u043e\u0434<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/vc.ru\/seo\/330630-6-aso-idey-sobrannyh-za-noyabr-2021\">6 ASO \u0438\u0434\u0435\u0439, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 \u043d\u043e\u044f\u0431\u0440\u044c 2021<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/vc.ru\/marketing\/331223-kakie-trendy-mobilnogo-bankinga-aktualny-v-2021-godu-glavnoe-iz-otcheta-go-banking\">\u041a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u043d\u0434\u044b \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u0430\u043d\u043a\u0438\u043d\u0433\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0432 2021 \u0433\u043e\u0434\u0443<\/a><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/853\/812\/9f5\/8538129f5e7b404a720121cb9c3814db.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/853\/812\/9f5\/8538129f5e7b404a720121cb9c3814db.jpg\" data-blurred=\"true\"\/> <b>AI, \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, IoT<\/b><\/p>\n<p>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/company\/ods\/blog\/594063\/\">\u0420\u043e\u0436\u0434\u0435\u043d\u0438\u0435 Albumentations<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/593913\/\">\u041b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u0430\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u0435\u0449\u0435\u0439<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/post\/594565\/\">\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0431\u0443\u043a\u0432 \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u0438 \u043d\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/among-us-perehodit-v-vr.html\">Among Us \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 VR<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/apps\/dream.html\">Dream \u0440\u0438\u0441\u0443\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u044b \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e<\/a><\/p>\n<p>  \u2190 <a href=\"https:\/\/habr.com\/ru\/company\/productivity_inside\/blog\/593527\/\">\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442<\/a>. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438\u043b\u0438 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u2014 \u043f\u0440\u0438\u0448\u043b\u0438\u0442\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432 <a href=\"mailto:lbogolubov@gmail.com\">\u043f\u043e\u0447\u0442\u0443<\/a>.<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/595045\/\"> https:\/\/habr.com\/ru\/articles\/595045\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u0412 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b Swift \u0438 \u0434\u0440\u0443\u0436\u0431\u0430 \u0441 Google \u0410\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0446\u0432\u0435\u0442\u0430\u043c\u0438 \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0432\u044b\u043a\u0438 \u0438 \u0433\u043e\u0434\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e\u0432\u044b\u0439 Flutter, \u0434\u043e\u0445\u043e\u0434\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u044d\u043c\u043e\u0434\u0437\u0438 2021 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/5_\/dn\/iz\/5_dnizxmnrsssalrdjano6xck20.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/5_\/dn\/iz\/5_dnizxmnrsssalrdjano6xck20.jpeg\" data-blurred=\"true\"\/><\/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-399783","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/399783","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=399783"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/399783\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=399783"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=399783"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=399783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}