Вопросы с собеседований: Асинхронные задачи в Swift
Swift вводит поддержку асинхронного программирования через асинхронные функции (async/await) и структуры данных, такие как Task. Вот пример асинхронной функции в Swift:
Здесь функция fetchData является асинхронной, обозначенной ключевым словом async. Она использует await, чтобы ждать завершения асинхронной операции, в данном случае, запроса данных через URLSession. Возвращаемый тип функции указывает на тип данных, который будет возвращен после успешного выполнения асинхронной операции.
Для вызова асинхронной функции используется ключевое слово await. Пример использования:
Асинхронное программирование в Swift позволяет более эффективно управлять множеством задач и избегать блокировки потока выполнения при выполнении долгих операций.
Платформа: iOS
Swift вводит поддержку асинхронного программирования через асинхронные функции (async/await) и структуры данных, такие как Task. Вот пример асинхронной функции в Swift:
func fetchData() async throws -> Data {
let url = URL(string: "https://apptractor.ru/")!
let (data, _) = try await URLSession.shared.data(from: url)
return data
}
Здесь функция fetchData является асинхронной, обозначенной ключевым словом async. Она использует await, чтобы ждать завершения асинхронной операции, в данном случае, запроса данных через URLSession. Возвращаемый тип функции указывает на тип данных, который будет возвращен после успешного выполнения асинхронной операции.
Для вызова асинхронной функции используется ключевое слово await. Пример использования:
do {
let data = try await fetchData()
// Обработка полученных данных
} catch {
// Обработка ошибок
}
Асинхронное программирование в Swift позволяет более эффективно управлять множеством задач и избегать блокировки потока выполнения при выполнении долгих операций.
Платформа: iOS
❤4🤣1
Изучайте рефакторинга в IDE для повышения качества кода
У JetBrains вышел новый курс "Введение в рефакторинг кода с помощью IDE в Kotlin". Курс научит вас использовать IDE для форматирования и изменения вашего кода, чтобы он стал более читабельным и с меньшей вероятностью выдавал ошибки. Это отличный выбор для начинающих и развивающихся программистов, желающих писать профессиональный код.
Курс состоит из восьми разделов, в которых вы сможете изучить и применить различные техники рефакторинга. Вы узнаете о лучших практиках по стилю и форматированию кода, о том, как выявлять и избегать распространенных проблем, а также о том, как эффективнее использовать IDE для повышения качества кода.
Некоторые другие темы, которые вы можете встретить в курсе:
• Соглашения об именовании и правила стиля
• Root рефакторинг против floss рефакторинга
• Методы автоматического рефакторинга для перемещения, извлечения и инлайнинга кода
• Рефакторинг в соответствии с паттернами проектирования
Курс: https://plugins.jetbrains.com/plugin/23048-introduction-to-ide-code-refactoring-in-kotlin
Платформа: Android/Kotlin
У JetBrains вышел новый курс "Введение в рефакторинг кода с помощью IDE в Kotlin". Курс научит вас использовать IDE для форматирования и изменения вашего кода, чтобы он стал более читабельным и с меньшей вероятностью выдавал ошибки. Это отличный выбор для начинающих и развивающихся программистов, желающих писать профессиональный код.
Курс состоит из восьми разделов, в которых вы сможете изучить и применить различные техники рефакторинга. Вы узнаете о лучших практиках по стилю и форматированию кода, о том, как выявлять и избегать распространенных проблем, а также о том, как эффективнее использовать IDE для повышения качества кода.
Некоторые другие темы, которые вы можете встретить в курсе:
• Соглашения об именовании и правила стиля
• Root рефакторинг против floss рефакторинга
• Методы автоматического рефакторинга для перемещения, извлечения и инлайнинга кода
• Рефакторинг в соответствии с паттернами проектирования
Курс: https://plugins.jetbrains.com/plugin/23048-introduction-to-ide-code-refactoring-in-kotlin
Платформа: Android/Kotlin
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Spotify-KMP - пример приложения на Kotlin Multiplatform, которое повторяет архитектуру реального продукта. Работает в Android 21 и iOS 15, внутри Kotlin и Swift, Jetpack Compose и SwiftUI, MVVM, корутины + Flow, Ktor, SKIE, KMMBridge, Coil и Kingfisher, Kermit, Paging3, Multiplatform-Settings, Koin, Store и т.п.
Spotify-KMP на GitHub: https://github.com/AshuTyagi16/Spotify-KMP
Платформа: кроссплатформа
⭐️: 95
Spotify-KMP на GitHub: https://github.com/AshuTyagi16/Spotify-KMP
Платформа: кроссплатформа
⭐️: 95
Новая пятничная подборка - видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Что вы посмотрели/послушали интересного про разработку? Киньте ссылку в комментарии.
🌐 AppFiles
•
(iOS Ru)
Мок-собеседование iOS-разработчика (все собесы)•
(iOS En)
Floating Tab Bar for macOS•
(iOS En)
SwiftData Debugging The Easy Way •
(iOS En)
Staging and Committing with Xcode•
(And Ru)
Как улучшить код функциональным подходом•
(And Ru)
Разбор кода Android-приложения фоторедактора Image Toolbox•
(And Ru)
TDD: реальная история внедрения в проект•
(And En)
App Performance Analysis with the Android Studio Profiler•
(And En)
The Top 3 State Management Mistakes On Android•
(Crs Ru)
Podlodka: Qt — кроссплатформенная разработка приложений под декстоп и не только•
(Crs En)
How to Make a Clean Architecture App with Kotlin and Compose Multiplatform•
(Dev Ru)
Как мобильные разработчики занимаются инфраструктурой•
(Dev Ru)
Плюс, работа с платежами и особенности разработки SDK•
(Dev Ru)
Как умирают продукты без дизайн аналитики•
(Dev En)
How to Get a Developer Job – Even in This Economy [Full Course]•
(Dsg En)
Figma Crash Course 2024Что вы посмотрели/послушали интересного про разработку? Киньте ссылку в комментарии.
🌐 AppFiles
AppTractor
Мок-собеседование iOS-разработчика
Mock Interview - это практическое тренировочное собеседование, которое отлично подготовит вас к реальному собеседованию.
❤1
YTDLnis - это бесплатный и открытый загрузчик видео/аудио с использованием yt-dlp для Android 6.0 и выше. Умеет работать более с 1000 сайтов, работать с плейлистами, по расписанию, скачивать сразу несколько записей сразу, обрезать видео по времени или по главам, внедрять субтитры и многое другое. Внутри Material You, MVVM, WorkManager.
YTDLnis на GitHub: https://github.com/deniscerri/ytdlnis
Платформа: Android
⭐️: 2K
YTDLnis на GitHub: https://github.com/deniscerri/ytdlnis
Платформа: Android
⭐️: 2K
👍1
LLMFarm - это приложение для iOS (16+) и macOS для работы с большими языковыми моделями (LLM). Оно позволяет загружать различные LLM с определенными параметрами. С помощью LLMFarm вы можете протестировать производительность различных LLM на iOS и macOS и найти наиболее подходящую модель для вашего проекта.
LLMFarm на GitHub: https://github.com/guinmoon/LLMFarm
Платформа: iOS
⭐️: 578
LLMFarm на GitHub: https://github.com/guinmoon/LLMFarm
Платформа: iOS
⭐️: 578
This media is not supported in your browser
VIEW IN TELEGRAM
Пишем интерактивный виджет
Виджеты в новом обличии появились в 2020 году вместе с выходом iOS 14 (HomeScreen widgets). За это время Apple выпустила больше семейств виджетов, а также добавила их на LockScreen в iPhone и iPad. Но интерактивность появилась впервые в iOS 17.
В этой статье разберёмся, из чего состоит интерактивный виджет: формирование Timeline, как работает интерактивность через библиотеку AppIntents, а затем напишем свой первый интерактивный виджет.
Статья: https://habr.com/ru/companies/ivi/articles/787880/
Платформа: iOS
Виджеты в новом обличии появились в 2020 году вместе с выходом iOS 14 (HomeScreen widgets). За это время Apple выпустила больше семейств виджетов, а также добавила их на LockScreen в iPhone и iPad. Но интерактивность появилась впервые в iOS 17.
В этой статье разберёмся, из чего состоит интерактивный виджет: формирование Timeline, как работает интерактивность через библиотеку AppIntents, а затем напишем свой первый интерактивный виджет.
Статья: https://habr.com/ru/companies/ivi/articles/787880/
Платформа: iOS
👍3
Программируем лучше: 4 неизвестных инструмента в Android Studio
Вам никогда не казалось, что вашей работе над кодом не помешали бы улучшения? IDE предлагают целый ряд инструментов, которые облегчают разработку программного обеспечения: от компиляции до отладки и не только. Однако можно легко упустить некоторые важные функции. В этой статье я познакомлю вас с четырьмя ценными инструментами Android Studio/IntelliJ IDEA, которые, возможно, не так широко известны среди разработчиков. Давайте вместе изучим эти инструменты и посмотрим, как они могут улучшить ваш опыт разработки.
1. Живые шаблоны (Live Templates)
2. Анализ потока данных (Analyze Data Flow)
3. Инструменты рефакторинга
4. Постфикс дополнение (Postfix Completion)
Статья: https://apptractor.ru/info/articles/programmiruem-luchshe-4-neizvestnyh-instrumenta-v-android-studio.html
Платформа: Android
Вам никогда не казалось, что вашей работе над кодом не помешали бы улучшения? IDE предлагают целый ряд инструментов, которые облегчают разработку программного обеспечения: от компиляции до отладки и не только. Однако можно легко упустить некоторые важные функции. В этой статье я познакомлю вас с четырьмя ценными инструментами Android Studio/IntelliJ IDEA, которые, возможно, не так широко известны среди разработчиков. Давайте вместе изучим эти инструменты и посмотрим, как они могут улучшить ваш опыт разработки.
1. Живые шаблоны (Live Templates)
2. Анализ потока данных (Analyze Data Flow)
3. Инструменты рефакторинга
4. Постфикс дополнение (Postfix Completion)
Статья: https://apptractor.ru/info/articles/programmiruem-luchshe-4-neizvestnyh-instrumenta-v-android-studio.html
Платформа: Android
Вопросы с собеседований: В чем разница между LinkedList и ArrayList
LinkedList и ArrayList - это две различные реализации списка в языке программирования Java (и не только). Они предоставляют разные подходы к хранению и управлению коллекциями элементов.
ArrayList:
• ArrayList представляет собой динамический массив, который автоматически расширяется или уменьшается по мере добавления или удаления элементов.
• Элементы ArrayList хранятся в последовательных ячейках памяти, и к ним можно получить доступ по индексу. Это обеспечивает быстрый доступ к элементам по индексу, но может быть медленным при вставке или удалении элементов в середине списка.
• ArrayList требует меньше памяти в сравнении с LinkedList, так как он хранит только значения элементов и минимальную дополнительную информацию.
LinkedList:
• LinkedList реализован как двусвязный список, где каждый элемент содержит ссылки на предыдущий и следующий элементы. Это обеспечивает эффективные операции вставки и удаления в середине списка.
• В отличие от ArrayList, LinkedList не обеспечивает прямой доступ к элементам по индексу, и для доступа к элементам требуется проход по списку с начала или конца.
• LinkedList требует дополнительной памяти для хранения указателей между элементами.
Подробнее: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-v-chem-raznitsa-mezhdu-linkedlist-i-arraylist.html
Платформа: Android
Другие: вопросы
LinkedList и ArrayList - это две различные реализации списка в языке программирования Java (и не только). Они предоставляют разные подходы к хранению и управлению коллекциями элементов.
ArrayList:
• ArrayList представляет собой динамический массив, который автоматически расширяется или уменьшается по мере добавления или удаления элементов.
• Элементы ArrayList хранятся в последовательных ячейках памяти, и к ним можно получить доступ по индексу. Это обеспечивает быстрый доступ к элементам по индексу, но может быть медленным при вставке или удалении элементов в середине списка.
• ArrayList требует меньше памяти в сравнении с LinkedList, так как он хранит только значения элементов и минимальную дополнительную информацию.
LinkedList:
• LinkedList реализован как двусвязный список, где каждый элемент содержит ссылки на предыдущий и следующий элементы. Это обеспечивает эффективные операции вставки и удаления в середине списка.
• В отличие от ArrayList, LinkedList не обеспечивает прямой доступ к элементам по индексу, и для доступа к элементам требуется проход по списку с начала или конца.
• LinkedList требует дополнительной памяти для хранения указателей между элементами.
Подробнее: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-v-chem-raznitsa-mezhdu-linkedlist-i-arraylist.html
Платформа: Android
Другие: вопросы
Открытая книга по машинному обучению
The Machine Learning Engineering Open Book - это открытая коллекция методик, помогающих успешно обучать большие языковые и мультимодальные модели. Материал подходит для инженеров, занимающихся обучением LLM/VLM. Книга содержит множество скриптов и copy-paste команд, позволяющих читателям быстро решать свои задачи. В книге рассматриваются основные аппаратные компоненты, производительность, оперирование, разработка и многое другое.
GitHub: https://github.com/stas00/ml-engineering?tab=readme-ov-file
Платформа: разработка
⭐️: 5.6K
The Machine Learning Engineering Open Book - это открытая коллекция методик, помогающих успешно обучать большие языковые и мультимодальные модели. Материал подходит для инженеров, занимающихся обучением LLM/VLM. Книга содержит множество скриптов и copy-paste команд, позволяющих читателям быстро решать свои задачи. В книге рассматриваются основные аппаратные компоненты, производительность, оперирование, разработка и многое другое.
GitHub: https://github.com/stas00/ml-engineering?tab=readme-ov-file
Платформа: разработка
⭐️: 5.6K
Тема Win9x для Jetpack Compose
Это захватывающий момент для Material Design и Jetpack Compose!
GitHub: https://github.com/nassendelft/compose-win9x-theme
Платформа: Android
⭐️: 83
Это захватывающий момент для Material Design и Jetpack Compose!
GitHub: https://github.com/nassendelft/compose-win9x-theme
Платформа: Android
⭐️: 83
👍2
Winlator - это приложение для Android, позволяющее запускать приложения Windows (x86_64) с помощью Wine и Box86/Box64.
Winlator на GitHub: https://github.com/brunodev85/winlator
Платформа: Android
⭐️: 3K
Winlator на GitHub: https://github.com/brunodev85/winlator
Платформа: Android
⭐️: 3K
👍1🔥1
Проект Sensenmann: удаление кода в масштабе Google
Автоматическое удаление кода может показаться странной идеей: написание кода требует больших затрат и обычно считается активом. Однако неиспользуемый код стоит времени и усилий, будь то его поддержка или очистка.
Статья: https://apptractor.ru/info/articles/proekt-sensenmann-udalenie-koda-v-masshtabe.html
Платформа: разработка
Автоматическое удаление кода может показаться странной идеей: написание кода требует больших затрат и обычно считается активом. Однако неиспользуемый код стоит времени и усилий, будь то его поддержка или очистка.
Статья: https://apptractor.ru/info/articles/proekt-sensenmann-udalenie-koda-v-masshtabe.html
Платформа: разработка
AppTractor
Проект Sensenmann: удаление кода в масштабе
Автоматическое удаление кода может показаться странной идеей: написание кода требует больших затрат и обычно считается активом. Однако неиспользуемый код стоит времени и усилий, будь то его поддержка или очистка.
OutRun - это приложение для iOS, позволяющее записывать и просматривать ваши тренировки. Несмотря на название, оно поддерживает не только бег, но и ходьбу, походы, езду на велосипеде и катание на коньках. Проект полностью с открытым исходным кодом и не содержит рекламы.
OutRun на GitHub: https://github.com/timfraedrich/OutRun
Платформа: iOS
⭐️: 622
OutRun на GitHub: https://github.com/timfraedrich/OutRun
Платформа: iOS
⭐️: 622
Заводим Яндекс Карты в Compose Multiplatform
В одном проекте, который мы решили делать полностью с использованием Compose Multiplatform, была поставлена задача реализовать работу Яндекс Карт. Приложение для сети сервисных центров, поэтому на карте должны отображаться метки СТО, а также собственная метка пользователя для вызова мастера на место.
Статья: https://habr.com/ru/articles/788554/
Платформа: кроссплатформа
В одном проекте, который мы решили делать полностью с использованием Compose Multiplatform, была поставлена задача реализовать работу Яндекс Карт. Приложение для сети сервисных центров, поэтому на карте должны отображаться метки СТО, а также собственная метка пользователя для вызова мастера на место.
Статья: https://habr.com/ru/articles/788554/
Платформа: кроссплатформа
👍1
Моя малышка все еще любит самолеты — и я улучшил для нее радар
Продолжение статьи про создание приложения-радара для собственного ребенка.
Статья: https://apptractor.ru/info/articles/moya-malyshka-vse-esche-lyubit-samolety-i-ya-uluchshil-dlya-nee-radar.html
Платформа: инди-разработка/iOS
Продолжение статьи про создание приложения-радара для собственного ребенка.
"Моя малышка любит самолеты — и я сделал для нее радар” — это, безусловно, лучшая вещь, которую я написал. Мне удалось попасть в ту самую «золотую середину» между полезным и техническим, и мое искреннее удовольствие от проекта просвечивало в рассказе. Казалось бы, как предприимчивый инди-разработчик, я должен был сразу же вскочить на волну хайпа, выпустить очередной релиз и начать мечтать о монетизации...
Статья: https://apptractor.ru/info/articles/moya-malyshka-vse-esche-lyubit-samolety-i-ya-uluchshil-dlya-nee-radar.html
Платформа: инди-разработка/iOS
Упрощаем локализацию iOS-приложения со String Catalogs
Выход продукта на новые рынки сбыта — это деньги. Чем лучше ты знаешь своего клиента, тем вероятнее ты их сможешь заработать. Это правило справедливо и в обратную сторону: клиент будет более охотно пользоваться твоим продуктом, если он может разговаривать с ним на одном языке.
Сегодня я расскажу о том, как можно в значительной мере облегчить и усовершенствовать процесс перевода iOS-приложения на другие языки. Языки, разумеется, человеческие: от Swift мы отказываться не будем.
Статья: https://habr.com/ru/articles/788614/
Платформа: iOS
Выход продукта на новые рынки сбыта — это деньги. Чем лучше ты знаешь своего клиента, тем вероятнее ты их сможешь заработать. Это правило справедливо и в обратную сторону: клиент будет более охотно пользоваться твоим продуктом, если он может разговаривать с ним на одном языке.
Сегодня я расскажу о том, как можно в значительной мере облегчить и усовершенствовать процесс перевода iOS-приложения на другие языки. Языки, разумеется, человеческие: от Swift мы отказываться не будем.
Статья: https://habr.com/ru/articles/788614/
Платформа: iOS
🔥1
Bottom Dialog Android Picker - панель для выбора файлов, как в Telegram, для всех версий Android. В нем есть поиск, разворачиваемый и прокручиваемый диалог, полная настройка (цвет, текст, минимальный и максимальный размер выбранного файла), не требует runtime разрешения.
Bottom Dialog Android Picker на GitHub: https://github.com/mahdiasd/ComposeBottomDialogFilePicker
Платформа: Android
⭐️: 4
Bottom Dialog Android Picker на GitHub: https://github.com/mahdiasd/ComposeBottomDialogFilePicker
Платформа: Android
⭐️: 4
Новая пятничная подборка - видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Что вы посмотрели/послушали интересного про разработку? Киньте ссылку в комментарии.
🌐 AppFiles
•
(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
YouTube
Bring 3D to your App: Developing Native iOS Apps with Spline
@splinetool - a multi-platform and multi-dimensional design tool - has recently introduced native 3D for the Apple Ecosystem. This means that you can easily build an interactive 3D app, combine 3D scenes with native Swift projects, generate a pre-built Xcode…
👍1
Просто об архитектуре в Android
Меня зовут Артем, я Android developer BSL. В данной статье я рассмотрю один из возможных путей - простота и гармоничность на основе Clean Architecture. Важно понимать, что это всего лишь один из вариантов, который основан на моем личном видении. В мире разнообразных подходов не существует идеала, и, возможно, именно в этом заключается привлекательность процесса разработки - в бесконечных спорах и поиске оптимального решения.
Статья: https://habr.com/ru/companies/bsl/articles/788940/
Платформа: Android
Меня зовут Артем, я Android developer BSL. В данной статье я рассмотрю один из возможных путей - простота и гармоничность на основе Clean Architecture. Важно понимать, что это всего лишь один из вариантов, который основан на моем личном видении. В мире разнообразных подходов не существует идеала, и, возможно, именно в этом заключается привлекательность процесса разработки - в бесконечных спорах и поиске оптимального решения.
Статья: https://habr.com/ru/companies/bsl/articles/788940/
Платформа: Android