{"id":457567,"date":"2025-04-27T15:00:09","date_gmt":"2025-04-27T15:00:09","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=457567"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=457567","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 #585 (21 \u2014 27 \u0430\u043f\u0440\u0435\u043b\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 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u043b\u0438\u043d\u0442\u0438\u043d\u0433\u0430 \u0438 CI\/CD, \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u00ab\u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 20 \u043c\u0438\u043d\u0443\u0442\u00bb \u0441 legacy-\u043a\u043e\u0434\u043e\u043c \u0438 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0439\u0431-\u043a\u043e\u0434\u0438\u043d\u0433\u0430, SwiftUI Instruments, \u0441\u043a\u0440\u044b\u0442\u043d\u044b\u0435 \u0431\u043e\u0442\u043d\u0435\u0442\u044b, \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Spotify \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0417\u0430\u0445\u043e\u0434\u0438\u0442\u0435!<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ab\/o5\/2q\/abo52qhqg8dx9p6w9yawu35kjbq.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ab\/o5\/2q\/abo52qhqg8dx9p6w9yawu35kjbq.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ab\/o5\/2q\/abo52qhqg8dx9p6w9yawu35kjbq.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><a name=\"habracut\"><\/a><\/p>\n<p> <b>\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043c\u043e\u0439 Telegram-\u043a\u0430\u043d\u0430\u043b <a href=\"https:\/\/t.me\/apptractor\" rel=\"nofollow noopener noreferrer\">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.<\/b><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/f19\/30a\/c49\/f1930ac4945596eb9707bc7a01bc5bdc.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/post_images\/f19\/30a\/c49\/f1930ac4945596eb9707bc7a01bc5bdc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/f19\/30a\/c49\/f1930ac4945596eb9707bc7a01bc5bdc.png 781w\" loading=\"lazy\" decode=\"async\"\/> <b>iOS<\/b><\/p>\n<p> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/arhitekturnyy-linting-dlya-swift-chast-3.html\" rel=\"nofollow noopener noreferrer\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u043b\u0438\u043d\u0442\u0438\u043d\u0433 \u0434\u043b\u044f Swift: \u0447\u0430\u0441\u0442\u044c 3<\/a> + <a href=\"https:\/\/apptractor.ru\/info\/articles\/arhitekturnyy-linting-dlya-swift-chast-2.html\" rel=\"nofollow noopener noreferrer\">\u0447\u0430\u0441\u0442\u044c 2<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/surfstudio\/articles\/903264\/\">\u041e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e SwiftUI Instruments<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/swift-measurement.html\" rel=\"nofollow noopener noreferrer\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Measurement \u0432 Swift<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/rabota-v-booking-zhizn-v-amsterdame-avtogonki-v-evrope.html\" rel=\"nofollow noopener noreferrer\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0432 Booking, \u0436\u0438\u0437\u043d\u044c \u0432 \u0410\u043c\u0441\u0442\u0435\u0440\u0434\u0430\u043c\u0435, \u0430\u0432\u0442\u043e\u0433\u043e\u043d\u043a\u0438 \u0432 \u0415\u0432\u0440\u043e\u043f\u0435<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/mnogopotochnost-s-nulya-na-primere-pitstsy.html\" rel=\"nofollow noopener noreferrer\">\u041c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0438\u0446\u0446\u044b<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/organizatsiya-i-podderzhka-nativnyh-ui-testov-v-ios.html\" rel=\"nofollow noopener noreferrer\">\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 UI-\u0442\u0435\u0441\u0442\u043e\u0432 \u0432 iOS<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/captainswiftui.substack.com\/p\/is-there-a-better-asyncbutton\" rel=\"nofollow noopener noreferrer\">Is There A Better AsyncButton?<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/tanaschita.com\/swiftui-navigation-path-with-tabview\/\" rel=\"nofollow noopener noreferrer\">Using NavigationPath with TabView in SwiftUI<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/@darrenthiores\/automatic-dependency-injection-di-in-swift-6-to-make-your-code-clean-4e0160c049ce\" rel=\"nofollow noopener noreferrer\">Automatic Dependency Injection (DI) in Swift 6 to make your code clean<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.avanderlee.com\/concurrency\/swift-6-2-concurrency-changes\/\" rel=\"nofollow noopener noreferrer\">Swift 6.2: A first look at how it\u2019s changing Concurrency<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.pointfree.co\/blog\/posts\/170-a-fast-lightweight-replacement-for-swiftdata\" rel=\"nofollow noopener noreferrer\">A fast, lightweight replacement for SwiftData<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.devfright.com\/how-to-build-a-native-qr-code-generator-for-iphone-with-swiftui\/\" rel=\"nofollow noopener noreferrer\">How to Build a Native QR Code Generator for iPhone with SwiftUI<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.createwithswift.com\/reading-data-from-healthkit-in-a-swiftui-app\/\" rel=\"nofollow noopener noreferrer\">Reading data from HealthKit in a SwiftUI app<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/swiftdevjournal.com\/posts\/swiftui-instruments\/\" rel=\"nofollow noopener noreferrer\">See How Many Times Your SwiftUI Views Redraw Using Instruments<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/levelup.gitconnected.com\/swiftui-inline-editable-table-c2dd0ba26754\" rel=\"nofollow noopener noreferrer\">SwiftUI: Inline Editable Table<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/fatbobman.com\/en\/posts\/building-typesafe-highperformance-swiftdata-core-data-models\/\" rel=\"nofollow noopener noreferrer\">Building Type\u2011Safe, High\u2011Performance SwiftData \/ Core Data Models<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.donnywals.com\/using-singletons-in-swift-6\/\" rel=\"nofollow noopener noreferrer\">Using singletons in Swift 6<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/tanaschita.com\/swiftui-navigation-persist-state\/\" rel=\"nofollow noopener noreferrer\">How to persist navigation state in SwiftUI<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/manu.show\/2025-04-24-ep84-navigation-router\/\" rel=\"nofollow noopener noreferrer\">NavigationRouter: A simple stack-based navigation system for SwiftUI<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.devfright.com\/how-to-add-tap-to-copy-with-uipasteboard-in-swiftui\/\" rel=\"nofollow noopener noreferrer\">How to Add Tap to Copy with UIPasteboard in SwiftUI<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/@tthemolex\/github-actions-for-ios-project-afded180a604\" rel=\"nofollow noopener noreferrer\">Github Actions for iOS project<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=pA_8cDvabEY\" rel=\"nofollow noopener noreferrer\">SwiftUI Inline Toasts \u2014 Xcode 16<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=NkLdOwIoeaI\" rel=\"nofollow noopener noreferrer\">Special Effects with SwiftUI Text<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=ZmdG0T_58wg\" rel=\"nofollow noopener noreferrer\">Mastering SwiftUI Transitions \u2013 Custom &amp; Built-in Animations<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=U2kBmasBSTA\" rel=\"nofollow noopener noreferrer\">Build a Custom Location Picker in SwiftUI: Search &amp; Map Interactions<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=71i_snKateI\" rel=\"nofollow noopener noreferrer\">SwiftUI \u2014 Auto \/ Manual Scrolling Infinite Carousel in 4 Minutes \u2014 Xcode 16<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/playlist?list=PLCl5NM4qD3u_Azg7gKw5CK_DqSLeb4QMY\" rel=\"nofollow noopener noreferrer\">Videos from try! Swift Tokyo 2025<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/aainfographics.html\" rel=\"nofollow noopener noreferrer\">AAInfographics \u2014 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/snapshottestingmacros.html\" rel=\"nofollow noopener noreferrer\">SnapshotTestingMacros \u2014 \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043d\u0435\u043f\u0448\u043e\u0442\u043e\u0432 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/a><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/e1a\/3cf\/2a8\/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/post_images\/e1a\/3cf\/2a8\/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/e1a\/3cf\/2a8\/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png 781w\" loading=\"lazy\" decode=\"async\"\/> <b>Android<\/b><\/p>\n<p> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/vk\/articles\/903528\/\">CI\/CD \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435: \u043a\u0430\u043a \u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0443 SampleApp \u0434\u043b\u044f SDK RuStore<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/yadro\/articles\/903316\/\">\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c AOSP-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00ab\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b\u00bb, \u0438\u043b\u0438 \u0427\u0435\u043c \u043e\u0431\u0435\u0440\u043d\u0443\u043b\u043e\u0441\u044c \u00ab\u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 20 \u043c\u0438\u043d\u0443\u0442\u00bb \u0441 legacy-\u043a\u043e\u0434\u043e\u043c<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/904648\/\">\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e LLM (AI) \u0432 Android Studio<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/904258\/\">Content Based Theme \u0432 Android \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/razrabotka-sdk.html\" rel=\"nofollow noopener noreferrer\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 SDK<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/prozharka-na-kod-revyu-ot-yandeksa.html\" rel=\"nofollow noopener noreferrer\">\u041f\u0440\u043e\u0436\u0430\u0440\u043a\u0430 \u043d\u0430 \u043a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/alisa-otkroy-bagazhnik.html\" rel=\"nofollow noopener noreferrer\">\u0410\u043b\u0438\u0441\u0430, \u043e\u0442\u043a\u0440\u043e\u0439 \u0431\u0430\u0433\u0430\u0436\u043d\u0438\u043a!<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/zachem-nuzhen-virtualnyy-displey-v-android.html\" rel=\"nofollow noopener noreferrer\">\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0432 Android<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/nahodim-i-uvolnyaem-low-performerov.html\" rel=\"nofollow noopener noreferrer\">\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0438 \u0443\u0432\u043e\u043b\u044c\u043d\u044f\u0435\u043c low-\u043f\u0435\u0440\u0444\u043e\u0440\u043c\u0435\u0440\u043e\u0432<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/events\/opublikovana-programma-i-o-2025.html\" rel=\"nofollow noopener noreferrer\">\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 I\/O 2025<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/joebirch.co\/android\/exploring-jetpack-compose-dockedsearchbar\/\" rel=\"nofollow noopener noreferrer\">Exploring Jetpack Compose: DockedSearchBar<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/blog.kotlin-academy.com\/maps-in-jetpack-compose-a-beginners-guide-a7f01e1c3ff4\" rel=\"nofollow noopener noreferrer\">Maps in Jetpack Compose \u2014 A beginner\u2019s guide<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/blog.jetbrains.com\/idea\/2025\/04\/the-story-behind-k2-mode-and-how-it-works\/\" rel=\"nofollow noopener noreferrer\">The Story Behind K2 Mode and How It Works<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/proandroiddev.com\/configuring-multiple-sqlite-databases-in-android-with-sqldelight-2-79fa2769b522\" rel=\"nofollow noopener noreferrer\">Configuring multiple SQLite databases in Android with SQLDelight 2<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/proandroiddev.com\/lint-be-gone-speed-up-your-android-release-apk-builds-aafb7cf430a7\" rel=\"nofollow noopener noreferrer\">Lint Be Gone: Speed Up Your Android Release APK Builds<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.spght.dev\/articles\/21-04-2025\/crystal-clear-certs\" rel=\"nofollow noopener noreferrer\">How to have \u2018Crystal Clear Certificates\u2019: Securing your Android Apps using Certificate Transparency<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/carrion.dev\/en\/posts\/sealed-classes-domain-modeling\/\" rel=\"nofollow noopener noreferrer\">Leveraging Sealed Classes and Interfaces for Better Domain Modeling<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/proandroiddev.com\/kotlin-coroutines-the-real-difference-between-job-cancel-and-scope-cancel-05e1d9dd5245\" rel=\"nofollow noopener noreferrer\">Kotlin Coroutines: The real difference between Job.cancel() and Scope.cancel()<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/proandroiddev.com\/understanding-execution-order-in-jetpack-compose-disposableeffect-launchedeffect-and-composables-d2d0b75b7ec8\" rel=\"nofollow noopener noreferrer\">Understanding Execution Order in Jetpack Compose: DisposableEffect, LaunchedEffect, and Composables<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/@danimahardhika\/collapsing-appbar-with-scroll-effect-in-jetpack-compose-04f5b82f386b\" rel=\"nofollow noopener noreferrer\">Collapsing AppBar with Scroll Effect in Jetpack Compose<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/proandroiddev.com\/understanding-kotlin-generics-through-a-fantasy-story-6143b49e0c4d\" rel=\"nofollow noopener noreferrer\">Kotlin Generics Explained: Once Upon a Type\u2026<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/proandroiddev.com\/how-i-use-internal-testing-to-ship-production-ready-android-apps-1faab5eb53fb\" rel=\"nofollow noopener noreferrer\">How I Use Internal Testing to Ship Production-Ready Android Apps<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/androiddevelopers\/how-dropbox-leverages-testing-to-maintain-high-level-of-trust-at-scale-b7b1bdf6161e\" rel=\"nofollow noopener noreferrer\">How Dropbox leverages testing to maintain high level of trust at scale<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/android-developers.googleblog.com\/2025\/04\/whats-new-in-jetpack-compose-april-25.html\" rel=\"nofollow noopener noreferrer\">What\u2019s new in the Jetpack Compose April \u201925 release<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/proandroiddev.com\/at-the-mountains-of-madness-with-jetpack-compose-09d3625597ad\" rel=\"nofollow noopener noreferrer\">At the Mountains of Madness with Jetpack Compose<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/proandroiddev\/write-testable-time-dependent-coroutine-code-in-kotlin-avoid-system-currenttimemillis-fb9b7eb1ddf9\" rel=\"nofollow noopener noreferrer\">Write Testable Time-Dependent Coroutine Code in Kotlin: Avoid System.currentTimeMillis<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/@mohit2656422\/top-10-live-data-questions-2025-3fb38ad193be\" rel=\"nofollow noopener noreferrer\">TOP 10 Live Data Questions (2025)<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=uzy1pWzWPfc\" rel=\"nofollow noopener noreferrer\">Developing for the SDK Runtime<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=yZydIvw078s\" rel=\"nofollow noopener noreferrer\">Now in Android: 115 \u2014 Gemini in Android Studio, Enhancing Safety and Security, and more<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=5W6FI3zKQ3k\" rel=\"nofollow noopener noreferrer\">The 3 Biggest Coding Mistakes I Made In My Android Projects<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=mKwPoGvkjSw\" rel=\"nofollow noopener noreferrer\">Full Guide to Testing APIs on Android &amp; KMP With Ktor MockEngine<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=54__1gK2K4U\" rel=\"nofollow noopener noreferrer\">How Junie Helps You Code Faster with Kotlin in IntelliJ IDEA<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=4cUQR7-YV5U\" rel=\"nofollow noopener noreferrer\">Double Dispatch: Prelude to the Visitor Pattern<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=q9XhXraYsek\" rel=\"nofollow noopener noreferrer\">What if your IDE could talk back\u2026 and help? Junie by JetBrains is here.<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=-B5EubBu4Vw\" rel=\"nofollow noopener noreferrer\">Why did my build fail? Using AI to troubleshoot faster with Failure Summaries<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/soundremote.html\" rel=\"nofollow noopener noreferrer\">SoundRemote \u2014 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0443\u0437\u044b\u043a\u0438 \u0441 PC \u043d\u0430 Android<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/astracrypt.html\" rel=\"nofollow noopener noreferrer\">AstraCrypt \u2014 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/files\/967\/16b\/cb9\/96716bcb926741e79bb1c284a88083ca.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/apptractor.ru\/info\/github\/learn-kotlin-flow-2.html\" rel=\"nofollow noopener noreferrer\">Learn Kotlin Flow \u2014 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kotlin Flow<\/a><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ma\/lx\/8h\/malx8hbgozt6lee8rmxmg96_s6a.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ma\/lx\/8h\/malx8hbgozt6lee8rmxmg96_s6a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ma\/lx\/8h\/malx8hbgozt6lee8rmxmg96_s6a.png 781w\" loading=\"lazy\" decode=\"async\"\/> <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\/articles\/903568\/\">\u041b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f Flutter \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/ayt-technologies\/flutter-understanding-inheritedwidget-0b63bb5426fc\" rel=\"nofollow noopener noreferrer\">Flutter | Understanding InheritedWidget<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/jedipixels.dev\/flutter-hero-widget-and-pageroutebuilder-animation\/\" rel=\"nofollow noopener noreferrer\">Flutter Hero Widget and PageRouteBuilder Animation<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/devharshmittal.medium.com\/stop-using-mediaquery-for-responsiveness-in-flutter-75a5f62218a4\" rel=\"nofollow noopener noreferrer\">Stop Using MediaQuery for Responsiveness in Flutter<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.syncfusion.com\/blogs\/post\/flutter-calendar-student-tutor-booking-app\" rel=\"nofollow noopener noreferrer\">Create a Student\u2013Tutor Booking App with Flutter Calendar<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/@sbezhuk\/testing-business-logic-with-either-in-dart-why-you-should-try-it-127e8ac88616\" rel=\"nofollow noopener noreferrer\">Testing Business Logic with Either in Dart: Why You Should Try It<\/a><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/708\/1c6\/34e\/7081c634ec176ab6b953d9d19e82a09a.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/post_images\/708\/1c6\/34e\/7081c634ec176ab6b953d9d19e82a09a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/708\/1c6\/34e\/7081c634ec176ab6b953d9d19e82a09a.png 781w\" loading=\"lazy\" decode=\"async\"\/> <b>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/b><\/p>\n<p> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/vayb-koding-ne-opravdanie-dlya-nekachestvennoy-raboty.html\" rel=\"nofollow noopener noreferrer\">\u0412\u0430\u0439\u0431 \u043a\u043e\u0434\u0438\u043d\u0433 \u2014 \u043d\u0435 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0435\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/selectel\/articles\/903458\/\">\u0421\u0430\u043c\u043e\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u044f \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0442\u0440\u0430 \u0438 \u043f\u043e\u0434\u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/spotify-release-1.html\" rel=\"nofollow noopener noreferrer\">\u0417\u0430\u043a\u0443\u043b\u0438\u0441\u043d\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a Spotify \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f: \u0447\u0430\u0441\u0442\u044c 1<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/903450\/\">\u041e\u0445 \u0443\u0436 \u044d\u0442\u0438 \u0441\u043a\u0440\u044b\u0442\u043d\u044b\u0435 \u0431\u043e\u0442\u043d\u0435\u0442\u044b<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/902552\/\">Optional vs Nullable \u043d\u0430 \u0441\u0442\u044b\u043a\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/cleverpumpkin\/articles\/903544\/\">\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f JavaScript \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u0430: \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/903212\/\">\u0421\u0434\u0435\u043b\u0430\u0439 \u0443\u0434\u043e\u0431\u043d\u043e: \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 UI\/UX-\u043a\u0435\u0439\u0441\u043e\u0432 \u0438\u0437 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0438 \u043d\u0435\u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 (#13)<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/friflex\/articles\/904448\/\">Offline First \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. CRUD \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/razrabotchik-i-startap-rabotat-osnovat-izbegat.html\" rel=\"nofollow noopener noreferrer\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438 \u0441\u0442\u0430\u0440\u0442\u0430\u043f: \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c | \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u044c | \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c?<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/chego-boitsya-tvoy-timlid.html\" rel=\"nofollow noopener noreferrer\">\u0427\u0435\u0433\u043e \u0431\u043e\u0438\u0442\u0441\u044f \u0442\u0432\u043e\u0439 \u0442\u0438\u043c\u043b\u0438\u0434?<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/media\/kak-prognoziruyut-pogodu-v-2025-godu-ml-fortran-i-big-data.html\" rel=\"nofollow noopener noreferrer\">\u041a\u0430\u043a \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0433\u043e\u0434\u0443 \u0432 2025 \u0433\u043e\u0434\u0443 \u2014 ML, Fortran \u0438 Big Data<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/measure\/crash-analytics-bug-tracking\/tracer-stal-dostupen-dlya-os-avrora.html\" rel=\"nofollow noopener noreferrer\">Tracer \u0441\u0442\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u041e\u0421 \u0410\u0432\u0440\u043e\u0440\u0430<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/supabase-poluchila-esche-200-mln.html\" rel=\"nofollow noopener noreferrer\">Supabase \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0435\u0449\u0435 $200 \u043c\u043b\u043d<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/monotonic-stack.html\" rel=\"nofollow noopener noreferrer\">\u041c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u044b\u0439 \u0441\u0442\u0435\u043a: \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.anthropic.com\/engineering\/claude-code-best-practices\" rel=\"nofollow noopener noreferrer\">Claude Code: Best practices for agentic coding<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.16elt.com\/2025\/04\/19\/lessons-from-distributed-systems\/\" rel=\"nofollow noopener noreferrer\">Lessons from building and maintaining distributed systems at scale<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/medium.com\/design-bootcamp\/how-i-created-ui-with-chatgpts-new-image-generator-4o-d52389a5833e\" rel=\"nofollow noopener noreferrer\">How I created UI with ChatGPT\u2019s new image generator (4o)<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/earthly.dev\/blog\/lunar-launch\/\" rel=\"nofollow noopener noreferrer\">We Interviewed 100 Eng Teams. The Problem With Modern Engineering Isn\u2019t Speed. It\u2019s Chaos.<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/maxim-gorin.medium.com\/stop-writing-if-else-trees-use-the-state-pattern-instead-1fe9ff39a39c\" rel=\"nofollow noopener noreferrer\">Stop Writing If-Else Trees: Use the State Pattern Instead<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 780w,&#10;       https:\/\/habrastorage.org\/files\/377\/ae0\/333\/377ae0333d0f4b7b97307c9eea5ee21a.gif 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/koomen.dev\/essays\/horseless-carriages\/\" rel=\"nofollow noopener noreferrer\">AI Horseless Carriages<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=iyp17MipC-Q\" rel=\"nofollow noopener noreferrer\">How to Embed HTML5 Games in Apps &amp; Grow App Revenue<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=biveB0gOlak\" rel=\"nofollow noopener noreferrer\">Code Your Own Llama 4 LLM from Scratch \u2013 Full Course<\/a><br \/> \u2022 <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/gt\/u1\/ia\/gtu1iaz0-ajkbqpeq8n6dmql4zq.png 781w\" loading=\"lazy\" decode=\"async\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=PcbuKRNtCUc\" rel=\"nofollow noopener noreferrer\">Essential Machine Learning and AI Concepts Animated<\/a><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/509\/dc9\/bde\/509dc9bde69347ecbe0c21ff2973d7e7.jpg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/post_images\/509\/dc9\/bde\/509dc9bde69347ecbe0c21ff2973d7e7.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/509\/dc9\/bde\/509dc9bde69347ecbe0c21ff2973d7e7.jpg 781w\" loading=\"lazy\" decode=\"async\"\/> <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\/companies\/ruvds\/articles\/902742\/\">\u0412\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u0433\u0434\u0435 \u0442\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0448\u044c\u0441\u044f \u2014 \u043c\u043e\u0436\u0435\u0448\u044c \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u0430\u043c<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/openai-mozhet-kupit-chrome.html\" rel=\"nofollow noopener noreferrer\">OpenAI \u043c\u043e\u0436\u0435\u0442 \u043a\u0443\u043f\u0438\u0442\u044c Chrome<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/articles\/game-on-telegram-kak-messendzher-prevraschaetsya-v-igrovuyu-platformu-buduschego.html\" rel=\"nofollow noopener noreferrer\">Game On, Telegram: \u043a\u0430\u043a \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/904226\/\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 RuStore \u0438 \u043a\u0430\u043a \u0420\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440 \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u043b \u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/marketing-monetization\/marketologi-v-mobayle-aleksey-fomin-head-of-performance-marketing-burger-king.html\" rel=\"nofollow noopener noreferrer\">\u041c\u0430\u0440\u043a\u0435\u0442\u043e\u043b\u043e\u0433\u0438 \u0432 \u043c\u043e\u0431\u0430\u0439\u043b\u0435: \u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u0424\u043e\u043c\u0438\u043d (Head of Performance Marketing, \u0411\u0443\u0440\u0433\u0435\u0440 \u041a\u0438\u043d\u0433)<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/articles\/903820\/\">\u0411\u0430\u0439\u0435\u0441\u043e\u0432\u0441\u043a\u0438\u0435 \u0410\/\u0411-\u0442\u0435\u0441\u0442\u044b: \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/chess-com-dostig-200-mln-polzovateley.html\" rel=\"nofollow noopener noreferrer\">Chess.com \u0434\u043e\u0441\u0442\u0438\u0433 200 \u043c\u043b\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/evropeyskaya-komissiya-oshtrafovala-apple-na-500-mln-za-narushenie-dma.html\" rel=\"nofollow noopener noreferrer\">\u0415\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u0430\u044f \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044f \u043e\u0448\u0442\u0440\u0430\u0444\u043e\u0432\u0430\u043b\u0430 Apple \u043d\u0430 $500 \u043c\u043b\u043d \u0437\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 DMA<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/apps\/edits.html\" rel=\"nofollow noopener noreferrer\">I******* \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043a\u043b\u043e\u043d CapCut \u2014 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0432\u0438\u0434\u0435\u043e Edits<\/a><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/853\/812\/9f5\/8538129f5e7b404a720121cb9c3814db.jpg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/post_images\/853\/812\/9f5\/8538129f5e7b404a720121cb9c3814db.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/853\/812\/9f5\/8538129f5e7b404a720121cb9c3814db.jpg 781w\" loading=\"lazy\" decode=\"async\"\/> <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\/903220\/\">\u041c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 35 \u043b\u0435\u0442, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u0448\u043b\u0430 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/ru_mts\/articles\/902670\/\">\u041f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432: \u043a\u0430\u043a \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/wirenboard\/articles\/904192\/\">\u0427\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0443 Wiren Board: \u043c\u043e\u0434\u0443\u043b\u044c DALI, \u0434\u0430\u0442\u0447\u0438\u043a \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0432 WB-MSW, \u043d\u043e\u0432\u043e\u0435 \u0440\u0435\u043b\u0435 \u0432 \u043f\u043e\u0434\u0440\u043e\u0437\u0435\u0442\u043d\u0438\u043a<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/avito\/articles\/903716\/\">\u041a\u0430\u043a \u043c\u044b \u0432 \u0410\u0432\u0438\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439 \u043f\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044e<\/a><br \/> \u2022\u00a0<a href=\"https:\/\/apptractor.ru\/info\/news\/cluely-poluchil-5-3-mln-na-sozdanie-ii-platformy-spisyvaniya-dlya-vsego.html\" rel=\"nofollow noopener noreferrer\">Cluely \u043f\u043e\u043b\u0443\u0447\u0438\u043b $5.3 \u043c\u043b\u043d \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0418\u0418-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00ab\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e\u00bb<\/a><\/p>\n<p> \u2190 <a href=\"https:\/\/habr.com\/ru\/articles\/902526\/\">\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\/904816\/\"> https:\/\/habr.com\/ru\/articles\/904816\/<\/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 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u043b\u0438\u043d\u0442\u0438\u043d\u0433\u0430 \u0438 CI\/CD, \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u00ab\u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 20 \u043c\u0438\u043d\u0443\u0442\u00bb \u0441 legacy-\u043a\u043e\u0434\u043e\u043c \u0438 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0439\u0431-\u043a\u043e\u0434\u0438\u043d\u0433\u0430, SwiftUI Instruments, \u0441\u043a\u0440\u044b\u0442\u043d\u044b\u0435 \u0431\u043e\u0442\u043d\u0435\u0442\u044b, \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Spotify \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0417\u0430\u0445\u043e\u0434\u0438\u0442\u0435!<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ab\/o5\/2q\/abo52qhqg8dx9p6w9yawu35kjbq.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ab\/o5\/2q\/abo52qhqg8dx9p6w9yawu35kjbq.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ab\/o5\/2q\/abo52qhqg8dx9p6w9yawu35kjbq.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/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-457567","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/457567","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=457567"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/457567\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=457567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=457567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=457567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}