{"id":379472,"date":"2024-06-24T03:00:05","date_gmt":"2024-06-24T03:00:05","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=379472"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=379472","title":{"rendered":"<span>\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e #543 (17 \u2014 23 \u0438\u044e\u043d\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 \u043d\u043e\u0432\u043e\u043c \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0435 \u0434\u0435\u043f\u043b\u043e\u0438\u043c \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 XCode \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0435 iPhone \u0438 \u0438\u0437\u0443\u0447\u0430\u0435\u043c Swift Testing, \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Zomato, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c Flutter \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 Apple Store \u0438 Google Play, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0441\u0435\u0441\u0441\u0438\u044f\u0445 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435\u0441\u044c!<\/p>\n<p>  <b>\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043d\u0430\u0448 Telegram-\u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/t.me\/apptractor\">Mobile Insights<\/a>, \u0433\u0434\u0435 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0410 \u0432 <a href=\"https:\/\/t.me\/code_insight\">IT Insights<\/a> \u2014 \u043c\u043d\u043e\u0433\u043e \u043e\u0431 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445.<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/wf\/mk\/wu\/wfmkwuvuovfaduileghxwantiae.png\" data-src=\"https:\/\/habrastorage.org\/webt\/wf\/mk\/wu\/wfmkwuvuovfaduileghxwantiae.png\"\/><a name=\"habracut\"><\/a><\/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\/companies\/timeweb\/articles\/822659\/\">\u042d\u0442\u0438 \u0430\u0439\u0444\u043e\u043d\u044b \u0435\u0449\u0451 \u0431\u0443\u0434\u0443\u0442 \u0436\u0438\u0442\u044c: \u043f\u0438\u0448\u0435\u043c \u0438 \u0434\u0435\u043f\u043b\u043e\u0438\u043c \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 XCode \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0435 iPhone<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/swift-testing-2.html\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Swift Testing<\/a> +<a href=\"https:\/\/habr.com\/ru\/articles\/823396\/\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 Swift Testing<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/823534\/\">Swift 5.10<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/ios-prilozheniya-pod-zaschitoy-apple-ili-net.html\">iOS-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 Apple! \u0418\u043b\u0438 \u043d\u0435\u0442?<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/povarennaya-kniga-swiftui-izobrazheniya-i-ikonki-chast-4.html\">\u041f\u043e\u0432\u0430\u0440\u0435\u043d\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 SwiftUI: \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0438\u043a\u043e\u043d\u043a\u0438 \u2014 \u0427\u0430\u0441\u0442\u044c 4<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/devices\/accessorysetupkit.html\">AccessorySetupKit \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/u-apple-ochen-sereznye-problemy-s-dma.html\">\u0423 Apple \u00ab\u043e\u0447\u0435\u043d\u044c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0435\u00bb \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 DMA<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/devices\/apple-otlozhila-razrabotku-vtoroy-vision-pro-radi-bolee-deshevoy-modeli.html\">Apple \u043e\u0442\u043b\u043e\u0436\u0438\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 Vision Pro \u0440\u0430\u0434\u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0448\u0435\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/apple-daet-razrabotchikam-vozmozhnost-nominirovat-svoi-prilozheniya-na-fichering-v-app-store.html\">Apple \u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u043e\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0444\u0438\u0447\u0435\u0440\u0438\u043d\u0433 \u0432 App Store<\/a><br \/>  \u2022\u00a0<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:\/\/developer.apple.com\/documentation\/Updates\/wwdc2024\">Highlights of new technologies introduced at WWDC24<\/a><br \/>  \u2022\u00a0<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.swift.org\/blog\/swiftlang-github\/\">New GitHub Organization for the Swift Project<\/a><br \/>  \u2022\u00a0<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:\/\/github.com\/swiftlang\/swift-evolution\/blob\/main\/visions\/swift-testing.md\">A New Direction for Testing in Swift<\/a><br \/>  \u2022\u00a0<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:\/\/jacobbartlett.substack.com\/p\/advanced-core-image\">Advanced Core Image<\/a><br \/>  \u2022\u00a0<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:\/\/augmentedcode.io\/2024\/06\/17\/zoom-navigation-transition-in-swiftui\/\">Zoom navigation transition in SwiftUI<\/a><br \/>  \u2022\u00a0<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:\/\/nilcoalescing.com\/blog\/EnhancedReplaceTransitionForSFSymbolsInIOS18\/\">Enhanced replace transition for SF Symbols in iOS 18<\/a><br \/>  \u2022\u00a0<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\/swmansion\/bringing-native-ai-to-your-mobile-apps-with-executorch-part-i-ios-f1562a4556e8\">Bringing native AI to your mobile apps with ExecuTorch<\/a><br \/>  \u2022\u00a0<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\/@rajster.miha\/10-cheap-desk-upgrades-every-programmer-needs-f89d92d16de4\">Create Node Modules in Swift<\/a><br \/>  \u2022\u00a0<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.polpiella.dev\/swift-translation-api\/\">Free, on-device translations with the Swift Translation API<\/a><br \/>  \u2022\u00a0<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:\/\/fatbobman.com\/en\/posts\/creating-stunning-dynamic-text-effects-with-textrender\/\">Creating Stunning Dynamic Text Effects with TextRender<\/a><br \/>  \u2022\u00a0<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.pointfree.co\/blog\/posts\/145-a-preview-of-our-upcoming-uikitnavigation-library\">A preview of our upcoming UIKitNavigation library<\/a><br \/>  \u2022\u00a0<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.createwithswift.com\/preparing-your-app-icon-for-dark-and-tinted-appearance\/\">Preparing your App Icon for dark and tinted appearance<\/a><br \/>  \u2022\u00a0<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.kodeco.com\/45333595-swift-testing-getting-started\">Swift Testing: Getting Started<\/a><br \/>  \u2022\u00a0<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\/the-tech-collective\/ios-ci-cd-with-azure-devops-automate-your-release-process-ea1f91147710\">iOS CI\/CD With Azure DevOps: Automate Your Release Process<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=nb3bRQa0iGQ\">Explore Swift performance<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=fN_TrOvWxMw\">Xcode 16 Navigation Shortcuts in 12 Minutes<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=C6fO9jsaOBg\">SwiftUI Scroll To Hide Header View \u2014 iOS 18<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=Feir9M8EZOM\">Dark mode icons in iOS 18 and Xcode 16<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=Y5QnGWOsEmQ\">Mesh Gradient &amp; Floating Tab bar (iPadOS)<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=fuJT6IacatE\">iOS 18 Control Center Widget \u2014 SwiftUI<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=gNFrpJy-jTo\">Image Carousel in SwiftUI<\/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\/tppdf.html\">TPPDF \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 PDF \u0434\u043b\u044f iOS \u0438 macOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/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\/coobjc.html\">Coobjc \u2014 \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b \u0434\u043b\u044f Objective-C \u0438 Swift<\/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\/codablewrapper.html\">CodableWrapper \u2014 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f Codable<\/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:\/\/apptractor.ru\/info\/articles\/zomato-reverse.html\">\u041a\u0430\u043a \u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Zomato, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/kts\/articles\/823574\/\">\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 Android: \u0434\u043e\u043a\u043b\u0430\u0434 \u0441 Google I\/O 2024<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-4.html\">\u041e\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c ViewModel \u0432 Android: \u00ab\u043c\u043e\u0436\u043d\u043e\u00bb \u0438 \u00ab\u043d\u0435\u043b\u044c\u0437\u044f\u00bb \u2014 \u0427\u0430\u0441\u0442\u044c 4<\/a> (<a href=\"https:\/\/apptractor.ru\/info\/articles\/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-3.html\">3<\/a>, <a href=\"https:\/\/apptractor.ru\/info\/articles\/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-2.html\">2<\/a>, <a href=\"https:\/\/apptractor.ru\/info\/articles\/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-1.html\">1<\/a>)<br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/kak-izbavitsya-ot-rekursii-ili-kak-moy-kod-popal-v-google.html\">\u041a\u0430\u043a \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438, \u0438\u043b\u0438 \u041a\u0430\u043a \u043c\u043e\u0439 \u043a\u043e\u0434 \u043f\u043e\u043f\u0430\u043b \u0432 Google<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/mikshirovanie-audiopotokov-v-android.html\">\u041c\u0438\u043a\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e\u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 Android<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/opyt-vnedreniya-kotlin-i-compose-multiplatform-v-prodakshn-reshenie.html\">\u041e\u043f\u044b\u0442 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f Kotlin \u0438 Compose Multiplatform \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d-\u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/kak-my-pobedili-tehdolg-v-proekte-android-rustore.html\">\u041a\u0430\u043a \u043c\u044b \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438 \u0442\u0435\u0445\u0434\u043e\u043b\u0433 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Android RuStore<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/android-device-streaming-na-baze-firebase-v-beta-versii.html\">Android Device Streaming \u043d\u0430 \u0431\u0430\u0437\u0435 Firebase \u0432 \u0431\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0438\u0438<\/a><br \/>  \u2022\u00a0<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\/@kerry.bisset\/modernizing-application-settings-in-kotlin-multiplatform-with-datastore-and-koin-b1156229fd57\">Modernizing Application Settings in Kotlin Multiplatform with DataStore and Koin<\/a><br \/>  \u2022\u00a0<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\/androiddevelopers\/building-jetcaster-on-all-form-factors-8e3418eeac13\">Building Jetcaster on all Form Factors<\/a><br \/>  \u2022\u00a0<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:\/\/eevis.codes\/blog\/2024-06-14\/pride-in-your-app-trying-out-graphql-on-android\/\">Pride in Your App \u2014 Trying Out GraphQL on Android<\/a><br \/>  \u2022\u00a0<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:\/\/iurysouza.dev\/kotlin-devex-is-not-great-amper-could-fix-it\/\">Kotlin DEVEX is not great, but Amper could fix it<\/a><br \/>  \u2022\u00a0<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\/@husayn.fakher\/choosing-between-sealed-classes-and-enum-classes-in-kotlin-60b71948264c\">Choosing Between Sealed Classes and Enum Classes in Kotlin<\/a><br \/>  \u2022\u00a0<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\/@michalankiersztajn\/data-mapping-in-kotlin-explained-94238b914dac\">Data Mapping In Kotlin Explained<\/a><br \/>  \u2022\u00a0<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.kodeco.com\/45028329-dive-into-object-oriented-programming-with-kotlin\">Dive into Object-Oriented Programming with Kotlin<\/a><br \/>  \u2022\u00a0<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\/@stefanoq21\/jetpack-glance-86a2fc30dd5d\">Jetpack Glance<\/a><br \/>  \u2022\u00a0<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\/creating-flexible-components-in-compose-01c57f2502ba\">Creating flexible components in Compose<\/a><br \/>  \u2022\u00a0<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\/app-architecture-deeplinks-9b2c6b8a36a3\">App Architecture: Deeplinks<\/a><br \/>  \u2022\u00a0<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\/@mohit2656422\/top-10-coroutines-questions-2024-11233141634a\">Top 10 Coroutines Questions 2024<\/a><br \/>  \u2022\u00a0<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\/what-is-faster-and-in-which-tasks-coroutines-rxjava-executor-952b1ff62506\">What is faster and in which tasks? Coroutines, RxJava, Executor?<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=tprU6FTZrHc\">AI development assistance \u2014 Android Developers Backstage<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=239XnWOLCW8\">Simplifying Kotlin Build Configuration with Amper<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=lxoKilLSJ4k\">Why we can\u2019t have nice things in Kotlin<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=tAGJ5zJXJ7w\">Kotlin Language Features in 2.0 and Beyond<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=1vFELtD3ue4\">Mastering WebRTC for Large Conference Calls on Android<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/kotlinconf.com\/talks\/\">\u0417\u0430\u043f\u0438\u0441\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 KotlinConf\u201924<\/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\/kaml.html\">Kaml \u2014 YAML \u0434\u043b\u044f kotlinx.serialization<\/a><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ma\/lx\/8h\/malx8hbgozt6lee8rmxmg96_s6a.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ma\/lx\/8h\/malx8hbgozt6lee8rmxmg96_s6a.png\"\/> <b>\u041a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430<\/b><\/p>\n<p>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/surfstudio\/articles\/822693\/\">Flutter Add-to-App: \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c Flutter \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/822547\/\">\u041e\u0442 \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438: \u043d\u0430\u0448 \u043f\u0443\u0442\u044c \u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435 \u0441\u0431\u043e\u0440\u043e\u043a Flutter<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/821671\/\">Feature-Based Flutter Architecture<\/a><br \/>  \u2022\u00a0<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:\/\/dinkomarinac.dev\/step-by-step-guide-to-dockerizing-dart-and-flutter-web-for-deployment\">Step-by-Step Guide to Dockerizing Dart and Flutter Web for Deployment<\/a><br \/>  \u2022\u00a0<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:\/\/onlyflutter.com\/how-to-mock-http-clients-in-flutter-tests\/\">How to Mock HTTP Clients in Flutter Tests<\/a><br \/>  \u2022\u00a0<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\/@sparkleotech\/flutter-best-practices-for-2024-build-better-apps-faster-3330243d119a\">Flutter Best Practices for 2024: Build Better Apps Faster<\/a><br \/>  \u2022\u00a0<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\/@santimattius\/kmp-essential-tools-and-plugins-for-kotlin-multiplatform-application-development-6ffcccdef6a8\">KMP: Essential Tools and Plugins for Kotlin Multiplatform Application Development<\/a><br \/>  \u2022\u00a0<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\/@9dan_\/introducing-solidart-a-simplified-approach-to-flutter-state-management-inspired-by-solidjs-009d6558e4d4\">Introducing Solidart: A Simplified Approach to Flutter State Management Inspired by SolidJS<\/a><br \/>  \u2022\u00a0<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\/@pomis172\/mastering-shapes-and-clipping-in-flutter-7c7caee5bcba\">Mastering Shapes and Clipping in Flutter<\/a><br \/>  \u2022\u00a0<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:\/\/onlyflutter.com\/how-to-get-the-height-and-padding-of-the-appbar-in-flutter\/\">How to Get the Height and Padding of the AppBar in Flutter<\/a><br \/>  \u2022\u00a0<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.callstack.com\/ebook\/the-ultimate-guide-to-react-native-optimization\">The Ultimate Guide to React Native Optimization (2024 edition)<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=mhos9givltA\">10 Takeaways for React Native Devs from the App.js conference<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=RSBO1C_Du2U\">What Is Kotlin Multiplatform And How Does It Work?<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=vvP5vnmzY84\">Building Your First Compose Multiplatform Hello World App<\/a><br \/>  \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=mhos9givltA\">10 Takeaways for React Native Devs from the App.js conference<\/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\/connectivity.html\">Connectivity \u2014 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f Kotlin Multiplatform<\/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\/companies\/alfa\/articles\/821055\/\">WebView: \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u0435\u043b\u0438\u0437, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0432\u044c\u044e \u0432 \u0441\u0442\u043e\u0440\u0430\u0445, \u0430 \u043c\u0438\u043d\u0443\u0441\u044b \u0435\u0441\u0442\u044c?<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/822609\/\">\u041a\u0430\u043a \u0432 2024 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 Apple Store \u0438 Google Play<\/a><br \/>  \u2022 <a href=\"https:\/\/habr.com\/ru\/companies\/sbermarket\/articles\/821705\/\">\u041b\u0435\u0433\u043a\u0438\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u0440\u0443\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c. \u041a\u0430\u043a \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u043c\u0438<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/ustalost-senior-razrabotchikov.html\">\u0423\u0441\u0442\u0430\u043b\u043e\u0441\u0442\u044c Senior-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/kak-reshat-zadachi-na-leetcode.html\">\u041a\u0430\u043a \u0440\u0435\u0448\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430 Leetcode<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/ii-v-rabote-kak-uprostit-zhizn-mobilnogo-razrabotchika.html\">\u0418\u0418 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435: \u043a\u0430\u043a \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0436\u0438\u0437\u043d\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/dali-mentorit-dzhuna-vse-propalo.html\">\u0414\u0430\u043b\u0438 \u043c\u0435\u043d\u0442\u043e\u0440\u0438\u0442\u044c \u0434\u0436\u0443\u043d\u0430\u2026 \u0412\u0441\u0435 \u043f\u0440\u043e\u043f\u0430\u043b\u043e?<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/kak-ustroen-setevoy-kod-v-igrah.html\">\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043e\u0434 \u0432 \u0438\u0433\u0440\u0430\u0445<\/a><br \/>  \u2022\u00a0<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:\/\/tuple.app\/pair-programming-guide\/antipatterns\">Pair Programming Antipatterns<\/a><br \/>  \u2022\u00a0<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.amazingcto.com\/mocking-is-an-antipattern-how-to-test-without-mocking\/\">Mocking is an Anti-Pattern<\/a><br \/>  \u2022\u00a0<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:\/\/technicallythinking.substack.com\/p\/how-sms-fraud-works-and-how-to-guard-against-it\">How SMS Fraud Works and How to Guard Against It<\/a><br \/>  \u2022\u00a0<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:\/\/gaultier.github.io\/blog\/write_a_video_game_from_scratch_like_1987.html\">Let\u2019s write a video game from scratch like it\u2019s 1987<\/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:\/\/apptractor.ru\/info\/articles\/wwdc-24-chto-novogo-vo-vstroennyh-pokupkah.html\">WWDC 24: \u0447\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043a\u0443\u043f\u043a\u0430\u0445<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/measure\/user-analytics\/chto-znachit-horoshaya-sessiya-v-prilozhenii-razbiraemsya-v-detalyah.html\">\u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u2014 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u044f\u0445<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/apps\/butterflies.html\">Butterflies \u2014 \u043d\u043e\u0432\u0430\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0434\u043b\u044f \u0418\u0418 \u0438 \u043b\u044e\u0434\u0435\u0439<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/measure\/app-store-analytics\/issledovanie-prilozheniy-kotorye-mogut-stat-nenuzhnymi-v-ios-18.html\">\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u0430\u0442\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u0432 iOS 18<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/X5Tech\/articles\/823078\/\">Varioqub: \u0437\u0430 Mann-Whitney \u0437\u0430\u043c\u043e\u043b\u0432\u0438\u0442\u0435 \u0441\u043b\u043e\u0432\u043e<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/measure\/app-store-analytics\/top-bystrorastuschih-prilozheniy-v-rossii-v-iyune.html\">\u0422\u043e\u043f \u0431\u044b\u0441\u0442\u0440\u043e\u0440\u0430\u0441\u0442\u0443\u0449\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0432 \u0438\u044e\u043d\u0435<\/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\/articles\/823584\/\">\u042f \u0442\u0435\u0431\u044f \u0441 \u0432\u0435\u0440\u0442\u0443\u0445\u0438 \u0441\u043b\u043e\u043c\u0430\u044e, \u0435\u0441\u043b\u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0437\u0430\u0433\u043e\u0432\u043e\u0440\u0438\u0448\u044c \u043e\u0431 \u0418\u0418<\/a><br \/>  \u2022 <a href=\"https:\/\/habr.com\/ru\/companies\/bothub\/articles\/823580\/\">\u0427\u0442\u043e \u0443\u043c\u0435\u0435\u0442 \u043d\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c Claude 3.5 Sonnet?<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/823660\/\">\u041a\u0430\u0436\u0435\u0442\u0441\u044f, LLM \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u043c\u0435\u043d\u044f<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/jetbrains-integriruet-gemini-v-ai-assistant.html\">JetBrains \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442 Gemini \u0432 AI Assistant<\/a><br \/>  \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/devices\/printer-pechataet-kartinki-iz-blokov-lego.html\">\u041f\u0440\u0438\u043d\u0442\u0435\u0440 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438\u0437 \u0431\u043b\u043e\u043a\u043e\u0432 Lego<\/a><\/p>\n<p>  \u2190 <a href=\"https:\/\/habr.com\/ru\/companies\/productivity_inside\/articles\/822195\/\">\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\/823850\/\"> https:\/\/habr.com\/ru\/articles\/823850\/<\/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 \u043d\u043e\u0432\u043e\u043c \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0435 \u0434\u0435\u043f\u043b\u043e\u0438\u043c \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0437 XCode \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0435 iPhone \u0438 \u0438\u0437\u0443\u0447\u0430\u0435\u043c Swift Testing, \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Zomato, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c Flutter \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 Apple Store \u0438 Google Play, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0441\u0435\u0441\u0441\u0438\u044f\u0445 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435\u0441\u044c!<\/p>\n<p>  <b>\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043d\u0430\u0448 Telegram-\u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/t.me\/apptractor\">Mobile Insights<\/a>, \u0433\u0434\u0435 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0410 \u0432 <a href=\"https:\/\/t.me\/code_insight\">IT Insights<\/a> \u2014 \u043c\u043d\u043e\u0433\u043e \u043e\u0431 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445.<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/wf\/mk\/wu\/wfmkwuvuovfaduileghxwantiae.png\" data-src=\"https:\/\/habrastorage.org\/webt\/wf\/mk\/wu\/wfmkwuvuovfaduileghxwantiae.png\"\/><\/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-379472","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/379472","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=379472"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/379472\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=379472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=379472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=379472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}