iOS
• Swift: ссылочные типы и циклы сохранения, weak и unowned
• Step by step: интегрируем интерактивные 2D/3D-объекты в iOS-приложение
• Using reordering and selection at the same time in UITableView
• ViewModifiers: Image Picker
• How to make a completionHandler much safer
• edabdallamo/building-a-swiftui-video-annotation-app-c39ed93d983d">Building a SwiftUI Video Annotation App
#iOS
Google Play запустил функцию обновления старых версий приложений
Google представил новый автоматический инструмент, который предлагает пользователям обновиться.
1. Инструмент Play теперь сам может предложить пользователю, использующему определенную старую версию вашего приложения, обновить его. Срабатывает при каждом холодном старте. Ничего встраивать в приложение не надо.
2. Работает только с App Bundle.
3. Подсказку можно показывать по версии приложения, по стране/региону, версии Android.
4. Работает все через Google Play Console или через Play Developer API, и в скором времени функция будет расширена, чтобы позволить вам нацеливаться на несколько версий приложений одновременно.
И что: даешь такое в App Store!
Android
• Как мы в Fix Price запустили PWA-приложение для Android
• Лучшие практики RuStore: правила хорошего Code Review для Android
• ViewModelStoreOwner in Android
• Android Automotive OS 14 on a Raspberry Pi 4
• Custom Kotlin delegates
• AhmedMhesham/my-methodology-in-android-app-pentesting-from-root-detection-to-ato-scenario-adf6b9984f6d">My Methodology in Android App Pentesting: From Root Detection to ATO Scenario
#android
⚡️Яндекс, Озон, Авито и сотни других сайтов работают с перебоями из-за проблем в доменной зоне RU. Сайты не открываются как в России, так и в других странах — это крупнейший сбой в Рунете за последние месяцы.
👍 — меня не задело
👎 — всё сломалось
10 нестандартных уроков, полученных за 10 лет работы инженером-программистом
За последние десять лет я многому научился, но именно эти десять уроков оказали наибольшее влияние на мой путь. Надеюсь, они пригодятся вам для построения сильной, устойчивой и полноценной карьеры инженера-программиста.
1. Выбирайте обучение, а не деньги
2. Инвестируйте в принципы и практики
3. Станьте инженером, с которым все хотят работать
4. Разнообразьте свою жизнь
5. Относитесь к отзывам как к золоту
6. Сначала широкий уровень
7. Лидерство без титула
8. Думайте о сферах влияния
9. Наточите инструменты
10. Показывайте свою работу
А как насчет вас? Что бы вы посоветовали начинающим инженерам-программистам, которые только начинают работать в технологической отрасли? Какие самые важные уроки вы усвоили? Пожалуйста, поделитесь ими в комментариях!
Android
• Gemini Android: Gemini с Stream Chat SDK для Compose
• Bottom Dialog Android Picker: диалог выбора файлов
• Creating Dynamic Menus with Jetpack Compose
• Netflix Toolbar Scroll Effect
• Jetpack Compose Puzzlers
• Going Old School
#android
Новое исследование Copilot обнаружило снижающееся качество кода
В исследовании "Coding on Copilot", подготовленном компанией GitClear, изучается качество и сопровождаемость кода, написанного с помощью ИИ.
1. По прогнозам, в 2024 году отток кода (Code churn) - процент строк, которые были исправлены или обновлены менее чем через две недели после написания - удвоится по сравнению с базовым уровнем 2021 года, предшествовавшим появлению искусственного интеллекта.
2. Суть в том, что использование Copilot сильно коррелирует с "ошибочным кодом", выкладываемым в репозитории.
3. Кроме того, в сочетании с ростом кода, помеченного как Copy/Paste, остается мало места для сомнений в том, что текущая реализация ИИ-помощников препятствует повторному использованию кода. Вместо рефакторинга и работы над DRY ("Не повторяй себя") эти помощники лишь предлагают повторить существующий код одним нажатием кнопки.
4. Больше скопированного/вставленного кода означает будущие головные боли. Пожалуй, нет большего бича для долгосрочной сопровождаемости кода, чем скопированный/вставленный код. По сути, когда повторяется строка кода, не содержащая ключевого оператора, автор кода признается: "У меня не было времени оценить предыдущую реализацию". Повторное добавление кода вместо его повторного использования оставляет будущим сопровождающим обязанность выяснить, как консолидировать параллельные пути, реализующие многократно востребованную функциональность.
И что: нет сомнений, что с ростом популярности ИИ мы вступили в эпоху, когда строки кода добавляются быстрее, чем когда-либо прежде. Вопрос, который лучше задать в 2024 году - кто будет убирать этот беспорядок?
Новая пятничная подборка - видео и подкасты за неделю:
• (iOS En)
Bring 3D to your App: Developing Native iOS Apps with Spline
• (iOS En)
SwiftUI Dock Progress Bar for macOS
• (iOS En)
SwiftData Background Tasks: Massively Improve Your Apps Performance
• (iOS En)
Source Control with Xcode: Branching and Merging
• (iOS En)
Unit Testing a SwiftUI Application using Xcode
• (iOS En)
From Challenge to Joy: My Journey Developing Tuist for Scalable Xcode Projects
• (And En)
Now in Android: 98 - Gemini Pro, Google AI SDK, Google AI Studio, Cast, Rust, and more!
• (And En)
How to Implement Firebase Push Notifications on Android (FCM + Backend)
• (And En)
How to Create an App Shortcut on Android
• (And En)
How to automatically test a Google Play Subscription
• (Crs Ru)
Позиция — KMP разработчик: Кирилла Розова собеседует Алексей Гладков
• (Crs Ru)
Flutter Dev Podcast #42: как стать Flutter-разработчиком? Часть 1
• (Dev Ru)
Разработка под Аврору
• (Dev Ru)
Безопасность приложений
• (Dev Ru)
Cracking the Mobile Interview
• (Dev Ru)
Как тимлиду оценить успешность в своей роли
• (Dev Ru)
Почему так мало женщин в IT?
• (Dev Ru)
Podlodka: Про дипфейки, этику и цену прогресса
• (Dev En)
LangChain GEN AI Tutorial – 6 End-to-End Projects using OpenAI, Google Gemini Pro, LLAMA2
• (Dev En)
Python Data Analysis and Visualization Course
Что вы посмотрели/послушали интересного про разработку? Киньте ссылку в комментарии.
🌐 AppFiles
Следующее поколение Wear OS появится, возможно, уже в этом году - Samsung и Google готовят обновление Wear OS 5 на базе Android 14. До недавнего времени крупные обновления Wear OS выходили редко. Wear OS 2.2 на базе Android 9 появилась в 2018 и, за исключением некоторых дополнений, оставалась относительно неизменной в течение нескольких лет. В 2021 году вышла Wear OS 3, основанная на Android 11. Через год Google выпустил свои первые часы Pixel Watch, в которых была представлена Wear OS 3.5. Совсем недавно, в 2023 году, в Galaxy Watch 6 дебютировала Wear OS 4 на Android 13. Сейчас Samsung активно работает над поддержкой сборки Android 14 для следующего поколения чипа Galaxy Watch 7. В нескольких местах эта сборка упоминается как «Wear OS 5». В общем, цикл обновлений у Wear OS видимо так же станет годовым, что, по идее, будет подталкивать людей к покупке более современных смарт-часов, а разработчикам позволит использовать все современные возможности ОС.
Разработка
• Samsung и Google готовят Wear OS 5 на базе Android 14
• Сам написал, сам поиграл: как работали трёхмерные игры на кнопочных телефонах нулевых? Пишем 3D-шутер с нуля
• TensorFlow Lite vs PyTorch Mobile for On-Device Machine Learning
• Writing code that makes mistakes harder
Маркетинг
• Реальные знаменитости и Реальные бренды в BeReal
Кроссплатформа
• Конкурс экологичных игр от Flutter и Global Citizen
• Expo Router v3: API Routes, bundle splitting, speed improvements, and more
• Memory Leak In Dart/Flutter
• lanltn/flutter-interactive-viewer-gallery-with-interactiveviewer-55ae260d2014">Flutter — Interactive with gallery viewer using InteractiveViewer and Matrix4
• .NET MAUI — Creating Profile Settings Page with Form Items
iOS
• OutRun: открытый фитнес-трекер
• Apple планирует ввести тарифы и ограничения на стороннюю загрузку приложений
• Моя малышка все еще любит самолеты — и я улучшил для нее радар
• Приложения для Vision Pro выглядят скучно
• Creating a Collapsible UITableViewCell in Swift: A Step-by-Step Guide
• How to use the rethrows keyword in Swift?
• A deep dive into the 2023 iPhone app of the year, AllTrails
• mobile_44538/lottie-magic-in-swiftui-5d600f068287">Lottie magic in SwiftUI
• Vision Pro Apps look boring
#ios
Моя малышка все еще любит самолеты — и я улучшил для нее радар
Продолжение прекрасной статьи про создание приложения-радара для собственного ребенка.
"Моя малышка любит самолеты — и я сделал для нее радар” — это, безусловно, лучшая вещь, которую я написал. Мне удалось попасть в ту самую «золотую середину» между полезным и техническим, и мое искреннее удовольствие от проекта просвечивало в рассказе. Казалось бы, как предприимчивый инди-разработчик, я должен был сразу же вскочить на волну хайпа, выпустить очередной релиз и начать мечтать о монетизации...
Автоматическое удаление кода может показаться странной идеей: написание кода требует больших затрат и он обычно считается активом. Однако когда в кодовой базе миллионы строк, неиспользуемый код становится обузой. Ведь с ним так или иначе нужно работать - поддерживать, если были созданы и не отменены тесты, то тестировать, выделять инженеров на рефакторинг или удаление. И это значительные издержки. Инженер Google Фил Норман написал о своей системе Sensenmann, которая ведает удалением ненужного кода в компании. Интересно посмотреть на обратную сторону разработки, не правда ли? 😀
Разработка
• Проект Sensenmann: удаление кода в масштабе
• Google Ads использует ИИ для создания кампаний
• Clerk получил $30 млн на аутентификацию и авторизацию для разработчиков
• bap_16778/5-achievable-side-hustles-for-developers-946c7cad1ff2">5 achievable side hustles for developers
• App Deep Dive: Peacock
• The Weirdest Bug I’ve Seen Yet
• 39 Challenges on Building Mobile Apps at Scale
Маркетинг
• Как посчитать ценные органические установки
• How to find creative winners and use AI to maximize their value
Кроссплатформа
• Заводим Яндекс Карты в Compose Multiplatform
• Hello MAUI
• Global Gamers Challenge from Flutter
• Multiplatform Magic: One Codebase, Three Platforms
iOS
• Упрощаем локализацию iOS-приложения со String Catalogs
• Регистрация на Swift Student Challenge откроется 5 февраля
• Introducing SwiftUI on visionOS
• Preparing for Swift 6
• Unit Testing a SwiftUI Application using Xcode
• My Toddler Still Loves Planes, So I Upgraded Her Radar
#ios
Из вчерашнего еще занятное - данные от AppFigures по установкам и доходам Among Us. Если вы не следили, то в пике, в июле 2020, игра получила аж 70 миллионов установок в месяц. Это к октябрю того же года вылилось в $9.7 млн чистой прибыли. Сейчас от этого не осталось и следа - установок стало менее 10 млн, а денег менее $100 тысяч. Почему так? Отсутствие изменений. За это время игра не сильно изменилась, сообщество не стало более активным. Те циклы роста (о которых вторая статья в “Маркетинге”) работали ограниченное количество времени и в конце концов выдохлись. И к вопросам о том, как добиться виральности, добавились следующий, даже более важный - как превратить виральность в устойчивый рост. Очевидно, что ребята из InnerSloth ответа (пока) не нашли. Посмотрите на свой продукт. Есть ли в нем виральность? А что будете делать, если найдете?
Разработка
• The Machine Learning Engineering Open Book: справочник по машинному обучению
• Mobile App Architectural Best Practices in Action
• 3 questions that will make you a phenomenal rubber duck
• Sensenmann: Code Deletion at Scale
• The art of shipping faster
Маркетинг
• Among Us: игра, которая не смогла
• Успех Among Us: исследование циклов роста игры, поразившей мир
• Creating an irresistible loyalty program for your app
Кроссплатформа
• Флаттер 3.18 | бета-релиз | Топ-8 фичей
• Publishing Kotlin Multiplatform Swift Packages Using Google Cloud Storage and Cloud Run
iOS
• Поваренная книга SwiftUI: шаринг состояний между представлениями с помощью объектов окружения
• Для Vision Pro пока разработано только 150 приложений
• Apple оплатила российский антимонопольный штраф
• LLMFarm: языковые модели на iOS и MacOS офлайн
• From Challenge to Joy: My Journey Developing Tuist for Scalable Xcode Projects
• iOS UI Testing with Deep Links
• How to write Unit Tests for Code Performance
• dmitrylupich/the-composable-architecture-swift-guide-to-tca-c3bf9b2e86ef">The Composable Architecture: Swift guide to TCA
• ScrollView Bounce Behavior configuration in SwiftUI
• Interactive Widgets With SwiftUI
#ios
iOS разработчик
Яндекс
Москва/Санкт-Петербург
гибрид
middle, senior, team lead
Какие задачи вас ждут
- участвовать в построении инфраструктуры приложения;
- продумывать и разрабатывать новые функции продукта;
- анализировать и улучшать производительность приложения;
- взаимодействовать со смежными командами.
Мы ждём, что вы
- отлично знаете Swift и особенности разработки для iOS;
- имеете значительный опыт написания клиент-серверных приложений;
- понимаете плюсы и минусы разных паттернов проектирования мобильных приложений.
Будет плюсом, если вы
- знакомы с Kotlin и концепциями Kotlin Multiplatform;
- имеете опыт работы со SwiftUI.
Откликнуться
Для связи в тг @maslova_y94
Знаменитый инсайдер Apple Марк Гурман продолжает грезить о iOS 18 и снова называет ее “крупнейшим обновлением в истории”. Ничего точно, правда, не говорит и талдычит про Siri и ИИ (а еще в качестве прорыва называют RCS, которые прямо так заставили внедрить чуть ли не на законодательном уровне). То, что может ИИ мы уже видели на примере Google и Samsung, так что вряд ли и тут Apple сможет удивить, особенно если учесть, что “в ИИ” компания никогда особо не могла. Но благо новая WWDC уже в этом году, так что “будем посмотреть” 🖼
Разработка
• 10 нестандартных уроков, полученных за 10 лет работы инженером-программистом
• Continuous learning framework
Маркетинг
• Microsoft заявляет, что новые правила App Store — «шаг в неправильном направлении»
• How to develop a successful push notification marketing strategy
Кроссплатформа
• Шпаргалка для QA: как тестировать Flutter-приложения
• Progress of the Flutter and Dart Package Ecosystem
• Dart on the Server: Exploring Server-Side Dart Technologies in 2024
• theflutterway/flutter-intro-onboarding-screen-with-carousel-animated-dots-no-package-19195792a010">Flutter App Intro/Onboarding Screen with Carousel & Animated Dots — NO Package
iOS
• Hand Shadows: руки для видео
• iOS 18 может стать «одним из крупнейших обновлений iOS»
• Как создать клиент App Store Connect API на Swift с помощью OpenAPI
• Getting Started With App Intents
• Debug for visionOS using Xcode simulator visualizations
• Using SwiftNIO — Fundamentals
• blorenzop/swiftui-charts-b6fa4aca46db">Introduction to Charts in SwiftUI
• SwiftUI’s Text’s Awesome tips
#ios
Небольшим компаниям или инди-разработчикам важно знать, на что уходит каждый рубль из бюджета на продвижение или разработку. Для нас ошибки — непозволительная роскошь. И тем более нужна надежная и удобная аналитика, чтобы в реальном времени следить за расходом средств на каждый канал привлечения пользователей.
Команда Multicast Games смогла в реальном времени отслеживать расходы на привлечение трафика и менять приоритетные направления. Всего с двумя UA-менеджерами они смогли добиться рентабельности рекламных вложений в 200%.
Читайте кейс и используйте самую точную аналитику 🧩
Интересный факт, но рекламный токен Реклама ООО "Яндекс", ИНН 7736207543, erid:2SDnjdGBfp4 до конца читает только 0,01% людей
Project IDX, универсальная веб-среда Google для разработки приложений с помощью ИИ, получила полноценный симулятор iOS и эмулятор Android прямо в браузере. Напомню, что это облачная IDE на основе VSCode, которая, среди прочего, позволяет использовать Flutter. Не уверен, что можно будет собирать и размещать проекты в App Store, но уже просто тестировать приложения без macOS, наверное, будет приятно. Впрочем, пока Project IDX работает ограничено и чтобы попасть в него надо пройти список ожидания.
Разработка
• Project IDX получил симулятор iOS и эмулятор Android
• Новое исследование Copilot обнаружило снижающееся качество кода
• Браузер Arc с помощью ИИ формирует персональные страницы для каждого поиска
• Разработка под Аврору
• Безопасность приложений
• Взламывая мобильное интервью
• Как тимлиду оценить успешность в своей роли
• Почему так мало женщин в IT?
• Podlodka: Про дипфейки, этику и цену прогресса
• Что такое Nix
• Как я создаю iOS игру на Unity c использованием MidJourney, ChatGPT, Adobe Firefly. Часть 2
• 10 unconventional lessons from 10 years working as a software engineer
Маркетинг
• Apple объявляет об изменениях в iOS, Safari и App Store в Европейском союзе
• После открытия App Store в Европе, Fortnite возвращается на iOS
• Apple разрешила стриминг игр в App Store
Кроссплатформа
• Позиция — KMP разработчик: Кирилла Розова собеседует Алексей Гладков
• Flutter Dev Podcast #42: как стать Flutter-разработчиком? Часть 1
• Отчёт о конференции CrossConf 2023
• Жизненный цикл приложения на Flutter
• Why I’m betting on FlutterFlow
iOS
• Поваренная книга SwiftUI: использование Combine с SwiftUI для управления состояниями
• Как через Push-уведомления на iPhone утекают данные пользователей
• A new access modifier in Swift: package
• SwiftUI main thread hang detector
• Scroll transition effects in iOS 17
• Mastering the Model Layer: Iron-Clad State Management in Model-Driven App
• Through the Ages: Apple Animation APIs
#ios
Удаление совершенства в масштабе
Традиционная подборка всех новостей и статей за неделю. Интерактивные виджеты, сторонние магазины приложений на iOS в Европе, архитектура в Android, пути к совершенству Flutter, удаление кода в масштабе и многое другое!
Apple объявляет об изменениях в iOS, Safari и App Store в Европейском союзе
Разрешают магазины и стороннюю загрузку, оплату через сайт или альтернативную платёжную систему. Условия:
• Сниженная комиссия - iOS-приложения в App Store будут платить сниженную комиссию в размере либо 10% (для подавляющего большинства разработчиков и подписчиков после первого года работы), либо 17%.
• Комиссия за обработку платежей - iOS-приложения в App Store могут использовать обработку платежей App Store за дополнительную комиссию в размере 3%. Разработчики могут использовать провайдера платежных услуг в своем приложении или направлять пользователей на свой веб-сайт для обработки платежей без дополнительной платы Apple.
• Технологический сбор - приложения для iOS, распространяемые в App Store и/или на альтернативных площадках для приложений, будут платить 0.50 евро за каждую первую годовую установку в год, превышающую порог в 1 миллион.
• Для приложений на iPadOS, macOS, watchOS и tvOS в ЕС разработчики, обрабатывающие платежи с помощью PSP или ссылки на свой сайт, получат скидку в размере 3% от комиссии, которую они должны выплатить Apple.
Если я правильно понял - за покупки в "сторонних" приложениях комиссия будет 10% или 17% + 50 центов за установку выше миллиона (если неправильно - поправьте).
В общем - все как и планировалось. Модерация и конский процент.
UPD: разработчики альтернативных магазинов должны будут предоставить компании аккредитив на сумму в 1 млн евро. Чтобы "гарантировать поддержку разработчикам и пользователям".
Android
• Просто об архитектуре в Android
• What’s new in the Jetpack Compose January ’24 release
• phyoemaungmaunghtun/package-visibility-in-api-30-or-higher-with-the-tts-service-9ef0d861fdb1">Package Visibility in API 30 or Higher with the TTS service
• Effect Handlers in Jetpack Compose
#android
🗺 30 января приходите на бесплатный практический урок «Навигация на SwiftUI». Ведущий - Сергей Балалаев, разработчик из Ozon.
Вебинар является частью полноценного онлайн-курса Отус «iOS Developer. Professional».
На уроке мы:
• научимся писать полнофункциональное приложение с нативной навигацией под чистым SwiftUI и с поддержкой с iOS 14;
• окунемся в мир бекпортов;
• рассмотрим несколько существующих решений в OpenSource и предложим свое собственное.
🌐 Регистрация на вебинар: https://otus.pw/2e8Y/?erid=LjN8KBR7cРеклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Apple планирует ввести тарифы и ограничения на стороннюю загрузку приложений
В ближайшее время компания Apple объявит об изменениях в политике, которые должны соответствовать Закону о цифровых рынках в Европе, срок введения которого истекает в марте. DMA заставит Apple разрешить стороннюю загрузку приложений на iPhone, чтобы уменьшить монопольный контроль компании над программным обеспечением на iOS.
Однако как именно это будет происходить, остается под вопросом. The Wall Street Journal считает, что понимает план Apple. А состоит он в том, чтобы все равно сохранить контроль над приложениями и платформой.
Apple все равно собирается проверять и одобрять все загружаемые сторонние программы и брать плату за покупки в них. Как это будет реализовано пока никто не знает, но, как пишут, установить можно будет только подписанные ключом Apple приложения. По ключу можно будет установить разработчика и с него потребовать деньги. Требовать, видимо, будут все те же 27%.
И что: если описание достоверно, то Apple очевидно подрывает большую часть антиконкурентных ограничений, изначально предусмотренных DMA. Вполне вероятно, что после истечения мартовского срока Европейская комиссия введет дополнительные требования и принудительные меры. И будет новый раунд.
Android
• Winlator: эмулятор Windows (x86_64) для Android
• Coroutine patterns in Android, and why they work
• michalankiersztajn/room-database-relationships-explained-729d3c705fd9">Room Relationships Explained
• Android ViewModel: Single state or not?
• Jetpack Compose: Passing data implicitly in Composable screens
#android
Регистрация на Swift Student Challenge откроется 5 февраля
Swift Student Challenge 2024 - конкурс для молодых разработчиков от Apple. Регистрация начнется 5 февраля и будет открыта три недели.
В рамках конкурса 2024 года из 350 победителей компания выделит 50 лучших, за их выдающиеся работы, и пригласит их в Купертино для участия в необычном мероприятии. Все победители получат годовое членство в Apple Developer Program, бесплатный ваучер на сдачу сертификационного экзамена App Development with Swift и специальный подарок от Apple.
Подробнее о победителях прошлого года вы можете узнать тут. А о необходимых инструментах и используемых технологиях здесь.
Android
• Вопросы с собеседований: В чем разница между LinkedList и ArrayList
• Программируем лучше: 4 неизвестных инструмента в Android Studio
• ssharyk/8-extension-methods-to-use-in-every-android-project-e1888731c737">8 simple extension methods to use in every Android project
• Gradle: from Newbie to Strong fundamentals
• How to automatically test a Google Play Subscription
• DIY: your own Dependency Injection library!
• Lateinit vs Lazy in Kotlin
#android
Тема Win9x для Jetpack Compose
Это захватывающий момент для Material Design и Jetpack Compose!
GitHub: https://github.com/nassendelft/compose-win9x-theme