Как сделать свой сервер мобильному разработчику, если он никогда такого не делал?
У меня ушел один месяц на создание сервера. Две недели ушло на понимание функционала и сборку прототипа. Одну неделю я писал Ktor-сервер на Kotlin и визуал в приложении на Flutter. И еще одну неделю тестировал. И я хочу, чтобы вы сэкономили две недели, когда решите создать ваш бэкэнд.
Зачем мне свой сервер?
Два месяца назад я писал статью, о том что делаю приложение для изучения английских слов нейрокартинками «Как запомнить что-нибудь навсегда?» и она вас заинтересовала. Для приложения мне понадобился бэкэнд. Стало нужно уметь сохранять прогресс аккаунтов, отправлять пуши и на перспективу уметь делать обмен статистикой, достижения и соревнования. Нужно было выбрать как это сделать.
А чего не Firebase?
Я люблю Firebase, он удобный, хорошо-известный и масштабируемый. Но он не контролируется, его стало сложнее оплачивать из РФ, гипотетически его могут отключить совсем и если делать что-то сложнее удаленного хранилища он не подходит, а что-то не может.
https://habr.com/ru/articles/764790/
#Android
👉 @developer_mobila
У меня ушел один месяц на создание сервера. Две недели ушло на понимание функционала и сборку прототипа. Одну неделю я писал Ktor-сервер на Kotlin и визуал в приложении на Flutter. И еще одну неделю тестировал. И я хочу, чтобы вы сэкономили две недели, когда решите создать ваш бэкэнд.
Зачем мне свой сервер?
Два месяца назад я писал статью, о том что делаю приложение для изучения английских слов нейрокартинками «Как запомнить что-нибудь навсегда?» и она вас заинтересовала. Для приложения мне понадобился бэкэнд. Стало нужно уметь сохранять прогресс аккаунтов, отправлять пуши и на перспективу уметь делать обмен статистикой, достижения и соревнования. Нужно было выбрать как это сделать.
А чего не Firebase?
Я люблю Firebase, он удобный, хорошо-известный и масштабируемый. Но он не контролируется, его стало сложнее оплачивать из РФ, гипотетически его могут отключить совсем и если делать что-то сложнее удаленного хранилища он не подходит, а что-то не может.
https://habr.com/ru/articles/764790/
#Android
👉 @developer_mobila
Handling Android Permissions in Repository
В настоящее время существует два предпочтительных подхода к построению архитектуры Android. Первый - это Google Android Architecture, а второй - Clean Architecture.
Важнейшей частью архитектуры является слой данных, который включает в себя репозитории, предоставляющие данные остальным частям приложения. Репозитории содержат логику получения данных, например, получение текущего местоположения, получение данных с других устройств через Bluetooth и т.д. Однако начиная с Android 6 все стало сложнее. Было введено усовершенствование системы безопасности, предполагающее мелкозернистый контроль доступа, требующий запрашивать разрешения пользователя на доступ к важной информации или функциям. Этот механизм неудобен, так как предполагает запрос разрешений на уровне представления, через Activities или Fragments, а затем получение данных из хранилищ, что приводит к разбросу логики по разным уровням.
https://medium.com/@vuert/handling-android-permissions-in-repository-9c062b4ea85e
#Android
👉 @developer_mobila
В настоящее время существует два предпочтительных подхода к построению архитектуры Android. Первый - это Google Android Architecture, а второй - Clean Architecture.
Важнейшей частью архитектуры является слой данных, который включает в себя репозитории, предоставляющие данные остальным частям приложения. Репозитории содержат логику получения данных, например, получение текущего местоположения, получение данных с других устройств через Bluetooth и т.д. Однако начиная с Android 6 все стало сложнее. Было введено усовершенствование системы безопасности, предполагающее мелкозернистый контроль доступа, требующий запрашивать разрешения пользователя на доступ к важной информации или функциям. Этот механизм неудобен, так как предполагает запрос разрешений на уровне представления, через Activities или Fragments, а затем получение данных из хранилищ, что приводит к разбросу логики по разным уровням.
https://medium.com/@vuert/handling-android-permissions-in-repository-9c062b4ea85e
#Android
👉 @developer_mobila
Purr: просмотр и поиск в логах на Android
Purr — это инструмент командной строки zsh для просмотра и поиска в логах Android. Он использует fzf для обеспечения простого, но мощного пользовательского интерфейса, возможностей нечеткого поиска и многого другого.
Хотя logcat в Android Studio достаточен для большинства приложений, он ломается в таких ситуациях, как доступ только через терминал или когда требуется быстрый доступ к нескольким устройствам. При выполнении разработки на самой операционной системе Android разработчики возвращаются к использованию сырого adb logcat в shell.
Это неоптимально и уходит много времени на написание grep-запросов и копание в сплошном нефильтрованном сером тексте с плохим пользовательским опытом. Purr предназначен для решения этой проблемы — это мощная программа просмотра логов, работающая полностью в shell, способная быстро просматривать миллионы логов.
https://github.com/google/purr
#Android
👉 @developer_mobila
Purr — это инструмент командной строки zsh для просмотра и поиска в логах Android. Он использует fzf для обеспечения простого, но мощного пользовательского интерфейса, возможностей нечеткого поиска и многого другого.
Хотя logcat в Android Studio достаточен для большинства приложений, он ломается в таких ситуациях, как доступ только через терминал или когда требуется быстрый доступ к нескольким устройствам. При выполнении разработки на самой операционной системе Android разработчики возвращаются к использованию сырого adb logcat в shell.
Это неоптимально и уходит много времени на написание grep-запросов и копание в сплошном нефильтрованном сером тексте с плохим пользовательским опытом. Purr предназначен для решения этой проблемы — это мощная программа просмотра логов, работающая полностью в shell, способная быстро просматривать миллионы логов.
https://github.com/google/purr
#Android
👉 @developer_mobila
Измерение задержки старта iOS-приложений в масштабе Uber
Изменив архитектуру измерения задержки запуска, мы можем более надежно измерять эту метрику в мире предварительного прогрева.
В Uber мы одержимы идеей обеспечения высокой производительности и надежности для наших партнеров и клиентов. Мы относимся к снижению производительности приложения так же, как и к любым другим функциональным регрессиям.
Прежде чем вкладывать усилия в повышение производительности и надежности, мы должны понять, как работает наше приложение в реальных условиях. Мы используем различные инструменты для получения показателей, которые позволяют нам измерить производительность и надежность приложения. Мы также устанавливаем базовые показатели, чтобы гарантировать, что разработка новых функций будет соответствовать высокой планке производительности и надежности.
https://www.uber.com/en-LB/blog/measuring-performance-for-ios-apps-at-uber-scale/
#ios
👉 @developer_mobila
Изменив архитектуру измерения задержки запуска, мы можем более надежно измерять эту метрику в мире предварительного прогрева.
В Uber мы одержимы идеей обеспечения высокой производительности и надежности для наших партнеров и клиентов. Мы относимся к снижению производительности приложения так же, как и к любым другим функциональным регрессиям.
Прежде чем вкладывать усилия в повышение производительности и надежности, мы должны понять, как работает наше приложение в реальных условиях. Мы используем различные инструменты для получения показателей, которые позволяют нам измерить производительность и надежность приложения. Мы также устанавливаем базовые показатели, чтобы гарантировать, что разработка новых функций будет соответствовать высокой планке производительности и надежности.
https://www.uber.com/en-LB/blog/measuring-performance-for-ios-apps-at-uber-scale/
#ios
👉 @developer_mobila
12 ошибок при публикации приложения в RuStore — и как их избежать
Разработка приложения — трудоёмкий процесс, который требует множества усилий и времени. Но, как только заканчивается кодинг, необходимо опубликовать созданный продукт на цифровой витрине, чтобы пользователи могли его скачать и использовать. В статье рассмотрим 12 наиболее распространённых ошибок, которые допускают разработчики при публикации приложений в RuStore.
https://habr.com/ru/companies/vk/articles/737864/
#Android
👉 @developer_mobila
Разработка приложения — трудоёмкий процесс, который требует множества усилий и времени. Но, как только заканчивается кодинг, необходимо опубликовать созданный продукт на цифровой витрине, чтобы пользователи могли его скачать и использовать. В статье рассмотрим 12 наиболее распространённых ошибок, которые допускают разработчики при публикации приложений в RuStore.
https://habr.com/ru/companies/vk/articles/737864/
#Android
👉 @developer_mobila
О многообразии форм однонаправленных архитектур в Swift
Как SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет
Я уже писал о концепции “контейнеров состояний” в 2017 году. Шесть лет спустя мне все еще нравится строить на их основе большинство своих приложений, используя эту концепцию для двух главных слоев внутри моих приложений:
Слой представления: модель представления — это «контейнер состояния представления» (view state container), моделирующий состояние представления и бизнес-логику.
Доменный слой: обычно агрегирует корневые модели (или репозитории/сервисы данных), представляющие бизнес-правила и сохраняющие целостность и согласованность в рамках определенного ограниченного контекста (или сущности) в приложении.
Однако с 2017 года многое изменилось. В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.
https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e
#ios
👉 @developer_mobila
Как SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет
Я уже писал о концепции “контейнеров состояний” в 2017 году. Шесть лет спустя мне все еще нравится строить на их основе большинство своих приложений, используя эту концепцию для двух главных слоев внутри моих приложений:
Слой представления: модель представления — это «контейнер состояния представления» (view state container), моделирующий состояние представления и бизнес-логику.
Доменный слой: обычно агрегирует корневые модели (или репозитории/сервисы данных), представляющие бизнес-правила и сохраняющие целостность и согласованность в рамках определенного ограниченного контекста (или сущности) в приложении.
Однако с 2017 года многое изменилось. В 2019 году Apple представила миру SwiftUI. И два года спустя появился async/await. Хоть мы и склонны думать, что хорошие архитектуры не должны зависеть от специфик фреймворков, хорошие архитектуры все-таки являются лояльными гражданами тех же самых фреймворков и общей экосистемы. Так… как же SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет? Давайте посмотрим.
https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e
#ios
👉 @developer_mobila
Medium
iOS Architecture: A State Container based approach
This article is the first in a three-part series. You can find the second one here and the third, and final one here. I find it incredibly difficult to talk about architecture. Unlike other topics on…
Media is too big
VIEW IN TELEGRAM
Ускоряем написание кода
Делюсь популярными утилитами и фичами IDE, которые вы можете использовать, чтобы писать меньше кода == меньше багов
0:00 Вступление
0:44 Annotation Processing
2:46 Kotlin Symbol Processing
4:09 AvitoTech
4:37 Генерация кода из Gradle
5:08 Плагины Kotlin компилятора
6:20 Возможности IDE
7:50 Плагины IDE
8:43 Шаблоны Android Studio
9:18 Geminio
11:13 AI помощники
14:00 Заключение
источник
#Android
👉 @developer_mobila
Делюсь популярными утилитами и фичами IDE, которые вы можете использовать, чтобы писать меньше кода == меньше багов
0:00 Вступление
0:44 Annotation Processing
2:46 Kotlin Symbol Processing
4:09 AvitoTech
4:37 Генерация кода из Gradle
5:08 Плагины Kotlin компилятора
6:20 Возможности IDE
7:50 Плагины IDE
8:43 Шаблоны Android Studio
9:18 Geminio
11:13 AI помощники
14:00 Заключение
источник
#Android
👉 @developer_mobila
Как не писать сетевой слой в Android-приложениях с помощью автоматической генерации OpenAPI
Разрабатываемые приложения со временем имеют свойство увеличиваться и обрастать новой функциональностью. Как правило, сетевой слой при этом также разрастается, порой до немыслимых размеров. Поддерживать все это руками в какой-то момент становится довольно сложно. Мы отлично прочувствовали на себе все «прелести» такого подхода и в определенный момент решили обратить взор на возможности автоматической генерации. Поиски увенчались успехом, и теперь при разработке мы не пишем ни строчки сетевого кода сами.
Я Сергей Шевцов, Android-разработчик в компании KODE. В статье расскажу, как мы работаем с сетевым слоем в наших приложениях. Возможно, это поможет вам сэкономить многие часы написания сетевого кода.
https://habr.com/ru/articles/737010/
#Android
👉 @developer_mobila
Разрабатываемые приложения со временем имеют свойство увеличиваться и обрастать новой функциональностью. Как правило, сетевой слой при этом также разрастается, порой до немыслимых размеров. Поддерживать все это руками в какой-то момент становится довольно сложно. Мы отлично прочувствовали на себе все «прелести» такого подхода и в определенный момент решили обратить взор на возможности автоматической генерации. Поиски увенчались успехом, и теперь при разработке мы не пишем ни строчки сетевого кода сами.
Я Сергей Шевцов, Android-разработчик в компании KODE. В статье расскажу, как мы работаем с сетевым слоем в наших приложениях. Возможно, это поможет вам сэкономить многие часы написания сетевого кода.
https://habr.com/ru/articles/737010/
#Android
👉 @developer_mobila
Android 14: что появилось нового и что изменилось? Возможности новой версии мобильной ОС
Несколько дней назад появилась новость о выходе новой версии мобильной операционной системы Android 14. На данный момент исходники прошивки готовы для серии смартфонов Pixel, а чуть позже выйдут обновления для Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Кроме того, готовы и универсальные сборки для разных устройств на базе архитектур ARM64 и x86_64. Давайте внимательно посмотрим на улучшения и дополнения, которые появились в новой версии.
https://habr.com/ru/companies/ru_mts/articles/766792/
#Android
👉 @developer_mobila
Несколько дней назад появилась новость о выходе новой версии мобильной операционной системы Android 14. На данный момент исходники прошивки готовы для серии смартфонов Pixel, а чуть позже выйдут обновления для Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Кроме того, готовы и универсальные сборки для разных устройств на базе архитектур ARM64 и x86_64. Давайте внимательно посмотрим на улучшения и дополнения, которые появились в новой версии.
https://habr.com/ru/companies/ru_mts/articles/766792/
#Android
👉 @developer_mobila
Swift Concurrency Instrument: чем он полезен iOS-разработчику
При работе со Swift Concurrency часто хочется посмотреть, как работают созданные асинхронные задачи в приложении: узнать количество задач, время создания и длительность их выполнения. Посмотреть, на каких потоках и с какими приоритетами они выполняются.
В Xcode 14 появился специальный шаблон профилирования в Xcode Instruments — Swift Concurrency. Он позволяет наглядно визуализировать работу с асинхронным кодом.
Я — Светлана Гладышева, iOS-разработчик компании Surf. Давайте разберёмся, что нам может показать Swift Concurrency шаблон и как его использовать. А также на простых примерах посмотрим, какие ошибки можно обнаружить с его помощью.
https://habr.com/ru/companies/surfstudio/articles/737578/
#ios
👉 @developer_mobila
При работе со Swift Concurrency часто хочется посмотреть, как работают созданные асинхронные задачи в приложении: узнать количество задач, время создания и длительность их выполнения. Посмотреть, на каких потоках и с какими приоритетами они выполняются.
В Xcode 14 появился специальный шаблон профилирования в Xcode Instruments — Swift Concurrency. Он позволяет наглядно визуализировать работу с асинхронным кодом.
Я — Светлана Гладышева, iOS-разработчик компании Surf. Давайте разберёмся, что нам может показать Swift Concurrency шаблон и как его использовать. А также на простых примерах посмотрим, какие ошибки можно обнаружить с его помощью.
https://habr.com/ru/companies/surfstudio/articles/737578/
#ios
👉 @developer_mobila
Как подключить Lombok к Android Studio
Введение
Для тех, кто еще не перешел на Kotlin, или работает с легаси, код которого в ближайшее время не будет переведен на него, использование Lombok сильно уменьшает количество шаблонного кода. Он скрывает геттеры, сеттеры, конструкторы и другие шаблонные методы за аннотациями.
Например, вместо кода:
Мы просто укажем нужные аннотации, остальное Lombok сгенерирует под капотом:
https://habr.com/ru/articles/737698/
#Android
👉 @developer_mobila
Введение
Для тех, кто еще не перешел на Kotlin, или работает с легаси, код которого в ближайшее время не будет переведен на него, использование Lombok сильно уменьшает количество шаблонного кода. Он скрывает геттеры, сеттеры, конструкторы и другие шаблонные методы за аннотациями.
Например, вместо кода:
public class UserDto {
private String name;
public HumanDto(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
Мы просто укажем нужные аннотации, остальное Lombok сгенерирует под капотом:
@Data
@AllArgsConstructor
public class UserDto {
private String name;
}
https://habr.com/ru/articles/737698/
#Android
👉 @developer_mobila
Мгновенное взаимодействие с жестами панорамирования
Apple выпустила потрясающий видеоролик для WWDC 2018 под названием Designing Fluid Interfaces, и один из ключевых выводов из него, который сделал один из докладчиков, Чан Карунамуни, звучит так: "Ищите задержки повсюду. Все должно реагировать мгновенно". (6:28)
Отличным примером этого является вид прокрутки в iOS. Если вы пролистываете контакты и касаетесь пальцем экрана, то прокрутка мгновенно останавливается и позволяет вам изменить ее положение. Подобное мгновенное поведение очень важно для наших собственных представлений, взаимодействий и анимаций.
https://christianselig.com/2023/05/instant-pan-gesture-interactions/
#ios
👉 @developer_mobila
Apple выпустила потрясающий видеоролик для WWDC 2018 под названием Designing Fluid Interfaces, и один из ключевых выводов из него, который сделал один из докладчиков, Чан Карунамуни, звучит так: "Ищите задержки повсюду. Все должно реагировать мгновенно". (6:28)
Отличным примером этого является вид прокрутки в iOS. Если вы пролистываете контакты и касаетесь пальцем экрана, то прокрутка мгновенно останавливается и позволяет вам изменить ее положение. Подобное мгновенное поведение очень важно для наших собственных представлений, взаимодействий и анимаций.
https://christianselig.com/2023/05/instant-pan-gesture-interactions/
#ios
👉 @developer_mobila
Проектируем быстрые действия в iOS: 58 гайдлайнов
Быстрые действия – полезная функция приложений в iOS, позволяющая упростить путь клиента и сократить число действий, требуемых для выполнения задач. Несмотря пользу, применяют ее далеко не все, а у тех, кто применяет, часто есть потенциал для улучшения.
Итак, если у вас iPhone, давайте зажмем иконку приложения своей компании, посмотрим, что у нее в быстрых действиях, и пройдемся по чек-листу. Напишите потом в комментариях, все ли идеально или нашли, что можно улучшить.
https://habr.com/ru/articles/737452/
#ios
👉 @developer_mobila
Быстрые действия – полезная функция приложений в iOS, позволяющая упростить путь клиента и сократить число действий, требуемых для выполнения задач. Несмотря пользу, применяют ее далеко не все, а у тех, кто применяет, часто есть потенциал для улучшения.
Итак, если у вас iPhone, давайте зажмем иконку приложения своей компании, посмотрим, что у нее в быстрых действиях, и пройдемся по чек-листу. Напишите потом в комментариях, все ли идеально или нашли, что можно улучшить.
https://habr.com/ru/articles/737452/
#ios
👉 @developer_mobila
How to create Responsive Layouts in Jetpack Compose
https://www.composables.com/tutorials/responsive-layout
#Android
👉 @developer_mobila
@Composable
fun ListDetailsExample() {
BoxWithConstraints(Modifier.fillMaxSize()) {
val isSmallScreen = maxWidth < 600.dp
if (isSmallScreen) {
ConversationsList()
} else {
var conversationId by remember {
mutableStateOf(-1)
}
Row(Modifier.fillMaxWidth()) {
ConversationsList(
modifier = Modifier.weight(1f),
onConversationSelected = {
conversationId = it
})
ConversationDetails(
modifier = Modifier.weight(2f),
selectedConversation = conversationId
)
}
}
}
}
https://www.composables.com/tutorials/responsive-layout
#Android
👉 @developer_mobila
Composables UI
🚀 How to create Responsive Layouts in Jetpack Compose
Building layouts for screens big and small
Построение графа зависимостей Objective-C файлов
В ряде случаев приложение, написанное на языке Objective-C, для улучшения функционирования и расширения его возможностей, приходится переписывать на Swift. Осуществление перевода на язык Swift сразу всего кода не всегда рационально, гораздо разумным представляется переписывание класса за классом. При этом сборка становится гибридной и соответственно необходимо делать так, чтобы все объявления были видимы в коде на обоих языках.
Ввиду того, что крупные проекты содержат множество файлов понять как последние связаны друг с другом может быть затруднительным. В этой связи прежде чем приступить к переводу логичным явилось бы создание скриптов, которые позволят визуализировать зависимости между файлами Objective-C и сделать анализ проекта более удобным и понятным.
https://habr.com/ru/articles/736516/
#ios
👉 @developer_mobila
В ряде случаев приложение, написанное на языке Objective-C, для улучшения функционирования и расширения его возможностей, приходится переписывать на Swift. Осуществление перевода на язык Swift сразу всего кода не всегда рационально, гораздо разумным представляется переписывание класса за классом. При этом сборка становится гибридной и соответственно необходимо делать так, чтобы все объявления были видимы в коде на обоих языках.
Ввиду того, что крупные проекты содержат множество файлов понять как последние связаны друг с другом может быть затруднительным. В этой связи прежде чем приступить к переводу логичным явилось бы создание скриптов, которые позволят визуализировать зависимости между файлами Objective-C и сделать анализ проекта более удобным и понятным.
https://habr.com/ru/articles/736516/
#ios
👉 @developer_mobila
ViewCompositionStrategy Demystified
В Jetpack Compose композиция представляет собой древовидную структуру, описывающую пользовательский интерфейс вашего приложения, и создается путем запуска композиций. Когда композиция больше не нужна, состояние перестает отслеживаться Jetpack Compose, и композиция утилизируется, чтобы освободить ресурсы.
https://medium.com/androiddevelopers/viewcompositionstrategy-demystefied-276427152f34
#Android
👉 @developer_mobila
В Jetpack Compose композиция представляет собой древовидную структуру, описывающую пользовательский интерфейс вашего приложения, и создается путем запуска композиций. Когда композиция больше не нужна, состояние перестает отслеживаться Jetpack Compose, и композиция утилизируется, чтобы освободить ресурсы.
https://medium.com/androiddevelopers/viewcompositionstrategy-demystefied-276427152f34
#Android
👉 @developer_mobila
Android Speech To Text — The missing guide
https://medium.com/@andraz.pajtler/android-speech-to-text-the-missing-guide-part-1-824e2636c45a
#Android
👉 @developer_mobila
https://medium.com/@andraz.pajtler/android-speech-to-text-the-missing-guide-part-1-824e2636c45a
#Android
👉 @developer_mobila
This media is not supported in your browser
VIEW IN TELEGRAM
Как определить пользовательские действия с URL для текстовых представлений SwiftUI
С выходом iOS 15 компания Apple добавила в представление SwiftUI Text встроенную поддержку формата markdown. Эта функция позволяет разработчикам легко создавать строки с гиперссылками, которые могут открывать веб-сайты, отправлять электронные письма или совершать телефонные звонки. Хотя в большинстве случаев этой функции достаточно, есть ситуации, когда разработчики хотят получить больший контроль над тем, что происходит при нажатии на ссылку.
https://swiftsenpai.com/development/swiftui-custom-url-action/
#ios
👉 @developer_mobila
С выходом iOS 15 компания Apple добавила в представление SwiftUI Text встроенную поддержку формата markdown. Эта функция позволяет разработчикам легко создавать строки с гиперссылками, которые могут открывать веб-сайты, отправлять электронные письма или совершать телефонные звонки. Хотя в большинстве случаев этой функции достаточно, есть ситуации, когда разработчики хотят получить больший контроль над тем, что происходит при нажатии на ссылку.
https://swiftsenpai.com/development/swiftui-custom-url-action/
#ios
👉 @developer_mobila
Всем, привет, мы исследовательское агентство SmartMinds и сейчас проводим опрос среди IT специалистов. Что хотим узнать: что важно при выборе работодателя, какие каналы являются эффективными при поиске работы и ходите ли вы на мероприятия для IT. Опрос анонимный, займет не более 3-х минут и мы будем благодарны всем, кто примет участие.
Пройти опрос
Пройти опрос
Лучший способ структурирования проекта для iOS
Очень важно поддерживать структуру проекта в чистоте и организованности. Когда вы работаете над большим проектом с сотнями файлов в команде, вы хотите, чтобы вы и ваши товарищи могли найти все, что вам нужно, в течение нескольких секунд. Проект должен быть организован с самого начала, и все члены команды должны следовать той структуре, которая у вас есть, потому что некоторые разработчики могут уйти, а новые могут присоединиться к вашей команде.
В этой статье я расскажу вам о некоторых распространенных ошибках, которые допускают младшие разработчики, и поделюсь тем, как я структурирую каждый проект, над которым работаю.
https://levelup.gitconnected.com/the-best-way-to-struct-your-ios-project-a2daee7dcb45
#ios
👉 @developer_mobila
Очень важно поддерживать структуру проекта в чистоте и организованности. Когда вы работаете над большим проектом с сотнями файлов в команде, вы хотите, чтобы вы и ваши товарищи могли найти все, что вам нужно, в течение нескольких секунд. Проект должен быть организован с самого начала, и все члены команды должны следовать той структуре, которая у вас есть, потому что некоторые разработчики могут уйти, а новые могут присоединиться к вашей команде.
В этой статье я расскажу вам о некоторых распространенных ошибках, которые допускают младшие разработчики, и поделюсь тем, как я структурирую каждый проект, над которым работаю.
https://levelup.gitconnected.com/the-best-way-to-struct-your-ios-project-a2daee7dcb45
#ios
👉 @developer_mobila