❗️ Как использовать Deep Links и Universal Link iOS-разработчику?
🔥 Приглашаем 26 мая в 20:00 мск на бесплатный вебинар в OTUS на котором мы покажем, как правильно организовать навигацию с помощью Deep Links и Universal Links в SwiftUI.
📚 На вебинаре:
— Расскажем о технологии Deep links на iOS.
— Произведем настройку сервера и клиентского приложения для работы с этой технологией.
— На примере приложения на SwiftUI мы покажем, как можно открыть определенный экран с помощью Deep links.
👉🏻 Регистрация на вебинар: https://otus.pw/Z7Kn/
❗️ Не упустите шанс узнать больше о технологии, которая может значительно улучшить пользовательский опыт в вашем приложении.
Вебинар пройдет в рамках онлайн-курса «iOS Developer. Professional» в OTUS.
Нативная интеграция. Информация о продукте www.otus.ru
Android
• 10 открытых проектов, которые заставят вас полюбить Jetpack Compose
• В каких случаях использовать функцию derivedStateOf из Jetpack Compose
• Перформанс 2ГИС для Android.
• daniel.atitienei/get-current-user-location-in-jetpack-compose-using-clean-architecture-android-6683abca66c9">Get Current User Location in Jetpack Compose Using Clean Architecture
• Android Dependency Inversion — Avoid rewriting your app
• Understand Drawing Arc of A Path In Jetpack Compose Canvas
• Exercises in futility: Jetpack Compose Recomposition
В топе очередная медитативно-философская история о том, что рано или поздно (скорее рано) все, что вы делаете, превратится в технический долг и устареет. Что с этим делать автор в общем не говорит (с одной стороны - ну а что можно сделать? все так и есть, а с другой ладно, говорит - смириться с несовершенством и пилить как не в себя), но если у вас есть ностальгия по “старым добрым временам” Visual Basic 6 или Windows CE, то почитать в самый раз.
Разработка
• Вся моя 20-летняя карьера — это технический долг или устаревший код
• $ 20 млн в посевном раунде: Together — открытые генеративные модели ИИ
• Intrinsic Flowstate — платформа программирования промышленных роботов
• Как мы придумали и запустили совместные поездки в Яндекс Go
• tsecretdeveloper/steve-jobs-you-were-wrong-about-the-best-developers-60767c7286e3">Steve Jobs: You Were Wrong About The Best Developers
• Maybe That Code Isn’t “Clever”, Maybe You Aren’t!
Маркетинг и аналитика
• «Мою собаку может украсть голубь»: мы узнали страшное о собачниках, пока делали для них мобильное приложение
Кроссплатформа
• Six-Sided Puzzle: паззлы на Flutter
• Comparing M2 mini vs. M1 mini vs. Mac Pro
• Dart 3: A Comprehensive Guide to Records and Futures
#dev
Android
• Shady: галерея AGSL-шейдеров
• Разбор Android 13 для разработчиков
• KSP CODE GENERATOR: пишем код, который пишет код (по юнит тестам)
• Все видео Google I/O 2023
• Jetpack Compose: Expandable Text
• Picture in Picture Mode в android. Показываем видео в мини-окне
• Create Custom Jetpack Compose Animations
• Migrating to Jetpack Compose: a step by step journey
• Why you need ViewModels and why you don't
• Introducing the Android UI design hub
• Using Kover for Effective Code Coverage in Kotlin Projects
• maydin/technology-radar-2023-april-for-android-developers-60c73ad010eb">Technology Radar 2023 For Android Developers
• Network Connectivity Service using callbackFlow and Jetpack Compose
• Using PreviewParameters and providing Composables to Jetpack Compose Previews
#android
Apple опубликовала независимое исследование “небольших” разработчиков. Небольшие - это до 1 миллиона долларов или до 1 миллиона установок. Так вот, по данным Analysis Group 90% разработчиков в App Store являются такими, но примечательно другое - для тех, кто работал еще в 2020, доходы в 2022 в среднем выросли на 71%. То есть почти в два раза. Мелочь, а приятно ☺️
Разработка
• Доходы небольших разработчиков в App Store выросли на 71% за последние 2 года
• Stability AI выпускает Stable Animation SDK
• Как в Тинькофф эволюционировали процессы работы с аналитикой
• QA, автотесты и образование
• Как найти работу в IT?
• Что разработчики думают об ИИ — исследование Directus
• Как я адаптировал игру к экранам мобильных устройств
• Tips and tricks for exploring a new codebase
• Designing a Step Goal Live Activity
• Why an Engineering Manager Should Not Review Code
• Why We Over-Engineer Software (and How to Break the Habit)
Маркетинг и аналитика
• Приложение frfr взлетело в топ App Store в США
Кроссплатформа
• Четыре платформы — один код. Что такое Compose Multiplatform?
• Using Compose for a UI component in a SwiftUI screen
• Dart 3.0: An exciting step toward greatness!
• Flutter достиг 1 миллиона опубликованных приложений и усиливает поддержку веба
#dev
Тёмная сторона Android 13
Новый еженедельный дайджест - 79 материалов за прошедшие несколько рабочих дней. Прочитайте, поговорите, поставьте 👍 или 🤯, поделитесь, подпишитесь, поддержите. И присоединяйтесь к IT Insights, где новости и статьи про код, технологии и все самое интересное за пределом мобайла. Вот, например, у меня там был пост "Смерть метавселенных" - публицист Эд Зитрон называет три главных причины того, почему метавселенные не взлетели.
Видео и подкасты за неделю:
• (iOS Ru)
SwiftUI в Авиасейлс
• (iOS En)
7 Tips to Display Text Like a Pro in SwiftUI
• (iOS En)
SwiftUI Custom Tab Bar With Orientation Support
• (And Ru)
KSP CODE GENERATOR: пишем код, который пишет код (по юнит тестам)
• (And En)
Все видео Google I/O 2023
• (And En)
How to Build a Swipeable Image Slider in Jetpack Compose
• (And En)
How to Use the Google Play In-App Update API
• (Dev Ru)
Как в Тинькофф эволюционировали процессы работы с аналитикой
• (Dev Ru)
QA, автотесты и образование
• (Dev Ru)
Как найти работу в IT?
• (Mrk En)
No-Budget DIY Marketing for Indie Games
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
iOS
• Готовим наши приложения к Swift 6
• Swift async/await на примерах
• Реализуем Универсальные ссылки на iOS
• 5 essential tools and tips for every iOS developer
• mobile_44538/swiftgen-how-to-neatly-get-rid-of-magic-strings-in-ios-projects-952334f56f95">SwiftGen — How to neatly get rid of magic strings in iOS projects
• Flexible Continuous Integration for iOS
• Building Better iOS Apps with Swift Composable Architecture
• How to Build a Sokoban Puzzle Game in Swift
• Building a Room Scanning App with the RoomPlan API in iOS
#ios
Еще в тему каналов - официальный российский магазин приложений для Android, RuStore, запустил телеграм канал
Менее чем за год аудитория стора превысила 10 млн человек, а разработчики загрузили туда уже более 6 тысяч приложений. На канале команда стора:
• познакомит с платформой;
• расскажет новости стора и индустрии;
• анонсирует новые фичи;
• поможет с освоением консоли разработчика и т.д.
Подписывайтесь, чтобы точно ничего не пропустить
Новинки Google I/O 2023
• Что нового в Jetpack Compose
• Вышла альфа Compose for TV
• Что нового в Jetpack
• Вторая бета Android 14
• Машинное обучение на Android-устройстве
• Что нового в Google Play
• Что нового в Android Health
• Чат-бот в Android Studio
• Новый логотип Android Studio
• Watch Face Format для Wear OS
• Что нового в Android for Cars
Платформа: Android
Android
• ChatGPT vs TDD: я пишу юнит тесты, а он выдает код
• SpinDot: анимированные лоадеры для Android
• Собеседование в Android-команду Тинькофф
• «Внешняя» навигация в многомодульном проекте на Kotlin
• Как я получил сертификат Associate Android Developer
• Functional Error Handling in Kotlin
• 10kanake/screenshot-testing-composable-with-paparazzi-library-e766006d0705">ScreenShot Testing Composable with Paparazzi Library
• Media transcoding and editing, transform and roll out!
• How to implement Biometric Authentication in Android using Kotlin
• Statistically Rigorous Android Macrobenchmarks
• Blazing fast Composables
На Google I/O традиционно ничего не происходит. Из более или менее интересного - MusicLM для генерации музыки по текстовому описанию, Dart 3 для Flutter и не только, шутка про мессенджер, который работает на всех платформах. Впрочем, кейноут идет прямо сейчас, так что, может быть, не все еще потеряно. Завтра посмотрим.
Разработка
• Как Prime Video масштабировал службу мониторинга и снизил затраты на 90%
• Лучшие сайты с бесплатными иконками, которые я использую ежедневно
• $100 млн в Серии D: UVeye — автоматизированный осмотр автомобилей
• Meta открыла мультисенсорную модель ИИ, объединяющую шесть типов данных
• Бэкенд, мобилки, ремесло и гвозди
• Accessibility митап
• Правильно оцениваем задачи. Топовые ошибки программистов
• Podlodka #318: Backend Driven UI
• Slack ставит ИИ в центр пользовательского опыта
• Как правильно подходить к UI/UX дизайну
• Про тестирование мобильных приложений. Часть 3. Cквозное (UI, e2e) тестирование
• Как мы вывезли "Весёлого водовоза" в доставку за час: про код и не только
• How to do a UX accessibility evaluation?
• The UX Design Case Study That Got Me Hired
• 30 Practical Tips for Effective User Interface Design
Маркетинг
• Amazon Anywhere предлагает продажу товаров мобильным играм и приложениям
• Сколько зарабатывают ИИ-чатботы?
• Самые скачиваемые приложения в апреле 2023
• Апдейт по рекламе мобильных приложений: на каких площадках искать пользователей в 2023 году
• How Tinder drives over $1.6 billion in revenue
Кроссплатформа
• Проектируем Flutter-приложение «чистым» способом используя bloc
• One Codebase, Two Platforms: How I Migrated My Android App to KMP for iOS
• Announcing Dart 3
Нелинейная аппроксимация гниения кода
Новый еженедельный дайджест - снова 82 материала за прошедшие 6 дней. Прочитайте, поговорите, поставьте 👍 или 🤯, поделитесь, подпишитесь, поддержите. И присоединяйтесь к IT Insights, где новости и статьи про код, который правит миром. Вот, например, у меня там был пост "Mojo может стать крупнейшим достижением в области языков программирования" - снова про новый язык для ИИ.
Видео и подкасты за неделю:
• (iOS En)
SwiftUI Animated Sticky Header
• (iOS En)
dump() in Swift
• (iOS En)
Learning SwiftUI, when you already know UIKit – Mixing SwiftUI and UIKit
• (iOS En)
Discover how @MainActor works
• (And Ru)
ChatGPT vs TDD: я пишу юнит тесты, а он выдает код
• (And Ru)
Собеседование в Android-команду Тинькофф
• (And En)
Now in Android: 82 - Google I/O, Spatial Audio, automatic update prompts for crashing apps and more!
• (And En)
Custom Layouts In Jetpack Compose - Crash Course
• (And En)
Все видео KotlinConf'23
• (Crs En)
Food delivery app made with Flutter
• (Dev En)
Бэкенд, мобилки, ремесло и гвозди
• (Dev En)
Accessibility митап
• (Dev En)
Правильно оцениваем задачи. Топовые ошибки программистов
• (Dev En)
Podlodka #318: Backend Driven UI
• (Dsg En)
Ultimate Guide to Midjourney V5 for UI Designers
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
Поможем принять выручку со сторов и рекламных сетей!
Возникают трудности с монетизацией в App Store, Google Play и рекламных сетях? Столкнулись с тем, что нужно открывать иностранное юр.лицо? Мы вам поможем!
Финтех стартап Combo.Cards запустил услугу по приёму выручки из App Store, Google Play и рекламных сетей.
Выводите деньги за монетизацию в USDT без проблем! А ещё:
🔸Выпускаем международные корпоративные карты для оплаты бизнес-расходов
🔸Оперативно отвечаем
🔸Не берём скрытых комиссий
🔸Дадим в аренду иностранную компанию под ваши нужды
Combo.Cards доверяют больше 1000 клиентов, присоединяйтесь и получайте прибыль от монетизации в удобном формате!
По вопросам подключения пишите @tonybuter
Доходы приложений 2023
Data.ai выпустила отчет State of App Revenue 2023, в котором рассматривает вопросы рекламы и покупок в приложениях.
1. В 2022 году на неигровые приложения пришлось около $220 млрд (65%) из 336 млрд долларов, потраченных на мобильную рекламу. Но если отойти от больших соцсетей и стримингов, то 70% расходов на мобильную рекламу пришлось на игры.
2. Большая часть доходов мобильной рекламы приходится на Северную Америку - 46%.
2. Половина из $167 млрд, потраченных потребителями на мобильные приложения в 2022 году, пришлась на iOS. На Google Play пришлось 27% расходов на магазины приложений, а на сторонние магазины в Китае (где Google Play недоступен) - оставшиеся 23%.
3. Неигровые приложения получили 71% дохода от подписок.
4. Почти половина всех доходов от IAP в играх в США приходится на IAP стоимостью менее $10. Однако значительная часть доходов все еще поступает от IAP с самой высокой ценой - более $100.
И что: давно уже монетизация и маркетинг стали самой сложной частью мобильного бизнеса. Нужно все больше времени уделять тонким настройкам и вовлечению пользователей именно в покупки.
iOS
• Exploring the Composable Architecture Framework
• SwiftUI Picker, Toggle, Slider and Stepper Fully Explained
• katramesh91/how-to-build-uikit-like-mvvm-c-coordinator-hierarchy-with-swiftui-d758b035f91a">How to build UIKit like MVVM-C Coordinator hierarchy with SwiftUI
• GetInRhythm/closures-vs-combine-vs-async-await-993eb1da4d44">Closures Vs. Combine Vs. Async Await
#ios
Грант до 500 000 ₽ на облачные сервисы #CloudMTS
Можно применить на:
– Готовые мощности в публичном облаке и простое управление виртуальными машинами
– Сервисы для управления кластерами K8s и брокером сообщений Apache Kafka в облаке
– Хранение данных нужного объема и формата с доступом через интернет
– Сервисы управления сетью в облаке
Воплощайте крутые цифровые проекты в облаке #CloudMTS 💥
Подробнее об условиях Акции и о сервисах, доступных в рамках Акции, — на сайте: https://bit.ly/3NbdTdR
Оставляйте заявку, получите подтверждение, и команда #CloudMTS рассчитает Грант под ваш проект.
Реклама. Рекламодатель ПАО «МТС», ИНН 7740000076
iOS
• Поток данных SwiftUI с примерами
• SwiftUI в Авиасейлс
• Z Combinator for Hacker News: клиент на SwiftUI
• uladzislau.komar/%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D1%8B-%D0%B2-swift-actors-in-swift-35d6618b6d02">Акторы в Swift
• Flexible Continuous Integration for iOS
• Attempting to connect a tvOS app to an iOS app with DeviceDiscoveryUI
• Parallax header effect in SwiftUI using CoordinateSpace
• Spotlight on: Passkeys
• Statically-typed JSON payload in Swift
• Learning SwiftUI, when you already know UIKit
#ios
Приложение frfr взлетело в топ App Store в США
На этой неделе на вершину чартов, пусть и на короткий миг, поднялось новое приложение.
1. frfr (строчными буквами, одно «fr» вероятно означает «for real», а второе — «friends») — это приложение для анонимного обмена голосовыми сообщениями.
2. Его простая иконка, основная суть, скриншоты и общий тон очень напоминают Gas. Помните Gas? Приложение, которое в прошлом году штурмом взяло топ-чарты, платформа для анонимного общения, предназначенная для тинейджеров. Gas набрал миллионы загрузок, а затем был продан Discord и исчез почти так же быстро, как и появился.
3. Приложение frfr официально запустилось в апреле, и до начала мая, когда количество загрузок начало расти, оно не добилось никакого реального успеха. Но в мае сначала немного, а затем все быстрее frfr достиг в субботу 6 мая пика в 170 тысяч установок,
4. По состоянию на среду, frfr уже имел 729 тысяч загрузок в App Store и Google Play.
И что: как я писал еще, кажется, про Gas - анонимность + подростки = ядреный рецепт
. Сообщения были, аудио есть, не хватает анонимных картинок 😀
📲 Тинькофф проведет Android-митап в Петербурге
Встреча пройдет 18 мая в особняке «Пальма». Ребята расскажут, как адаптировать ваше Android-приложение для поддержки устройств с большими экранами, и разберут возможности SDK. В конце митапа выступит Кирилл Розов с докладом про запуск задач в фоне.
Не забудьте зарегистрироваться и позвать с собой коллег.
🗓 До встречи 18 мая в Петербурге на IT’s Tinkoff Mobile Meetup!
Android
• Compose Rich Editor: редактор текста для Jetpack Compose и Compose Multiplatform
• I/O
Итоги конференци: искусственный интеллект и новые гаджеты
• I/O
Машинное обучение на Android-устройстве
• I/O
Google выпускает Compose for TV
• I/O
Android Studio на I/O 23: разговорный чат-бот
• I/O
Google I/O 2023. Что нового в Kotlin для Android?
• I/O
Что нового в Jetpack Compose
• I/O
Вышла альфа Compose for TV
• I/O
Что нового в Jetpack
• I/O
Вторая бета Android 14
• I/O
Что нового в Google Play
• I/O
Что нового в Android Health
• I/O
Новый логотип Android Studio
• I/O
Watch Face Format для Wear OS
• I/O
Что нового в Android for Cars
• JavaCard как второй фактор аутентификации в Android-приложении
• Как Kinect только Pinect
• I want to run any number of Android UI tests on each PR. Your actions?
• mmbialas/10-open-source-projects-thatll-make-you-excited-about-using-jetpack-compose-80c40550c32b">10 Open-Source Projects That’ll Make You Excited About Using Jetpack Compose
• Modularizing Our Driver App For Android
• Goodbye to Activity Lifecycle and Hello to Compose Lifecycle
• agarwalayushi568/from-data-to-ui-jetpack-compose-phases-a1281a1913e5">From Data to UI : Jetpack Compose Phases
#Android
Ладно, вроде основные темы I/O более менее понятны (конечно, AI, кто бы сомневался), самое время для традиционного голосования - понравилась вам конференция или нет?
Разработка
• System Design Blueprint: The Ultimate Guide
Маркетинг и аналитика
• Мобильная аналитика в hh.ru и не только
• How are video games tricking you?
Кроссплатформа
• Анонс Dart 3
• Mobile multiplatform development at McDonald’s
• First Impressions Integrating KMM Into a Brownfield Project
• 8 Useful Tips for Better UX in Flutter
• sajjadmakman/flutter-4-0-new-features-33bdd9b8c004">Flutter 4.0 New Features
Недавно Telegram анонсировал шаринг папок и мы с пацанами собрались и поделились ресурсами, которые ведем и читаем:
🧑💻 Топовые ресуры по iOS-разработке
Каждый из этих каналов и чатов вносит свой вклад в продвижение и популяризацию iOS, и здесь вы можете найти ответы на свои вопросы или узнать что-то новое.
Здесь собраны авторские источники, лучшие сообщества и можно встретить даже авторов книг!
Вы можете оставить самое важное для себя или отфильтровать список позже.
Посмотреть список и выбрать себе:
🔗 Всё, что нужно для разработки в одном списке.
В Android Studio будет ИИ-бот
Начинаем изучать новинки I/O 23 и сразу нововведения в Android Studio:
• Android Studio Bot - разговорный чат-бот встроят прямо в IDE. Поможет генерировать код, можно будет задавать вопросы о разработке или исправлять ошибки.
• Live Edit - показывает изменения при внесении обновлений в пользовательский интерфейс Compose.
• Kotlin DSL и Version Catalogs, помогающие вам использовать преимущества более современного синтаксиса и соглашений при настройке сборки.
• Языковые предпочтения для каждого приложения.
• Обновление Build Analyzer, который предоставляет сводку времени, потраченного на загрузку зависимостей, и подробный обзор загрузок по репозиториям
• Новый Android SDK Upgrade Assistant.
• Виртуальные устройства Google Pixel Fold и Google Pixel Tablet.
• Эмулятор Wear OS 4 Developer Preview.
• Самое ценное напоследок - у Android Studio новый логотип!
И многое другое . Вы можете загрузить Android Studio Hedgehog Canary или Android Studio Giraffe Beta уже сегодня, чтобы включить новые функции в свой рабочий процесс.
iOS
• Atoms: управление состояниями в Swift
• Как стать iOS-разработчиком?
• Using TabularData to Dump Model Data
• Implicit self for weak self captures
• Instagram like Animated Searchbar in SwiftUI
• Exploring Circular Paths: How to Create a Circular Text View in SwiftUI
• Universal Links implementation on iOS
Amazon Anywhere предлагает продажу товаров мобильным играм и приложениям
Так называемый "магазин всего" стремится попасть "куда угодно".
1. Вчера Amazon объявил о запуске Amazon Anywhere - иммерсивного торгового сервиса, который позволит встраивать продажу физических товаров, продаваемые гигантом электронной коммерции, в видеоигры, виртуальные миры и мобильные приложения.
2. Услуга дебютирует в Peridot, новой AR-игре от Niantic, создателей Pokèmon Go. Игроки, связавшие свой аккаунт на Amazon с игрой, могут прямо в игре просматривать и приобретать брендированные товары, такие как одежда, аксессуары для телефонов и подушки с изображением существ из игры.
И что: для Amazon это возможность предоставить покупателям новые способы обнаружения товаров в новых местах, помимо сайта Amazon.com. Для разработчиков - новый поток доходов и усиление вовлеченности за счет брендированных товаров.
Ваша ближайшая цель — работать за рубежом или прокачать английский для карьерных возможностей?
🇬🇧 Приглашаем на бесплатный вебинар «Как успешно пройти собеседование в иностранную IT-компанию».
Вы узнаете:
— Стратегии иностранных компаний по подбору персонала. Мы перечислим компетенции и расскажем примеры
— Виды собеседования при устройстве на работу в иностранную компанию
— Как получить реальный отклик рекрутера
— Про улучшение резюме/CV и личного бренда
— Где пройти тестовое собеседование на английском
Спикеры: IT-рекрутер из США, IT-специалисты европейских компаний, преподаватели английского и преподаватели нашего курса.
📆 Когда: 11 мая, 19:00 мск
☑️ Бесплатная регистрация
Записывайтесь на вебинар прямо сейчас и вперёд к level up 🚀
В общем, по итогу вчерашнего обсуждения (спасибо всем, кто поучаствовал ☺️) решил попробовать выпускать ежедневные подборки в трех постах. Один про iOS, второй про Android, третий про общие вопросы и маркетинг. Так что на следующей неделе опробую формат (крепитесь!) и потом выберем, что лучше.
Разработка
• Гниение кода — это результат процессов
• Самыми «вредными» коллегами россияне назвали бухгалтеров и программистов
• Гильдия сценаристов Америки бастует против использования ИИ
• 100+ ChatGPT Prompts for Software Developers
Маркетинг
• Plexamp теперь работает с ChatGPT для создания плейлистов
iOS
• Queryable: асинхронный показ View в SwiftUI
• Из дальнобойщика — в IT: приключение, где нужно быстро учиться и работать без выходных
• The power of overlays in SwiftUI
• Double Protocol Conformance
• Discover how @MainActor works
• Building Better iOS Apps with Swift Composable Architecture
• Creating Reusable Views with Custom Flow Layout in Swift
Android
• How We Accidentally DoS-ed Ourselves with Kotlin Coroutines
• Dispatchers in Kotlin Coroutines
• Exploring Ktor: An Alternative To Retrofit For HTTP Requests In Android
• Fancy animated UI with AGSL shaders in Jetpack Compose
• How to optimize your Android app for large screens (And what NOT to do!)
Кроссплатформа
• Эй, разработчики Flutter, я слышал, что вам нравятся модификаторы классов
• An Opinionated View on KMM
• Flutter: How to prevent Screenshots and Screen Recording in the Flutter App iOS & Android
⚡️Пройдите тест по Swift и проверьте свои знания.
Ответьте на 20 вопросов и узнайте, насколько вы готовы к обучению на курсе — «iOS Developer. Professional» от OTUS. Курс доступен в рассрочку!
👉🏻 ПРОЙТИ ТЕСТ — https://otus.pw/wGNzb/
❗️На курсе вы освоите ключевые особенности Swift 5, сможете определять целесообразность применения паттернов и погрузитесь в нюансы использования Rx.
🎁 Сможете пройти успешно тест — получите доступ к 2 открытым урокам курса!
Реклама. Информация о рекламодателе на сайте www.otus.ru