iOS-разработчики в 2024 году: какие нужны скилы и как проходит процесс найма
Команда Яндекс Практикума провела исследование и готова рассказать, как обстоят дела в найме начинающих iOS-разработчиков: какие навыки требуются джуниорам для работы, о чём их спрашивают на собеседованиях и сколько откликов им нужно отправить, чтобы получить приглашение на интервью.
Статья: https://habr.com/ru/companies/yandex_praktikum/articles/819715/
Платформа: iOS
Команда Яндекс Практикума провела исследование и готова рассказать, как обстоят дела в найме начинающих iOS-разработчиков: какие навыки требуются джуниорам для работы, о чём их спрашивают на собеседованиях и сколько откликов им нужно отправить, чтобы получить приглашение на интервью.
Статья: https://habr.com/ru/companies/yandex_praktikum/articles/819715/
Платформа: iOS
Как мы разобрали монолитное приложение для бизнеса на модули
Я Анатолий, главный инженер-программист разработки мобильных приложений в ПСБ. В этой статье делюсь опытом миграции крупного монолитного приложения «Мой Бизнес» на модули. Расскажу все ключевые моменты, и с какими сложностями мы столкнулись на этом пути.
Статья: https://habr.com/ru/companies/psb/articles/820671/
Платформа: Android
Я Анатолий, главный инженер-программист разработки мобильных приложений в ПСБ. В этой статье делюсь опытом миграции крупного монолитного приложения «Мой Бизнес» на модули. Расскажу все ключевые моменты, и с какими сложностями мы столкнулись на этом пути.
Статья: https://habr.com/ru/companies/psb/articles/820671/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
@Previewable: динамические превью SwiftUI
В Xcode 16 появился макрос @Previewable для превьюшек SwiftUI, позволяющий использовать динамические свойства в предварительном просмотре. Вы сможете делать более богатые и динамичные превью ваших представлений SwiftUI без необходимости оборачивать состояние внутри дочерних представлений.
Статья: https://apptractor.ru/info/articles/previewable.html
Платформа: iOS
В Xcode 16 появился макрос @Previewable для превьюшек SwiftUI, позволяющий использовать динамические свойства в предварительном просмотре. Вы сможете делать более богатые и динамичные превью ваших представлений SwiftUI без необходимости оборачивать состояние внутри дочерних представлений.
Статья: https://apptractor.ru/info/articles/previewable.html
Платформа: iOS
Искусственному интеллекту – быть: какие обновления представила Apple на WWDC 2024
Значительную часть летней конференции Apple уделила внедрению искусственного интеллекта в свои устройства и традиционно рассказала об обновлениях операционных систем своих устройств. Технический директор студии разработки мобильных приложений CleverPumpkin Александр Кияйкин внимательно посмотрел презентацию и поделился главными новостями, которые нельзя пропустить.
Статья: https://apptractor.ru/info/articles/clever-wwdc-2024.html
Платформа: iOS
Значительную часть летней конференции Apple уделила внедрению искусственного интеллекта в свои устройства и традиционно рассказала об обновлениях операционных систем своих устройств. Технический директор студии разработки мобильных приложений CleverPumpkin Александр Кияйкин внимательно посмотрел презентацию и поделился главными новостями, которые нельзя пропустить.
Статья: https://apptractor.ru/info/articles/clever-wwdc-2024.html
Платформа: iOS
Проект от нашей читательницы, AnimatedWidget on LockScreen - создание анимированного виджета. Apple не предоставляет методов добавления анимации такого формата, как gif, в код. И по таймеру добиться программного метода смены изображений не получается.
Был возможный вариант менять статичную картинку через API каждую секунду, но при этом нагружается процессор и Apple отклоняет приложение. В этом примере автор создает анимированный виджет с помощью шрифта.
AnimatedWidget on LockScreen на GitHub: https://github.com/PollyVern/AnimatedWidget
Платформа: iOS
⭐️: 4
Был возможный вариант менять статичную картинку через API каждую секунду, но при этом нагружается процессор и Apple отклоняет приложение. В этом примере автор создает анимированный виджет с помощью шрифта.
AnimatedWidget on LockScreen на GitHub: https://github.com/PollyVern/AnimatedWidget
Платформа: iOS
⭐️: 4
🔥3
Что нового в Swift 6?
Swift 6 — это важное обновление языка программирования Swift, разработанного Apple. Данная версия включает множество нововведений и улучшений, особенно в области параллелизма. В этом документе мы рассмотрим основные изменения и их влияние на разработчиков, опираясь на официальную документацию Apple.
Статья: https://habr.com/ru/articles/820961/
Платформа: iOS
Swift 6 — это важное обновление языка программирования Swift, разработанного Apple. Данная версия включает множество нововведений и улучшений, особенно в области параллелизма. В этом документе мы рассмотрим основные изменения и их влияние на разработчиков, опираясь на официальную документацию Apple.
Статья: https://habr.com/ru/articles/820961/
Платформа: iOS
Как сломать скомпилированный код, не нарушая бинарную совместимость
Я Антон, Android-разработчик в команде Тинькофф Бизнеса. Занимаюсь интеграцией нескольких наших внутренних SDK в приложение и иногда участвую в их разработке. Хочу поговорить про проблемы обратной совместимости, которые я встречал в своей работе, и предостеречь от выстрела себе или клиентам вашей библиотеки в ногу.
Статья: https://habr.com/ru/companies/tbank/articles/819537/
Платформа: Android
Я Антон, Android-разработчик в команде Тинькофф Бизнеса. Занимаюсь интеграцией нескольких наших внутренних SDK в приложение и иногда участвую в их разработке. Хочу поговорить про проблемы обратной совместимости, которые я встречал в своей работе, и предостеречь от выстрела себе или клиентам вашей библиотеки в ногу.
Статья: https://habr.com/ru/companies/tbank/articles/819537/
Платформа: Android
❤1
Почему проверка типов в Swift работает медленно
Предположение о типе выражения решает ограничения неэффективно и иногда может вести себя сверхлинейно или даже экспоненциально.
Статья: https://danielchasehooper.com/posts/why-swift-is-slow/
Платформа: iOS
Предположение о типе выражения решает ограничения неэффективно и иногда может вести себя сверхлинейно или даже экспоненциально.
Статья: https://danielchasehooper.com/posts/why-swift-is-slow/
Платформа: iOS
Danielchasehooper
Why Swift’s Type Checker Is So Slow
How a 10 year old design choice for Swift’s type checker still haunts us to this day
This media is not supported in your browser
VIEW IN TELEGRAM
Simple Time Tracker - простое приложение, которое помогает отслеживать, сколько времени вы тратите на бесполезные занятия.
Внутри Kotlin, многомодульность, Single Activity, MVVM, Jetpack Navigation, Jetpack Compose, Hilt, Room, корутины, Wear OS, кастомные View, Gradle Kotlin DSL, Unit и UI тесты, CI с GitHub Actions и другое.
Simple Time Tracker на GitHub: https://github.com/Razeeman/Android-SimpleTimeTracker
Платформа: Android
⭐️: 66
Внутри Kotlin, многомодульность, Single Activity, MVVM, Jetpack Navigation, Jetpack Compose, Hilt, Room, корутины, Wear OS, кастомные View, Gradle Kotlin DSL, Unit и UI тесты, CI с GitHub Actions и другое.
Simple Time Tracker на GitHub: https://github.com/Razeeman/Android-SimpleTimeTracker
Платформа: Android
⭐️: 66
Android: Проблема отрисовки в Jetpack Compose
Если Compose не успел отрисовать всё до следующего изменения, он «с оптимизмом» отбрасывает старое и берется за новое. Признаться, я немного обалдел от такого оптимизма.
Отрисовка в Yandex Map не быстрая, объектов может быть очень много, если есть проблемы на относительно шустром телефоне, понятно что на старом тормозном ведре их будет гораздо больше.
Вроде как решение очевидно, надо не посылать новые события пока не отрисовались старые. Но это значит, что надо добавить новые intents от UI в ViewModel о том, что отрисовка завершена, в ViewModel хранить полученные но не отправленные на UI данные, в общем много лишнего геморроя и система становится менее понятной и более нагруженной. От этого варианта я отказался.
Статья: https://habr.com/ru/articles/821433/
Платформа: Android
Если Compose не успел отрисовать всё до следующего изменения, он «с оптимизмом» отбрасывает старое и берется за новое. Признаться, я немного обалдел от такого оптимизма.
Отрисовка в Yandex Map не быстрая, объектов может быть очень много, если есть проблемы на относительно шустром телефоне, понятно что на старом тормозном ведре их будет гораздо больше.
Вроде как решение очевидно, надо не посылать новые события пока не отрисовались старые. Но это значит, что надо добавить новые intents от UI в ViewModel о том, что отрисовка завершена, в ViewModel хранить полученные но не отправленные на UI данные, в общем много лишнего геморроя и система становится менее понятной и более нагруженной. От этого варианта я отказался.
Статья: https://habr.com/ru/articles/821433/
Платформа: Android
❤1
SwiftUI и MVI
Я работал несколько лет с архитектурой MVI в SwiftUI и продолжаю работать. Ранее я писал об этом подходе и недавно я решил обновить и отрефакторить репозиторий с примером MVI на SwiftUI, многое упростил и сделал удобнее, а также решил написать актуальную русскую версию статьи об архитектуре MVI на SwiftUI.
Статья: https://habr.com/ru/articles/821591/
Платформа: iOS
Я работал несколько лет с архитектурой MVI в SwiftUI и продолжаю работать. Ранее я писал об этом подходе и недавно я решил обновить и отрефакторить репозиторий с примером MVI на SwiftUI, многое упростил и сделал удобнее, а также решил написать актуальную русскую версию статьи об архитектуре MVI на SwiftUI.
Статья: https://habr.com/ru/articles/821591/
Платформа: iOS
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке?
#ios #android #mobile #video
•
(iOS Ru) iOS под санкциями•
(iOS Ru) Как сократить вес приложения: переносим картинки и строки локализации на сервер•
(iOS En) Главное выступление WWDC 2024•
(iOS En) Выступление Platforms State of the Union•
(iOS En) What’s new in Xcode 16•
(iOS En) New Text Renderer API in SwiftUI - Xcode 16•
(iOS En) What’s New in SwiftUI•
(iOS En) I rebuilt the visionOS from scratch•
(And En) Now in Android: 107 - KotlinConf, Android Studio updates, I/O recaps, AndroidX updates, and more•
(And En) Top 3 updates around Compose across form factors at Google I/O ‘24•
(And En) Why I Stopped Using popBackStack() to Navigate Back•
(And En) Add Real-Time Features to your Mobile App with Darryn Campbell•
(And En) Reified Type Parameters•
(Crs En) KMP vs. Flutter - Who Will Win The Cross-Platform Battle?•
(Dev Ru) Ошибки и исключения под капотом — Прерывания, try-catch, монады•
(Dev Ru) BDUI как стратегия мобильного приложения•
(Dev En) Learn High-Level System Design by Coding YouTube – Full CourseПосоветуйте в комментариях интересные каналы по мобильной или не очень разработке?
#ios #android #mobile #video
❤1
Цель проекта - расширить возможности использования протокола Codable с помощью макросов, предоставляемых Swift 5.9, и устранить недостатки различных официальных версий. CodableWrapper предоставляет значение по умолчанию, основные типы автоматически конвертируются между String, Bool, Number и т.д., кастомное множество CodingKey, вложенный словарь CodingKey, автоматическая совместимость между “верблюжьим” и “змеиным” регистром, удобство подкласса Codable, трансформатор.
CodableWrapper на GitHub: https://github.com/winddpan/CodableWrapper
Платформа: iOS
⭐️: 304
CodableWrapper на GitHub: https://github.com/winddpan/CodableWrapper
Платформа: iOS
⭐️: 304
Виды логирования в Swift
Меня зовут Владислав Даниелян, я iOS-разработчик в AGIMA. Предлагаю немного поговорить о принтах. Это одна из первых и наиболее используемых функций, с которой начинаются первые шаги в разработке у любого новичка:
Статья: https://habr.com/ru/companies/agima/articles/821515/
Платформа: iOS
Меня зовут Владислав Даниелян, я iOS-разработчик в AGIMA. Предлагаю немного поговорить о принтах. Это одна из первых и наиболее используемых функций, с которой начинаются первые шаги в разработке у любого новичка:
Статья: https://habr.com/ru/companies/agima/articles/821515/
Платформа: iOS
Как и зачем мы затащили GeckoView в Почту
Gecko — это браузерный движок, разработанный в Mozilla. GeckoView — это как бы «обёртка» над Gecko, оформленная в виде отдельной библиотеки. И, так как GeckoView весит немало, было решено попытаться удалить из неё всё, что не нужно, пересобрать и распространять её точечно для пользователей со сломанным WebView. А сделать это можно только с помощью Dynamic Feature Delivery. Этот инструмент позволяет выносить модули приложения из основного APK и доставлять их пользователям, например, когда они хотят воспользоваться нашей фичей, и удалять эти модули, если они уже не нужны. Благодаря этому даже тяжёлый GeckoView не повлияет на размер основного APK. Здесь мы расскажем про самые неочевидные проблемы, с которыми мы столкнулись при работе с самим GeckoView и при его интеграции в Dynamic Feature Delivery.
Статья: https://habr.com/ru/companies/vk/articles/820803/
Платформа: Android
Gecko — это браузерный движок, разработанный в Mozilla. GeckoView — это как бы «обёртка» над Gecko, оформленная в виде отдельной библиотеки. И, так как GeckoView весит немало, было решено попытаться удалить из неё всё, что не нужно, пересобрать и распространять её точечно для пользователей со сломанным WebView. А сделать это можно только с помощью Dynamic Feature Delivery. Этот инструмент позволяет выносить модули приложения из основного APK и доставлять их пользователям, например, когда они хотят воспользоваться нашей фичей, и удалять эти модули, если они уже не нужны. Благодаря этому даже тяжёлый GeckoView не повлияет на размер основного APK. Здесь мы расскажем про самые неочевидные проблемы, с которыми мы столкнулись при работе с самим GeckoView и при его интеграции в Dynamic Feature Delivery.
Статья: https://habr.com/ru/companies/vk/articles/820803/
Платформа: Android
GPT-2 с нуля на MLX
Train.py - это ~200 строк кода на Python, который определяет и обучает GPT-2 с нуля, используя mlx и numpy в качестве единственных зависимостей. В качестве примера модель обучена на ~1 миллионе символов Шекспира, содержащихся в файле input.txt, и на Macbook обучение занимает всего 10 минут. В результате вы получаете связанный текст, похожий на Шекспира.
GitHub: https://github.com/pranavjad/mlx-gpt2
Платформа: разработка
Train.py - это ~200 строк кода на Python, который определяет и обучает GPT-2 с нуля, используя mlx и numpy в качестве единственных зависимостей. В качестве примера модель обучена на ~1 миллионе символов Шекспира, содержащихся в файле input.txt, и на Macbook обучение занимает всего 10 минут. В результате вы получаете связанный текст, похожий на Шекспира.
GitHub: https://github.com/pranavjad/mlx-gpt2
Платформа: разработка
Connectivity предоставляет возможности мониторинга сети для мультиплатформенных проектов. Библиотека может отслеживать сетевое подключение с помощью встроенных API на устройствах Android и Apple или путем выполнения HTTP-запросов к указанным хостам.
Connectivity на GitHub: https://github.com/jordond/connectivity
Платформа: Kotlin Multiplatform/кроссплатформа
⭐️: 158
Connectivity на GitHub: https://github.com/jordond/connectivity
Платформа: Kotlin Multiplatform/кроссплатформа
⭐️: 158
Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 4
Это будет четвертая статья из серии «Осваиваем ViewModel в Android». Мы обсудили советы по улучшению производительности и качества кода во ViewModel, которые в настоящее время являются основным компонентом приложений для Android.
В предыдущих частях мы уже обсуждали:
1. Избегайте инициализации состояния в блоке init{}.
2. Избегайте раскрытия мутабельных состояний.
3. Используйте update{} при использовании MutableStateFlows.
4. Старайтесь не импортировать зависимости Android во ViewModel
5. Лениво внедряйте зависимости в конструктор.
В этой части мы обсудим 6-8 пункты из списка:
6. Примите более реактивное и менее императивное программирование.
7. Избегайте инициализации ViewModel из внешнего кода.
8. Избегайте передачи параметров из внешнего кода.
Статья: https://apptractor.ru/info/articles/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-4.html
Платформа: Android
Это будет четвертая статья из серии «Осваиваем ViewModel в Android». Мы обсудили советы по улучшению производительности и качества кода во ViewModel, которые в настоящее время являются основным компонентом приложений для Android.
В предыдущих частях мы уже обсуждали:
1. Избегайте инициализации состояния в блоке init{}.
2. Избегайте раскрытия мутабельных состояний.
3. Используйте update{} при использовании MutableStateFlows.
4. Старайтесь не импортировать зависимости Android во ViewModel
5. Лениво внедряйте зависимости в конструктор.
В этой части мы обсудим 6-8 пункты из списка:
6. Примите более реактивное и менее императивное программирование.
7. Избегайте инициализации ViewModel из внешнего кода.
8. Избегайте передачи параметров из внешнего кода.
Статья: https://apptractor.ru/info/articles/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-4.html
Платформа: Android
Coobjc обеспечивает поддержку корутинов для Objective-C и Swift. В библиотеке команда Alibaba Taobao-Mobile добавила метод await, генератор и модель актора, как в C#, Javascript и Kotlin. Для удобства во фреймворке Cokit также добавили корутины для некоторых API Foundation и UIKit, таких как NSFileManager, JSON, NSData, UIImage и т.д. Кроме того реализовали поддержку кортежей.
Coobjc на GitHub: https://github.com/alibaba/coobjc
Платформа: iOS
⭐️: 4K
Coobjc на GitHub: https://github.com/alibaba/coobjc
Платформа: iOS
⭐️: 4K
Flutter Add-to-App: как добавить Flutter в приложение
Поддерживать одно приложение выгоднее, чем два, поэтому многие компании переносят приложения на Flutter. Но не всегда можно полностью переписать рабочее приложение с нуля. И тогда в лучах софитов появляется Flutter Add-to-App — способ интеграции Flutter-модуля в уже существующее нативное приложение.
Статья: https://habr.com/ru/companies/surfstudio/articles/822693/
Платформа: Flutter
Поддерживать одно приложение выгоднее, чем два, поэтому многие компании переносят приложения на Flutter. Но не всегда можно полностью переписать рабочее приложение с нуля. И тогда в лучах софитов появляется Flutter Add-to-App — способ интеграции Flutter-модуля в уже существующее нативное приложение.
Статья: https://habr.com/ru/companies/surfstudio/articles/822693/
Платформа: Flutter