- PVSM.RU - https://www.pvsm.ru -
В новом дайджесте — локализация и гиперкубы, библиотеки и декларативные фреймворки, приложения, чтобы побороть зависимость от приложений, Flutter, Unity, подписки, AI для поиска уязвимостей в коде и многое другое.

В этой статье я расскажу, как мы выстроили процесс локализации, как подходим к контролю качества, как релизим переводы в зависимости от платформы, и главное — как мы добились того, что разработчики хорошо отзываются о нашей системе переводов.
Невозможно полноценно тестировать и отлаживать мобильные приложения без тестовых устройств. Таких устройств должно быть много, потому что один и тот же код на разных моделях ведёт себя по-разному. Но как организовать учёт устройств? Как сделать так, чтобы разработчики и тестировщики быстро и без волокиты получали конкретный смартфон в необходимой конфигурации?
Этот дайджест доступен в виде еженедельной рассылки [3]. А ежедневно новости мы рассылаем в
Telegram-канале [4].
iOS
• (+17) Swift Property Wrappers [5]
• (+13) 20 библиотек для эффектного iOS-приложения [6]
• (+9) Бардак на старте: постмортем на скорость запуска iOS-приложения [7]
• (+6) Проблемы архитектуры в больших проектах [8]
• (+4) Валидация данных в iOS приложениях [9]
• (+4) Swift: Контейнеры для хранения значений по ключу [10]
• (+3) Вариант работы с вебсокетами в iOS на языке Swift [11]
• Apple ограничивает использование HTML5 [12]
• СтрижПИ, или SwiftUI на практике [13]
• Как в два счёта профукать подписку на Apple Membership (и быстро её вернуть) [14]
•
Десять заповедей iOS-разработки [15]
•
Можете ли вы ответить на этот простой вопрос о Swift правильно? [16]
•
Лучшие iOS-приложения с Interaction-Driven дизайном [17]
•
Машинное обучение на устройстве с помощью SwiftUI и PyTorch Mobile [18]
•
SwiftUI: создание листаемых карточек в стиле Tinder [19]
•
Лучший способ убедиться, что ваш Swift-код больше никогда не сбойнет [20]
•
Что нового в Watch OS 6? [21]
•
Асинхронное программирование в Swift с Future и Promise [22]
•
Показ HTML-кода с картинкой в UILabel и определение нажатия на нее [23]
•
Swift: подсказки по распространенным задачам [24]
•
SwiftUI — использование Xcode 11 Canvas [25]
•
Распознавание речи и синтез речи на iOS со Swift [26]
•
Реализация контекстных меню в iOS 13 с использованием SwiftUI или UIKit [27]
•
VVVVVV для iOS и tvOS [28]
Android
• (+14) Инкрементальный annotation proccesing для ускорения gradle-сборок [29]
• (+12) Починить, хакнуть, раскопать. Решаем онлайн-квест Droid Mission [30]
• (+6) Практичные способы маппинга данных в Kotlin [31]
• (+4) Внешняя компонента для 1С Мобильной платформы (BroadcastReceiver) [32]
• Google I/O 2020 пройдет 12-14 мая [33]
• Microsoft выпустила SDK для смартфона с двумя экранами Surface Duo [34]
• Google выпустил новые приложения, чтобы побороть зависимость от смартфонов [35]
• Android Developer Roadmap 2019: карта навыков и модель развития Android-разработчика [36]
• Welltory удалили из Google Play [37]
• Руководство по Jetpack Compose [38]
• Троян Shopper скачивает приложения и оставляет отзывы в Google Play [39]
•
Изменение типов в Kotlin с typealias [40]
•
Динамическое изменение темы с помощью круговой анимации на Android [41]
•
KotlinConf 2019: что нового в Java 19: Конец Kotlin? [42]
•
Компонент JetPack Navigation в Android [43]
•
Нулевая стоимость абстракции в Kotlin [44]
•
Как использовать табы в Jetpack Compose? [45]
•
Лучшие горячие клавиши Android Studio [46]
•
SharedPreferences в Android [47]
•
Квест Google I/O 2020 [48]
•
KotlinMultiPlatform: кроссплатформенная погода на Kotlin [49]
•
RateBottomSheet: предложение оценить приложение [50]
Разработка
• (+32) Простой зомби-шутер на Unity [51]
• (+27) Физика для мобильного PvP шутера, или как мы из двумерной игру в трёхмерную переделывали [52]
• (+27) Flutter. Часть 3. Для разработчиков React Native [53]
• (+23) Движок, скриптовый язык и визуальная новелла — за 45 часов [54]
• (+18) Особенности реализации динамических списков в пользовательских интерфейсах [55]
• (+16) Основы левел-дизайна: эффект течения или как не дать заскучать игроку [56]
• (+13) Любовь в ненависть indie gamedev'a [57]
• (+10) Книга “Разработка мобильных приложений на C# для iOS и Android” [58]
• (+10) Как я делал 2D тени в Unity [59]
• (+7) Моя первая html5 игра, от Алисы Яндекса и победах в премии до мобильных приложений [60]
• (+7) Оптимизация 3D-моделей для игровой сцены [61]
• (+6) Мобильная разработка — это просто и скучно? Доклад Яндекса [62]
• (+6) Пишем шейдеры кодом в Unity LWRP [63]
• (+4) Визуальный редактор логики для Unity3d. Часть 2 [64]
• (+2) Разработка UI: кого слушать — себя или пользователя? [65]
• Podlodka #147: Web-фреймворки [66]
• Подождите, операция выполняется. Как главный факап в истории «Сбербанка Онлайн» изменил компанию [67]
• Минэкономики предлагает создать российский аналог GitHub [68]
• Основы иерархии в дизайне интерфейса [69]
• Геймификация: что и почему это работает, часть первая [70]
•
Чему (почти) 2 года Flutter научили меня [71]
•
8 трендов UI-дизайна на 2020 год [72]
•
21 способ быть плохим разработчиком [73]
•
7 способов быть хорошим разработчиком [74]
•
Как измерить свои навыки UX-дизайна? [75]
•
Nebula — открытый глоабльный сетевой стек от Slack [76]
•
9 советов, как быстро улучшить дизайн приложения [77]
•
5 принципов дизайна для лучших продуктов [78]
•
Видео Mobiconf 2019 [79]
•
LaunchDarkly: управление фичами [80]
Аналитика, маркетинг и монетизация
• (+4) Вступление в работу с возвратом пользователя: советы для Hooked-модели [81]
• (+3) Отчет App Annie за 2019 год: взгляд в прошлое, заметки на будущее [82]
• Подписки в приложениях в США выросли в 2019 на 21% до $4.6 млрд [83]
• Игры Niantic принесли $249 млн. туристического дохода [84]
• Стикеры Venmo [85]
• ФАС определила список приложений для предустановки [86]
• Реклама в приложении: чеклист [87]
• Вышла книга о локализации и культурализации игр [88]
• Расходы на мобильную рекламу в России вырастут на 22.2% [89]
• Snyk получил новые инвестиции и стал единорогом [90]
• AppsFlyer получил новые инвестиции в $210 млн. [91]
• Ты водишь! AR-игры в сториз — главный тренд 2019 года [92]
• «Додо Пицца» купила «Где Шаверма» [93]
• Гонка Slack, Microsoft Teams и Workplace: одна интрига умерла, новая зародилась [94]
• 1000 установок игры за 2 дня с помощью TikTok [95]
•
Лучше понимаем игроков с помощью аффинити обучения [96]
•
Как бороться с мошенническим шпионским ПО на Facebook? [97]
•
Проблемы ASO для мобильных игр в 2020 году [98]
AI, Устройства, IoT
• (+39) SVM. Объяснение с нуля, имплементация и подробный разбор [99]
• (+28) Хватит всё подряд называть ИИ [100]
• GitHub начал использовать AI для рекомендации задач [101]
•
Uber собрал один из самых впечатляющих стеков глубокого обучения с открытым исходным кодом [102]
← Предыдущий дайджест [103]. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту [104].
Автор: DigitalEcosystems
Источник [105]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka-pod-ios/344528
Ссылки в тексте:
[1] Локализация приложений: как мы подружили перевод и разработку: https://habr.com/ru/company/badoo/blog/485138/
[2] Гиперкуб. Как мы обеспечили разработчиков тестовыми устройствами и не потеряли их: https://habr.com/ru/company/yandex/blog/485050/
[3] рассылки: http://apptractor.us3.list-manage2.com/subscribe?u=fbdb52f18301080a3cc983f4b&id=bb7bc0a9c0
[4] Telegram-канале: https://t.me/apptractor
[5] Swift Property Wrappers: https://habr.com/ru/company/funcorp/blog/485008/
[6] 20 библиотек для эффектного iOS-приложения: https://habr.com/ru/company/edison/blog/485460/
[7] Бардак на старте: постмортем на скорость запуска iOS-приложения: https://habr.com/ru/company/dodopizzadev/blog/485200/
[8] Проблемы архитектуры в больших проектах: https://habr.com/ru/company/surfstudio/blog/485172/
[9] Валидация данных в iOS приложениях: https://habr.com/ru/post/485092/
[10] Swift: Контейнеры для хранения значений по ключу: https://habr.com/ru/post/481456/
[11] Вариант работы с вебсокетами в iOS на языке Swift: https://habr.com/ru/post/485468/
[12] Apple ограничивает использование HTML5: https://apptractor.ru/info/news/app-store-html5.html
[13] СтрижПИ, или SwiftUI на практике: https://apptractor.ru/info/articles/swiftui.html
[14] Как в два счёта профукать подписку на Apple Membership (и быстро её вернуть): https://vc.ru/dev/102467-kak-v-dva-scheta-profukat-podpisku-na-apple-membership-i-bystro-ee-vernut
[15] Десять заповедей iOS-разработки: https://andreaslydemann.com/the-ten-commandments-of-ios-development/
[16] Можете ли вы ответить на этот простой вопрос о Swift правильно?: https://medium.com/swlh/can-you-answer-this-simple-swift-question-correctly-3d2836cff7b1
[17] Лучшие iOS-приложения с Interaction-Driven дизайном: https://levelup.gitconnected.com/better-ios-apps-with-interaction-driven-design-f9187e745641
[18] Машинное обучение на устройстве с помощью SwiftUI и PyTorch Mobile: https://medium.com/flawless-app-stories/on-device-machine-learning-with-swiftui-and-pytorch-mobile-aa0dcec5d881
[19] SwiftUI: создание листаемых карточек в стиле Tinder: https://medium.com/better-programming/swiftui-create-a-tinder-style-swipeable-card-view-283e257cb102
[20] Лучший способ убедиться, что ваш Swift-код больше никогда не сбойнет: https://medium.com/flawless-app-stories/the-best-ways-to-make-sure-your-swift-code-never-crashes-again-d68560b84b97
[21] Что нового в Watch OS 6?: https://medium.com/flawless-app-stories/whats-new-in-watch-os-6-8d8c3b4f531c
[22] Асинхронное программирование в Swift с Future и Promise: https://www.vadimbulavin.com/asynchronous-programming-with-future-and-promise-in-swift-with-combine-framework/
[23] Показ HTML-кода с картинкой в UILabel и определение нажатия на нее: https://medium.com/flawless-app-stories/display-image-containing-html-using-uilabel-and-detect-if-an-image-is-tapped-in-your-ios-apps-e042c6e614d1
[24] Swift: подсказки по распространенным задачам: https://techhype.io/?story=swift-general-task-cheatsheet
[25] SwiftUI — использование Xcode 11 Canvas: https://medium.com/@keremkaratal/swiftui-exploiting-xcode-11-canvas-2fe46d66c3d8
[26] Распознавание речи и синтез речи на iOS со Swift: https://heartbeat.fritz.ai/speech-recognition-and-speech-synthesis-on-ios-with-swift-d1a63e469cd9
[27] Реализация контекстных меню в iOS 13 с использованием SwiftUI или UIKit: https://medium.com/better-programming/implementing-context-menus-in-ios-13-using-swiftui-or-uikit-f6f629bbd561
[28] VVVVVV для iOS и tvOS: https://apptractor.ru/info/github/vvvvvv.html
[29] Инкрементальный annotation proccesing для ускорения gradle-сборок: https://habr.com/ru/company/hh/blog/484918/
[30] Починить, хакнуть, раскопать. Решаем онлайн-квест Droid Mission: https://habr.com/ru/company/yandex/blog/484876/
[31] Практичные способы маппинга данных в Kotlin: https://habr.com/ru/post/485416/
[32] Внешняя компонента для 1С Мобильной платформы (BroadcastReceiver): https://habr.com/ru/post/479132/
[33] Google I/O 2020 пройдет 12-14 мая: https://apptractor.ru/info/conferences/google-i-o-2020.html
[34] Microsoft выпустила SDK для смартфона с двумя экранами Surface Duo: https://apptractor.ru/info/news/microsoft-surface-duo-sdk.html
[35] Google выпустил новые приложения, чтобы побороть зависимость от смартфонов: https://apptractor.ru/info/apps/google-digital-wellbeing-apps.html
[36] Android Developer Roadmap 2019: карта навыков и модель развития Android-разработчика: https://apptractor.ru/learn/android-developer-roadmap-2019.html
[37] Welltory удалили из Google Play: https://apptractor.ru/info/news/welltory-out.html
[38] Руководство по Jetpack Compose: https://apptractor.ru/info/github/jetpack-compose-tutorial.html
[39] Троян Shopper скачивает приложения и оставляет отзывы в Google Play: https://apptractor.ru/info/news/shopper.html
[40] Изменение типов в Kotlin с typealias: https://medium.com/androiddevelopers/alter-type-with-typealias-4c03302fbe43
[41] Динамическое изменение темы с помощью круговой анимации на Android: https://proandroiddev.com/change-theme-dynamically-with-circular-reveal-animation-on-android-8cd574f5f0d8
[42] KotlinConf 2019: что нового в Java 19: Конец Kotlin?: https://techhype.io/?story=kotlinconf-2019-whats-new-in-java-19-the-end-of-kotlin-by-jake-wharton
[43] Компонент JetPack Navigation в Android: https://medium.com/better-programming/jitpack-navigation-component-in-android-944165c35f54
[44] Нулевая стоимость абстракции в Kotlin: https://medium.com/androiddevelopers/zero-cost-abstractions-in-kotlin-19b953f3a936
[45] Как использовать табы в Jetpack Compose?: https://proandroiddev.com/how-to-use-tabs-in-jetpack-compose-41491be61c39
[46] Лучшие горячие клавиши Android Studio: https://medium.com/better-programming/top-android-studio-shortcuts-d0d04cbd41ae
[47] SharedPreferences в Android: https://heartbeat.fritz.ai/sharedpreferences-in-android-818e3b614b85
[48] Квест Google I/O 2020: https://twitter.com/googledevs/status/1220360633293533185
[49] KotlinMultiPlatform: кроссплатформенная погода на Kotlin: https://apptractor.ru/info/github/kotlinmultiplatform-2.html
[50] RateBottomSheet: предложение оценить приложение: https://apptractor.ru/info/github/ratebottomsheet.html
[51] Простой зомби-шутер на Unity: https://habr.com/ru/company/otus/blog/485210/
[52] Физика для мобильного PvP шутера, или как мы из двумерной игру в трёхмерную переделывали: https://habr.com/ru/company/pixonic/blog/485150/
[53] Flutter. Часть 3. Для разработчиков React Native: https://habr.com/ru/company/funcorp/blog/484284/
[54] Движок, скриптовый язык и визуальная новелла — за 45 часов: https://habr.com/ru/post/483818/
[55] Особенности реализации динамических списков в пользовательских интерфейсах: https://habr.com/ru/company/lsfusion/blog/484648/
[56] Основы левел-дизайна: эффект течения или как не дать заскучать игроку: https://habr.com/ru/post/484878/
[57] Любовь в ненависть indie gamedev'a: https://habr.com/ru/post/485288/
[58] Книга “Разработка мобильных приложений на C# для iOS и Android”: https://habr.com/ru/company/microsoft/blog/484602/
[59] Как я делал 2D тени в Unity: https://habr.com/ru/post/484744/
[60] Моя первая html5 игра, от Алисы Яндекса и победах в премии до мобильных приложений: https://habr.com/ru/post/485464/
[61] Оптимизация 3D-моделей для игровой сцены: https://habr.com/ru/company/plarium/blog/484792/
[62] Мобильная разработка — это просто и скучно? Доклад Яндекса: https://habr.com/ru/company/yandex/blog/485358/
[63] Пишем шейдеры кодом в Unity LWRP: https://habr.com/ru/post/485018/
[64] Визуальный редактор логики для Unity3d. Часть 2: https://habr.com/ru/post/466187/
[65] Разработка UI: кого слушать — себя или пользователя?: https://habr.com/ru/company/leader-id/blog/485226/
[66] Podlodka #147: Web-фреймворки: https://apptractor.ru/info/media/podlodka-147.html
[67] Подождите, операция выполняется. Как главный факап в истории «Сбербанка Онлайн» изменил компанию: https://apptractor.ru/info/media/zapuskzavtra-sber.html
[68] Минэкономики предлагает создать российский аналог GitHub: https://apptractor.ru/info/news/github-ru.html
[69] Основы иерархии в дизайне интерфейса: https://ux.pub/osnovy-ierarhii-v-dizayne-interfeysa-ui/
[70] Геймификация: что и почему это работает, часть первая: https://vc.ru/marketing/102717-geymifikaciya-chto-i-pochemu-eto-rabotaet-chast-pervaya
[71] Чему (почти) 2 года Flutter научили меня: https://medium.com/flutter-community/what-almost-2-years-using-flutter-had-taught-me-661ac303755
[72] 8 трендов UI-дизайна на 2020 год: https://uxdesign.cc/8-ui-ux-design-trends-for-2020-68e37b0278f6
[73] 21 способ быть плохим разработчиком: https://medium.com/nickonsoftware/twenty-one-ways-to-be-a-crappy-software-developer-c69e4b39c5df
[74] 7 способов быть хорошим разработчиком: https://medium.com/better-programming/7-pieces-of-advice-to-be-a-successful-software-engineer-ef827af6a462
[75] Как измерить свои навыки UX-дизайна?: https://medium.muz.li/how-to-measure-your-ux-design-skills-d77482939ead
[76] Nebula — открытый глоабльный сетевой стек от Slack: https://slack.engineering/introducing-nebula-the-open-source-global-overlay-network-from-slack-884110a5579
[77] 9 советов, как быстро улучшить дизайн приложения: https://uxdesign.cc/9-simple-tips-to-improve-your-ui-designs-fast-377c5113ac82
[78] 5 принципов дизайна для лучших продуктов: https://uxdesign.cc/5-design-principles-for-better-products-4ad336955e2d
[79] Видео Mobiconf 2019: https://apptractor.ru/info/media/mobiconf-2019.html
[80] LaunchDarkly: управление фичами: https://apptractor.ru/info/techhype/launchdarkly.html
[81] Вступление в работу с возвратом пользователя: советы для Hooked-модели: https://habr.com/ru/post/485454/
[82] Отчет App Annie за 2019 год: взгляд в прошлое, заметки на будущее: https://habr.com/ru/company/digital-ecosystems/blog/485352/
[83] Подписки в приложениях в США выросли в 2019 на 21% до $4.6 млрд: https://apptractor.ru/info/analytics/subscription-apps-2019.html
[84] Игры Niantic принесли $249 млн. туристического дохода: https://apptractor.ru/info/news/niantic-249.html
[85] Стикеры Venmo: https://apptractor.ru/info/techhype/venmo-stickers.html
[86] ФАС определила список приложений для предустановки: https://apptractor.ru/info/news/fas-apps.html
[87] Реклама в приложении: чеклист: https://apptractor.ru/marketing-monetization/cheklist-dlya-reklamnoy-monetizatsii-prilozheniy.html
[88] Вышла книга о локализации и культурализации игр: https://apptractor.ru/marketing-monetization/localization/the-world-your-oyster.html
[89] Расходы на мобильную рекламу в России вырастут на 22.2%: https://apptractor.ru/marketing-monetization/ad-spend-forecasts.html
[90] Snyk получил новые инвестиции и стал единорогом: https://apptractor.ru/info/news/snyk.html
[91] AppsFlyer получил новые инвестиции в $210 млн.: https://apptractor.ru/info/news/appsflyer-210.html
[92] Ты водишь! AR-игры в сториз — главный тренд 2019 года: https://apptractor.ru/marketing-monetization/ar-games-stories.html
[93] «Додо Пицца» купила «Где Шаверма»: https://apptractor.ru/info/news/gde-shaverma.html
[94] Гонка Slack, Microsoft Teams и Workplace: одна интрига умерла, новая зародилась: https://gopractice.ru/race-slack-teams-workplace/
[95] 1000 установок игры за 2 дня с помощью TikTok: https://vc.ru/marketing/102639-1000-ustanovok-igry-za-2-dnya-s-pomoshchyu-tiktok
[96] Лучше понимаем игроков с помощью аффинити обучения: https://medium.com/googleplaydev/understand-your-players-better-with-affinity-learnings-55a49532d163
[97] Как бороться с мошенническим шпионским ПО на Facebook?: https://jakubmamulski.community/2020/01/19/how-to-deal-with-a-spyware-scamming-scheme-on-facebook/
[98] Проблемы ASO для мобильных игр в 2020 году: https://thetool.io/2020/thetalks-episode2-aso-mobile-games
[99] SVM. Объяснение с нуля, имплементация и подробный разбор: https://habr.com/ru/company/ods/blog/484148/
[100] Хватит всё подряд называть ИИ: https://habr.com/ru/post/484716/
[101] GitHub начал использовать AI для рекомендации задач: https://apptractor.ru/info/news/github-good-first-issues.html
[102] Uber собрал один из самых впечатляющих стеков глубокого обучения с открытым исходным кодом: https://towardsdatascience.com/uber-has-been-quietly-assembling-one-of-the-most-impressive-open-source-deep-learning-stacks-in-b645656ddddb
[103] Предыдущий дайджест: https://habr.com/ru/company/digital-ecosystems/blog/484542/
[104] почту: mailto:lbogolubov@gmail.com
[105] Источник: https://habr.com/ru/post/485524/?utm_source=habrahabr&utm_medium=rss&utm_campaign=485524
Нажмите здесь для печати.